@agent-native/scheduling 0.2.1 → 0.2.2-nightly-20260927013707

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 (279) hide show
  1. package/dist/actions/_helpers.d.ts +0 -13
  2. package/dist/actions/_helpers.d.ts.map +1 -1
  3. package/dist/actions/_helpers.js +0 -16
  4. package/dist/actions/_helpers.js.map +1 -1
  5. package/dist/actions/create-team.js +0 -1
  6. package/dist/actions/create-team.js.map +1 -1
  7. package/dist/actions/list-bookings.js +0 -4
  8. package/dist/actions/list-bookings.js.map +1 -1
  9. package/dist/actions/refresh-busy-times.js +0 -1
  10. package/dist/actions/refresh-busy-times.js.map +1 -1
  11. package/dist/actions/revoke-private-link.js +0 -2
  12. package/dist/actions/revoke-private-link.js.map +1 -1
  13. package/dist/actions/update-profile.js +0 -5
  14. package/dist/actions/update-profile.js.map +1 -1
  15. package/dist/core/buffers.d.ts +0 -18
  16. package/dist/core/buffers.d.ts.map +1 -1
  17. package/dist/core/buffers.js +0 -6
  18. package/dist/core/buffers.js.map +1 -1
  19. package/dist/core/conflicts.d.ts +0 -4
  20. package/dist/core/conflicts.d.ts.map +1 -1
  21. package/dist/core/conflicts.js +0 -1
  22. package/dist/core/conflicts.js.map +1 -1
  23. package/dist/core/limits.d.ts +0 -8
  24. package/dist/core/limits.d.ts.map +1 -1
  25. package/dist/core/limits.js.map +1 -1
  26. package/dist/core/round-robin.d.ts +0 -17
  27. package/dist/core/round-robin.d.ts.map +1 -1
  28. package/dist/core/round-robin.js.map +1 -1
  29. package/dist/core/rrule.d.ts.map +1 -1
  30. package/dist/core/rrule.js +0 -7
  31. package/dist/core/rrule.js.map +1 -1
  32. package/dist/core/rules.d.ts +0 -17
  33. package/dist/core/rules.d.ts.map +1 -1
  34. package/dist/core/rules.js +0 -8
  35. package/dist/core/rules.js.map +1 -1
  36. package/dist/core/slots.d.ts +0 -31
  37. package/dist/core/slots.d.ts.map +1 -1
  38. package/dist/core/slots.js +0 -9
  39. package/dist/core/slots.js.map +1 -1
  40. package/dist/core/time.d.ts +0 -24
  41. package/dist/core/time.d.ts.map +1 -1
  42. package/dist/core/time.js +0 -37
  43. package/dist/core/time.js.map +1 -1
  44. package/dist/index.d.ts +0 -10
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +0 -10
  47. package/dist/index.js.map +1 -1
  48. package/dist/manifest.d.ts +0 -9
  49. package/dist/manifest.d.ts.map +1 -1
  50. package/dist/manifest.js +0 -18
  51. package/dist/manifest.js.map +1 -1
  52. package/dist/react/components/SlotPicker.d.ts +0 -8
  53. package/dist/react/components/SlotPicker.d.ts.map +1 -1
  54. package/dist/react/components/SlotPicker.js.map +1 -1
  55. package/dist/react/components/TimezoneSelect.d.ts.map +1 -1
  56. package/dist/react/components/TimezoneSelect.js +0 -2
  57. package/dist/react/components/TimezoneSelect.js.map +1 -1
  58. package/dist/react/components/booking-links/AvailabilityEditor.d.ts +0 -4
  59. package/dist/react/components/booking-links/AvailabilityEditor.d.ts.map +1 -1
  60. package/dist/react/components/booking-links/AvailabilityEditor.js +0 -15
  61. package/dist/react/components/booking-links/AvailabilityEditor.js.map +1 -1
  62. package/dist/react/components/booking-links/BookingLinkCreateDialog.d.ts +0 -6
  63. package/dist/react/components/booking-links/BookingLinkCreateDialog.d.ts.map +1 -1
  64. package/dist/react/components/booking-links/BookingLinkCreateDialog.js +0 -16
  65. package/dist/react/components/booking-links/BookingLinkCreateDialog.js.map +1 -1
  66. package/dist/react/components/booking-links/ConferencingSelector.d.ts +0 -2
  67. package/dist/react/components/booking-links/ConferencingSelector.d.ts.map +1 -1
  68. package/dist/react/components/booking-links/ConferencingSelector.js +0 -24
  69. package/dist/react/components/booking-links/ConferencingSelector.js.map +1 -1
  70. package/dist/react/components/booking-links/CustomFieldsEditor.d.ts +0 -1
  71. package/dist/react/components/booking-links/CustomFieldsEditor.d.ts.map +1 -1
  72. package/dist/react/components/booking-links/CustomFieldsEditor.js +0 -14
  73. package/dist/react/components/booking-links/CustomFieldsEditor.js.map +1 -1
  74. package/dist/react/components/booking-links/DurationPicker.d.ts +0 -1
  75. package/dist/react/components/booking-links/DurationPicker.d.ts.map +1 -1
  76. package/dist/react/components/booking-links/DurationPicker.js +1 -11
  77. package/dist/react/components/booking-links/DurationPicker.js.map +1 -1
  78. package/dist/react/components/booking-links/SlugEditor.d.ts +0 -3
  79. package/dist/react/components/booking-links/SlugEditor.d.ts.map +1 -1
  80. package/dist/react/components/booking-links/SlugEditor.js +0 -11
  81. package/dist/react/components/booking-links/SlugEditor.js.map +1 -1
  82. package/dist/react/components/booking-links/index.d.ts +0 -9
  83. package/dist/react/components/booking-links/index.d.ts.map +1 -1
  84. package/dist/react/components/booking-links/index.js +0 -9
  85. package/dist/react/components/booking-links/index.js.map +1 -1
  86. package/dist/react/components/index.d.ts +0 -10
  87. package/dist/react/components/index.d.ts.map +1 -1
  88. package/dist/react/components/index.js +0 -10
  89. package/dist/react/components/index.js.map +1 -1
  90. package/dist/react/hooks/useBookingFlow.d.ts.map +1 -1
  91. package/dist/react/hooks/useBookingFlow.js +0 -10
  92. package/dist/react/hooks/useBookingFlow.js.map +1 -1
  93. package/dist/react/hooks/useEventType.d.ts.map +1 -1
  94. package/dist/react/hooks/useEventType.js +0 -4
  95. package/dist/react/hooks/useEventType.js.map +1 -1
  96. package/dist/react/hooks/useReschedule.d.ts.map +1 -1
  97. package/dist/react/hooks/useReschedule.js +0 -4
  98. package/dist/react/hooks/useReschedule.js.map +1 -1
  99. package/dist/react/hooks/useSlots.d.ts +0 -2
  100. package/dist/react/hooks/useSlots.d.ts.map +1 -1
  101. package/dist/react/hooks/useSlots.js +0 -8
  102. package/dist/react/hooks/useSlots.js.map +1 -1
  103. package/dist/react/hooks/useTimezone.d.ts.map +1 -1
  104. package/dist/react/hooks/useTimezone.js +0 -4
  105. package/dist/react/hooks/useTimezone.js.map +1 -1
  106. package/dist/react/index.d.ts +0 -5
  107. package/dist/react/index.d.ts.map +1 -1
  108. package/dist/react/index.js +0 -5
  109. package/dist/react/index.js.map +1 -1
  110. package/dist/schema/bookings.d.ts +0 -7
  111. package/dist/schema/bookings.d.ts.map +1 -1
  112. package/dist/schema/bookings.js +0 -29
  113. package/dist/schema/bookings.js.map +1 -1
  114. package/dist/schema/calendar-cache.d.ts.map +1 -1
  115. package/dist/schema/calendar-cache.js +0 -11
  116. package/dist/schema/calendar-cache.js.map +1 -1
  117. package/dist/schema/credentials.d.ts +0 -8
  118. package/dist/schema/credentials.d.ts.map +1 -1
  119. package/dist/schema/credentials.js +0 -28
  120. package/dist/schema/credentials.js.map +1 -1
  121. package/dist/schema/event-types.d.ts +0 -10
  122. package/dist/schema/event-types.d.ts.map +1 -1
  123. package/dist/schema/event-types.js +0 -42
  124. package/dist/schema/event-types.js.map +1 -1
  125. package/dist/schema/index.d.ts +0 -11
  126. package/dist/schema/index.d.ts.map +1 -1
  127. package/dist/schema/index.js +0 -11
  128. package/dist/schema/index.js.map +1 -1
  129. package/dist/schema/routing-forms.d.ts.map +1 -1
  130. package/dist/schema/routing-forms.js +0 -17
  131. package/dist/schema/routing-forms.js.map +1 -1
  132. package/dist/schema/schedules.d.ts +0 -12
  133. package/dist/schema/schedules.d.ts.map +1 -1
  134. package/dist/schema/schedules.js +0 -25
  135. package/dist/schema/schedules.js.map +1 -1
  136. package/dist/schema/teams.d.ts.map +1 -1
  137. package/dist/schema/teams.js +0 -7
  138. package/dist/schema/teams.js.map +1 -1
  139. package/dist/schema/workflows.d.ts +0 -7
  140. package/dist/schema/workflows.d.ts.map +1 -1
  141. package/dist/schema/workflows.js +0 -19
  142. package/dist/schema/workflows.js.map +1 -1
  143. package/dist/server/availability-engine.d.ts +0 -12
  144. package/dist/server/availability-engine.d.ts.map +1 -1
  145. package/dist/server/availability-engine.js +0 -20
  146. package/dist/server/availability-engine.js.map +1 -1
  147. package/dist/server/booking-service.d.ts +0 -14
  148. package/dist/server/booking-service.d.ts.map +1 -1
  149. package/dist/server/booking-service.js +0 -8
  150. package/dist/server/booking-service.js.map +1 -1
  151. package/dist/server/bookings-repo.d.ts +0 -7
  152. package/dist/server/bookings-repo.d.ts.map +1 -1
  153. package/dist/server/bookings-repo.js +0 -3
  154. package/dist/server/bookings-repo.js.map +1 -1
  155. package/dist/server/context.d.ts +0 -16
  156. package/dist/server/context.d.ts.map +1 -1
  157. package/dist/server/context.js.map +1 -1
  158. package/dist/server/db-types.d.ts +0 -11
  159. package/dist/server/db-types.d.ts.map +1 -1
  160. package/dist/server/event-types-repo.d.ts +0 -10
  161. package/dist/server/event-types-repo.d.ts.map +1 -1
  162. package/dist/server/event-types-repo.js +0 -21
  163. package/dist/server/event-types-repo.js.map +1 -1
  164. package/dist/server/hooks.d.ts.map +1 -1
  165. package/dist/server/hooks.js +0 -11
  166. package/dist/server/hooks.js.map +1 -1
  167. package/dist/server/ics.d.ts +0 -7
  168. package/dist/server/ics.d.ts.map +1 -1
  169. package/dist/server/ics.js.map +1 -1
  170. package/dist/server/providers/builtin-video.d.ts +0 -5
  171. package/dist/server/providers/builtin-video.d.ts.map +1 -1
  172. package/dist/server/providers/builtin-video.js.map +1 -1
  173. package/dist/server/providers/google-calendar.d.ts +0 -3
  174. package/dist/server/providers/google-calendar.d.ts.map +1 -1
  175. package/dist/server/providers/google-calendar.js +0 -2
  176. package/dist/server/providers/google-calendar.js.map +1 -1
  177. package/dist/server/providers/google-meet.d.ts +0 -7
  178. package/dist/server/providers/google-meet.d.ts.map +1 -1
  179. package/dist/server/providers/google-meet.js.map +1 -1
  180. package/dist/server/providers/office365.d.ts +0 -6
  181. package/dist/server/providers/office365.d.ts.map +1 -1
  182. package/dist/server/providers/office365.js.map +1 -1
  183. package/dist/server/providers/registry.d.ts +0 -4
  184. package/dist/server/providers/registry.d.ts.map +1 -1
  185. package/dist/server/providers/registry.js.map +1 -1
  186. package/dist/server/providers/teams.d.ts +0 -6
  187. package/dist/server/providers/teams.d.ts.map +1 -1
  188. package/dist/server/providers/teams.js +0 -2
  189. package/dist/server/providers/teams.js.map +1 -1
  190. package/dist/server/providers/types.d.ts +0 -27
  191. package/dist/server/providers/types.d.ts.map +1 -1
  192. package/dist/server/providers/zoom.d.ts +0 -19
  193. package/dist/server/providers/zoom.d.ts.map +1 -1
  194. package/dist/server/providers/zoom.js +0 -2
  195. package/dist/server/providers/zoom.js.map +1 -1
  196. package/dist/server/schedules-repo.d.ts.map +1 -1
  197. package/dist/server/schedules-repo.js +0 -4
  198. package/dist/server/schedules-repo.js.map +1 -1
  199. package/dist/server/video-oauth-state.d.ts +0 -5
  200. package/dist/server/video-oauth-state.d.ts.map +1 -1
  201. package/dist/server/video-oauth-state.js +1 -9
  202. package/dist/server/video-oauth-state.js.map +1 -1
  203. package/dist/server/video-oauth.d.ts +0 -4
  204. package/dist/server/video-oauth.d.ts.map +1 -1
  205. package/dist/server/video-oauth.js +0 -23
  206. package/dist/server/video-oauth.js.map +1 -1
  207. package/dist/shared/index.d.ts +0 -37
  208. package/dist/shared/index.d.ts.map +1 -1
  209. package/dist/shared/index.js +0 -4
  210. package/dist/shared/index.js.map +1 -1
  211. package/package.json +4 -4
  212. package/src/actions/_helpers.ts +0 -16
  213. package/src/actions/booking-authz.spec.ts +0 -6
  214. package/src/actions/create-team.ts +0 -1
  215. package/src/actions/event-type-authz.spec.ts +0 -11
  216. package/src/actions/list-bookings.ts +0 -4
  217. package/src/actions/refresh-busy-times.ts +0 -1
  218. package/src/actions/revoke-private-link.ts +0 -2
  219. package/src/actions/update-profile.ts +0 -5
  220. package/src/core/buffers.ts +0 -18
  221. package/src/core/conflicts.ts +0 -4
  222. package/src/core/limits.ts +0 -8
  223. package/src/core/round-robin.test.ts +0 -1
  224. package/src/core/round-robin.ts +0 -17
  225. package/src/core/rrule.ts +0 -7
  226. package/src/core/rules.ts +0 -17
  227. package/src/core/slots.test.ts +1 -11
  228. package/src/core/slots.ts +0 -40
  229. package/src/core/time.ts +0 -37
  230. package/src/index.ts +0 -11
  231. package/src/manifest.ts +0 -19
  232. package/src/react/components/SlotPicker.tsx +0 -8
  233. package/src/react/components/TimezoneSelect.tsx +0 -2
  234. package/src/react/components/_shadcn-shims.d.ts +0 -35
  235. package/src/react/components/booking-links/AvailabilityEditor.tsx +0 -15
  236. package/src/react/components/booking-links/BookingLinkCreateDialog.tsx +0 -22
  237. package/src/react/components/booking-links/ConferencingSelector.tsx +0 -26
  238. package/src/react/components/booking-links/CustomFieldsEditor.tsx +0 -15
  239. package/src/react/components/booking-links/DurationPicker.tsx +1 -12
  240. package/src/react/components/booking-links/SlugEditor.tsx +0 -14
  241. package/src/react/components/booking-links/index.ts +0 -9
  242. package/src/react/components/index.ts +0 -10
  243. package/src/react/hooks/useBookingFlow.ts +0 -10
  244. package/src/react/hooks/useEventType.ts +0 -4
  245. package/src/react/hooks/useReschedule.ts +0 -4
  246. package/src/react/hooks/useSlots.ts +0 -10
  247. package/src/react/hooks/useTimezone.ts +0 -4
  248. package/src/react/index.ts +0 -5
  249. package/src/schema/bookings.ts +0 -29
  250. package/src/schema/calendar-cache.ts +0 -11
  251. package/src/schema/credentials.ts +0 -28
  252. package/src/schema/event-types.ts +0 -42
  253. package/src/schema/index.ts +0 -11
  254. package/src/schema/routing-forms.ts +0 -17
  255. package/src/schema/schedules.ts +0 -25
  256. package/src/schema/teams.ts +0 -7
  257. package/src/schema/workflows.ts +0 -19
  258. package/src/server/availability-engine.test.ts +0 -1
  259. package/src/server/availability-engine.ts +0 -22
  260. package/src/server/booking-service.spec.ts +0 -15
  261. package/src/server/booking-service.ts +0 -22
  262. package/src/server/bookings-repo.ts +0 -10
  263. package/src/server/context.ts +0 -16
  264. package/src/server/db-types.ts +0 -11
  265. package/src/server/event-types-repo.ts +0 -31
  266. package/src/server/hooks.ts +0 -11
  267. package/src/server/ics.ts +0 -7
  268. package/src/server/providers/builtin-video.ts +0 -5
  269. package/src/server/providers/google-calendar.ts +0 -5
  270. package/src/server/providers/google-meet.ts +0 -7
  271. package/src/server/providers/office365.ts +0 -6
  272. package/src/server/providers/registry.ts +0 -4
  273. package/src/server/providers/teams.ts +0 -8
  274. package/src/server/providers/types.ts +0 -27
  275. package/src/server/providers/zoom.ts +0 -21
  276. package/src/server/schedules-repo.ts +0 -4
  277. package/src/server/video-oauth-state.ts +1 -10
  278. package/src/server/video-oauth.ts +0 -23
  279. package/src/shared/index.ts +0 -38
@@ -1,22 +1,9 @@
1
1
  export declare function currentUserEmail(): string;
2
2
  export declare function currentUserEmailOrNull(): string | null;
3
- /**
4
- * Verify the current user is the host of a booking. Throws "Not authorized to
5
- * <action>" if not. Mirrors the `isHost` half of the `isHost || hasToken`
6
- * guard used by cancel-booking/reschedule-booking, for booking actions that
7
- * don't accept a public capability token (attendee/note/status mutations —
8
- * host identity is the only legitimate caller for these).
9
- */
10
3
  export declare function assertBookingHost(booking: {
11
4
  hostEmail: string;
12
5
  }, action: string): void;
13
6
  export declare function currentOrgId(): string | undefined;
14
7
  export declare function assertTeamAdmin(teamId: string): Promise<void>;
15
- /**
16
- * Verify the current user is a member of the team (any role). Read-only
17
- * team resource listings should gate on this so that team IDs cannot be
18
- * enumerated by guessing. Throws "Not authenticated" if there is no
19
- * current user, and "Forbidden" if the user is not a member.
20
- */
21
8
  export declare function assertTeamMember(teamId: string): Promise<void>;
22
9
  //# sourceMappingURL=_helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../src/actions/_helpers.ts"],"names":[],"mappings":"AAOA,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAEtD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC9B,MAAM,EAAE,MAAM,GACb,IAAI,CAMN;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnE;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpE"}
1
+ {"version":3,"file":"_helpers.d.ts","sourceRoot":"","sources":["../../src/actions/_helpers.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,IAAI,MAAM,CAIzC;AAED,wBAAgB,sBAAsB,IAAI,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAC9B,MAAM,EAAE,MAAM,GACb,IAAI,CAMN;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBnE;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpE"}
@@ -1,6 +1,3 @@
1
- /**
2
- * Shared helpers for actions in this package.
3
- */
4
1
  import { and, eq } from "drizzle-orm";
5
2
  import { getSchedulingContext } from "../server/context.js";
6
3
  export function currentUserEmail() {
@@ -12,13 +9,6 @@ export function currentUserEmail() {
12
9
  export function currentUserEmailOrNull() {
13
10
  return getSchedulingContext().getCurrentUserEmail() ?? null;
14
11
  }
15
- /**
16
- * Verify the current user is the host of a booking. Throws "Not authorized to
17
- * <action>" if not. Mirrors the `isHost` half of the `isHost || hasToken`
18
- * guard used by cancel-booking/reschedule-booking, for booking actions that
19
- * don't accept a public capability token (attendee/note/status mutations —
20
- * host identity is the only legitimate caller for these).
21
- */
22
12
  export function assertBookingHost(booking, action) {
23
13
  const userEmail = currentUserEmailOrNull();
24
14
  const isHost = !!userEmail && userEmail === booking.hostEmail;
@@ -42,12 +32,6 @@ export async function assertTeamAdmin(teamId) {
42
32
  throw new Error("Forbidden: team owner or admin required");
43
33
  }
44
34
  }
45
- /**
46
- * Verify the current user is a member of the team (any role). Read-only
47
- * team resource listings should gate on this so that team IDs cannot be
48
- * enumerated by guessing. Throws "Not authenticated" if there is no
49
- * current user, and "Forbidden" if the user is not a member.
50
- */
51
35
  export async function assertTeamMember(teamId) {
52
36
  const { getDb, schema } = getSchedulingContext();
53
37
  const email = currentUserEmail();
@@ -1 +1 @@
1
- {"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../src/actions/_helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAC3D,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC;AAC9D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA8B,EAC9B,MAAc;IAEd,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,oBAAoB,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,KAAK,EAAE;SACvB,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SACxB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CACxC,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC3B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc;IACnD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,KAAK,EAAE;SACvB,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SACxB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CACxC,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"_helpers.js","sourceRoot":"","sources":["../../src/actions/_helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,MAAM,UAAU,gBAAgB;IAC9B,MAAM,KAAK,GAAG,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,CAAC;IAC3D,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACjD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,OAA8B,EAC9B,MAAc;IAEd,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,SAAS,CAAC;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,oBAAoB,EAAE,CAAC,eAAe,EAAE,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,KAAK,EAAE;SACvB,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SACxB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CACxC,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC3B,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAc;IACnD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,KAAK,EAAE;SACvB,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;SACxB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EACrC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CACxC,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
@@ -28,7 +28,6 @@ export default defineAction({
28
28
  ownerEmail,
29
29
  orgId: currentOrgId() ?? null,
30
30
  });
31
- // Owner is automatically a member with owner role
32
31
  await getDb().insert(schema.teamMembers).values({
33
32
  id: nanoid(),
34
33
  teamId: id,
@@ -1 +1 @@
1
- {"version":3,"file":"create-team.js","sourceRoot":"","sources":["../../src/actions/create-team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE/D,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,mBAAmB;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC3B,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACtC,MAAM,KAAK,EAAE;aACV,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;aACpB,MAAM,CAAC;YACN,EAAE;YACF,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;YACrB,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,UAAU;YACV,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI;SAC9B,CAAC,CAAC;QACL,kDAAkD;QAClD,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAC9C,EAAE,EAAE,MAAM,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAC5D,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"create-team.js","sourceRoot":"","sources":["../../src/actions/create-team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE/D,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,mBAAmB;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC3B,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACtC,MAAM,KAAK,EAAE;aACV,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;aACpB,MAAM,CAAC;YACN,EAAE;YACF,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI;YACrB,YAAY,EAAE,KAAK;YACnB,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;YACd,UAAU;YACV,KAAK,EAAE,YAAY,EAAE,IAAI,IAAI;SAC9B,CAAC,CAAC;QACL,MAAM,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;YAC9C,EAAE,EAAE,MAAM,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,UAAU;YACrB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAG;YACd,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;IAC5D,CAAC;CACF,CAAC,CAAC"}
@@ -14,10 +14,6 @@ export default defineAction({
14
14
  from: z.string().optional(),
15
15
  to: z.string().optional(),
16
16
  limit: z.number().optional(),
17
- /**
18
- * If true, narrow to bookings where you are the host. Defaults to false
19
- * so org-shared bookings + bookings shared with you appear too.
20
- */
21
17
  onlyMine: z.boolean().optional().default(false),
22
18
  }),
23
19
  run: async (args) => {
@@ -1 +1 @@
1
- {"version":3,"file":"list-bookings.js","sourceRoot":"","sources":["../../src/actions/list-bookings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,wIAAwI;IAC1I,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;aACnE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aAC1B,QAAQ,EAAE;QACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B;;;WAGG;QACH,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAChD,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;QACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,MAAM,YAAY,CAAC;gBAC3B,GAAG,IAAI;gBACP,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACxC,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"list-bookings.js","sourceRoot":"","sources":["../../src/actions/list-bookings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,wIAAwI;IAC1I,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;aACnE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;aAC1B,QAAQ,EAAE;QACb,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;KAChD,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;QACjC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QACnC,OAAO;YACL,QAAQ,EAAE,MAAM,YAAY,CAAC;gBAC3B,GAAG,IAAI;gBACP,eAAe,EAAE,IAAI;gBACrB,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;aACxC,CAAC;SACH,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -9,7 +9,6 @@ export default defineAction({
9
9
  run: async (args) => {
10
10
  const { getDb, schema } = getSchedulingContext();
11
11
  const email = args.userEmail ?? currentUserEmail();
12
- // Delete cache rows for all of this user's credentials
13
12
  const creds = await getDb()
14
13
  .select({ id: schema.schedulingCredentials.id })
15
14
  .from(schema.schedulingCredentials)
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-busy-times.js","sourceRoot":"","sources":["../../src/actions/refresh-busy-times.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,mEAAmE;IACrE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACtD,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACnD,uDAAuD;QACvD,MAAM,KAAK,GAAG,MAAM,KAAK,EAAE;aACxB,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC;aAC/C,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;aAClC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,KAAK,EAAE;iBACV,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;iBAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"refresh-busy-times.js","sourceRoot":"","sources":["../../src/actions/refresh-busy-times.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,mEAAmE;IACrE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACtD,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,KAAK,EAAE;aACxB,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC;aAC/C,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC;aAClC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5D,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,MAAM,KAAK,EAAE;iBACV,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;iBAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;CACF,CAAC,CAAC"}
@@ -20,8 +20,6 @@ export default defineAction({
20
20
  await assertAccess("event-type", link.eventTypeId, "editor");
21
21
  }
22
22
  catch {
23
- // Keep private-link hashes unprobeable: callers without access receive
24
- // the same idempotent result as callers presenting an unknown hash.
25
23
  return { ok: true };
26
24
  }
27
25
  await db
@@ -1 +1 @@
1
- {"version":3,"file":"revoke-private-link.js","sourceRoot":"","sources":["../../src/actions/revoke-private-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,8BAA8B;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACtC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;aACpB,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;aACvD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;aACxB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7C,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,uEAAuE;YACvE,oEAAoE;YACpE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,EAAE;aACL,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;aAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"revoke-private-link.js","sourceRoot":"","sources":["../../src/actions/revoke-private-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,eAAe,YAAY,CAAC;IAC1B,WAAW,EAAE,8BAA8B;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACtC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAAC;QACjD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;aACpB,MAAM,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;aACvD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;aACxB,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;aAC7C,KAAK,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QACD,MAAM,EAAE;aACL,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;aAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;CACF,CAAC,CAAC"}
@@ -1,8 +1,6 @@
1
1
  import { defineAction } from "@agent-native/core/action";
2
2
  import { z } from "zod";
3
3
  import { currentUserEmail } from "./_helpers.js";
4
- // Profile data lives in consumer-provided settings (not the scheduling schema);
5
- // this action delegates to the core `settings` subsystem via a well-known key.
6
4
  export default defineAction({
7
5
  description: "Update the current user's profile (name, bio, timezone, brand colors, etc.)",
8
6
  schema: z.object({
@@ -17,9 +15,6 @@ export default defineAction({
17
15
  hideBranding: z.boolean().optional(),
18
16
  }),
19
17
  run: async (args) => {
20
- // The consumer template wires a `profile-settings` settings key; we just
21
- // read/merge/write it. Accessed via dynamic import to avoid a hard dep on
22
- // the core settings API here (different consumers may use alternate stores).
23
18
  const core = await import("@agent-native/core");
24
19
  if (core.writeSetting) {
25
20
  const existing = (await core.readSetting?.("profile-settings")) ?? {};
@@ -1 +1 @@
1
- {"version":3,"file":"update-profile.js","sourceRoot":"","sources":["../../src/actions/update-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,gFAAgF;AAChF,+EAA+E;AAC/E,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,6EAA6E;IAC/E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,yEAAyE;QACzE,0EAA0E;QAC1E,6EAA6E;QAC7E,MAAM,IAAI,GAAQ,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;gBAC1C,GAAI,QAAmB;gBACvB,GAAG,IAAI;aACR,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,CAAC;IACrD,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"update-profile.js","sourceRoot":"","sources":["../../src/actions/update-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,eAAe,YAAY,CAAC;IAC1B,WAAW,EACT,6EAA6E;IAC/E,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;QAClD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC7C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACrC,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC;IACF,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,MAAM,IAAI,GAAQ,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;gBAC1C,GAAI,QAAmB;gBACvB,GAAG,IAAI;aACR,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,CAAC;IACrD,CAAC;CACF,CAAC,CAAC"}
@@ -1,23 +1,5 @@
1
- /**
2
- * Buffer application.
3
- *
4
- * Buffers pad a slot with prep/cool-down time that the host needs but the
5
- * attendee shouldn't see as part of the meeting. A before-event buffer
6
- * means the slot reserves extra time before its displayed start; the slot
7
- * itself is still shown at the true meeting time.
8
- *
9
- * The practical effect: a slot [10:00–10:30] with before=10 means the host
10
- * is considered "busy" from 09:50 to 10:30, so it conflicts with a 09:00–09:50
11
- * meeting only if THAT meeting also has an after-buffer.
12
- */
13
1
  import type { BusyInterval } from "../shared/index.js";
14
- /** Expand a busy interval to include before/after buffers. */
15
2
  export declare function applyBuffers(busy: BusyInterval, beforeMinutes: number, afterMinutes: number): BusyInterval;
16
- /**
17
- * Expand a proposed slot window (start→end) to include the event type's
18
- * before/after buffers. The expanded window is what collision detection
19
- * uses; the displayed slot remains the unexpanded window.
20
- */
21
3
  export declare function expandSlotForConflictCheck(start: Date, end: Date, beforeMinutes: number, afterMinutes: number): {
22
4
  start: Date;
23
5
  end: Date;
@@ -1 +1 @@
1
- {"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../src/core/buffers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,8DAA8D;AAC9D,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,YAAY,CAQd;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,IAAI,EACX,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAK5B"}
1
+ {"version":3,"file":"buffers.d.ts","sourceRoot":"","sources":["../../src/core/buffers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,YAAY,EAClB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,YAAY,CAQd;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,IAAI,EACX,GAAG,EAAE,IAAI,EACT,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,CAK5B"}
@@ -1,5 +1,4 @@
1
1
  import { addMinutes } from "./time.js";
2
- /** Expand a busy interval to include before/after buffers. */
3
2
  export function applyBuffers(busy, beforeMinutes, afterMinutes) {
4
3
  return {
5
4
  ...busy,
@@ -7,11 +6,6 @@ export function applyBuffers(busy, beforeMinutes, afterMinutes) {
7
6
  end: new Date(addMinutes(new Date(busy.end), afterMinutes)).toISOString(),
8
7
  };
9
8
  }
10
- /**
11
- * Expand a proposed slot window (start→end) to include the event type's
12
- * before/after buffers. The expanded window is what collision detection
13
- * uses; the displayed slot remains the unexpanded window.
14
- */
15
9
  export function expandSlotForConflictCheck(start, end, beforeMinutes, afterMinutes) {
16
10
  return {
17
11
  start: addMinutes(start, -beforeMinutes),
@@ -1 +1 @@
1
- {"version":3,"file":"buffers.js","sourceRoot":"","sources":["../../src/core/buffers.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,8DAA8D;AAC9D,MAAM,UAAU,YAAY,CAC1B,IAAkB,EAClB,aAAqB,EACrB,YAAoB;IAEpB,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,IAAI,IAAI,CACb,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CACjD,CAAC,WAAW,EAAE;QACf,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE;KAC1E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAW,EACX,GAAS,EACT,aAAqB,EACrB,YAAoB;IAEpB,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC;QACxC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"buffers.js","sourceRoot":"","sources":["../../src/core/buffers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,UAAU,YAAY,CAC1B,IAAkB,EAClB,aAAqB,EACrB,YAAoB;IAEpB,OAAO;QACL,GAAG,IAAI;QACP,KAAK,EAAE,IAAI,IAAI,CACb,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CACjD,CAAC,WAAW,EAAE;QACf,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,WAAW,EAAE;KAC1E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAW,EACX,GAAS,EACT,aAAqB,EACrB,YAAoB;IAEpB,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC;QACxC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC;KACnC,CAAC;AACJ,CAAC"}
@@ -1,11 +1,7 @@
1
- /**
2
- * Conflict detection — does a proposed interval overlap any busy interval?
3
- */
4
1
  import type { BusyInterval } from "../shared/index.js";
5
2
  export declare function hasConflict(slot: {
6
3
  start: Date;
7
4
  end: Date;
8
5
  }, busy: BusyInterval[]): boolean;
9
- /** Merge overlapping busy intervals into a canonical, non-overlapping set. */
10
6
  export declare function mergeBusy(busy: BusyInterval[]): BusyInterval[];
11
7
  //# sourceMappingURL=conflicts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"conflicts.d.ts","sourceRoot":"","sources":["../../src/core/conflicts.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,wBAAgB,WAAW,CACzB,IAAI,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,EAChC,IAAI,EAAE,YAAY,EAAE,GACnB,OAAO,CAYT;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAwB9D"}
1
+ {"version":3,"file":"conflicts.d.ts","sourceRoot":"","sources":["../../src/core/conflicts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,wBAAgB,WAAW,CACzB,IAAI,EAAE;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,EAChC,IAAI,EAAE,YAAY,EAAE,GACnB,OAAO,CAYT;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAwB9D"}
@@ -10,7 +10,6 @@ export function hasConflict(slot, busy) {
10
10
  }
11
11
  return false;
12
12
  }
13
- /** Merge overlapping busy intervals into a canonical, non-overlapping set. */
14
13
  export function mergeBusy(busy) {
15
14
  if (busy.length === 0)
16
15
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../src/core/conflicts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,UAAU,WAAW,CACzB,IAAgC,EAChC,IAAoB;IAEpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IACE,QAAQ,CAAC,IAAI,EAAE;YACb,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACxB,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;SACrB,CAAC,EACF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,SAAS,CAAC,IAAoB;IAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACxB,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,GAAkD,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE;QAC5B,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../src/core/conflicts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,MAAM,UAAU,WAAW,CACzB,IAAgC,EAChC,IAAoB;IAEpB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IACE,QAAQ,CAAC,IAAI,EAAE;YACb,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACxB,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;SACrB,CAAC,EACF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAoB;IAC5C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI;SAChB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACxB,GAAG,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,MAAM,GAAG,GAAkD,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;gBAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE;QAC5B,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,11 +1,3 @@
1
- /**
2
- * Booking limits enforcement.
3
- *
4
- * Limits constrain how many bookings an event type can receive in a time
5
- * window (day / week / month / year). We pass in existing booking counts
6
- * per bucket and return a function that tells us whether a proposed start
7
- * time would exceed any limit.
8
- */
9
1
  import type { BookingLimits } from "../shared/index.js";
10
2
  export interface BookingCounts {
11
3
  perDay: Record<string, number>;
@@ -1 +1 @@
1
- {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,CAAC,GAAG,CAAK,GACtB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAO5D;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,MAAM,EAAE,aAAa,EACrB,YAAY,GAAE,CAAC,GAAG,CAAK,GACtB,OAAO,CAqBT"}
1
+ {"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,CAAC,GAAG,CAAK,GACtB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAO5D;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,IAAI,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,MAAM,EAAE,aAAa,EACrB,YAAY,GAAE,CAAC,GAAG,CAAK,GACtB,OAAO,CAqBT"}
@@ -1 +1 @@
1
- {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAmB1E,MAAM,UAAU,iBAAiB,CAC/B,SAAe,EACf,QAAgB,EAChB,YAAY,GAAU,CAAC;IAEvB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,SAAe,EACf,QAAgB,EAChB,MAAiC,EACjC,MAAqB,EACrB,YAAY,GAAU,CAAC;IAEvB,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM;QAC1E,OAAO,IAAI,CAAC;IACd,IACE,MAAM,CAAC,OAAO,IAAI,IAAI;QACtB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO;QAElD,OAAO,IAAI,CAAC;IACd,IACE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ;QAErD,OAAO,IAAI,CAAC;IACd,IACE,MAAM,CAAC,OAAO,IAAI,IAAI;QACtB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO;QAElD,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["../../src/core/limits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAW1E,MAAM,UAAU,iBAAiB,CAC/B,SAAe,EACf,QAAgB,EAChB,YAAY,GAAU,CAAC;IAEvB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,SAAe,EACf,QAAgB,EAChB,MAAiC,EACjC,MAAqB,EACrB,YAAY,GAAU,CAAC;IAEvB,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,MAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IAClE,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM;QAC1E,OAAO,IAAI,CAAC;IACd,IACE,MAAM,CAAC,OAAO,IAAI,IAAI;QACtB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO;QAElD,OAAO,IAAI,CAAC;IACd,IACE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACvB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ;QAErD,OAAO,IAAI,CAAC;IACd,IACE,MAAM,CAAC,OAAO,IAAI,IAAI;QACtB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO;QAElD,OAAO,IAAI,CAAC;IACd,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,22 +1,6 @@
1
- /**
2
- * Round-robin host assignment.
3
- *
4
- * For a given event type, pick the host who should take the next booking.
5
- *
6
- * Strategies:
7
- * - "lowest-recent-bookings" — host with fewest bookings in the rolling
8
- * window (default 30 days) wins; tie-break by priority then weight.
9
- * - "weighted" — distribute by relative weight; random weighted draw that's
10
- * deterministic-per-timestamp (seeded for reproducibility in tests).
11
- * - "calibrated" — weighted but scaled by no-show rate; hosts with high
12
- * no-show rates receive fewer bookings until their rate recovers.
13
- *
14
- * Out-of-office hosts are filtered out before selection.
15
- */
16
1
  import type { Host, RoundRobinStrategy } from "../shared/index.js";
17
2
  export interface HostMetrics {
18
3
  recentBookingCount: number;
19
- /** 0–1; fraction of recent bookings that were no-shows */
20
4
  noShowRate: number;
21
5
  }
22
6
  export interface AssignRoundRobinInput {
@@ -24,7 +8,6 @@ export interface AssignRoundRobinInput {
24
8
  metrics: Map<string, HostMetrics>;
25
9
  excludeEmails?: Set<string>;
26
10
  strategy: RoundRobinStrategy;
27
- /** Deterministic seed (e.g. booking timestamp) for reproducible weighted picks */
28
11
  seed?: number;
29
12
  }
30
13
  export declare function assignRoundRobin(input: AssignRoundRobinInput): Host | null;
@@ -1 +1 @@
1
- {"version":3,"file":"round-robin.d.ts","sourceRoot":"","sources":["../../src/core/round-robin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CA0B1E"}
1
+ {"version":3,"file":"round-robin.d.ts","sourceRoot":"","sources":["../../src/core/round-robin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAAG,IAAI,CA0B1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"round-robin.js","sourceRoot":"","sources":["../../src/core/round-robin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"round-robin.js","sourceRoot":"","sources":["../../src/core/round-robin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rrule.d.ts","sourceRoot":"","sources":["../../src/core/rrule.ts"],"names":[],"mappings":"AAQA,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,cAAc,SAAK,GAClB,IAAI,EAAE,CAKR"}
1
+ {"version":3,"file":"rrule.d.ts","sourceRoot":"","sources":["../../src/core/rrule.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,IAAI,EACb,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,IAAI,EACd,cAAc,SAAK,GAClB,IAAI,EAAE,CAIR"}
@@ -1,12 +1,5 @@
1
- /**
2
- * Recurring event expansion.
3
- *
4
- * Given an RRULE string and a time range, return the list of occurrence
5
- * start times. Uses `rrule` npm package under the hood.
6
- */
7
1
  import { rrulestr } from "rrule";
8
2
  export function expandRecurring(rruleString, dtstart, rangeStart, rangeEnd, maxOccurrences = 10) {
9
- // rrulestr parses RRULE:... with or without the DTSTART prefix.
10
3
  const rule = rrulestr(rruleString, { dtstart });
11
4
  const all = rule.between(rangeStart, rangeEnd, true);
12
5
  return all.slice(0, maxOccurrences);
@@ -1 +1 @@
1
- {"version":3,"file":"rrule.js","sourceRoot":"","sources":["../../src/core/rrule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAS,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,OAAa,EACb,UAAgB,EAChB,QAAc,EACd,cAAc,GAAG,EAAE;IAEnB,gEAAgE;IAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAU,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"rrule.js","sourceRoot":"","sources":["../../src/core/rrule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,MAAM,UAAU,eAAe,CAC7B,WAAmB,EACnB,OAAa,EACb,UAAgB,EAChB,QAAc,EACd,cAAc,GAAG,EAAE;IAEnB,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,CAAU,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACtC,CAAC"}
@@ -1,26 +1,9 @@
1
- /**
2
- * Availability rule evaluation.
3
- *
4
- * Given a Schedule (weekly rules + date overrides) and a local date in the
5
- * schedule's timezone, produce the set of available intervals on that day.
6
- *
7
- * Date overrides win over weekly rules: an empty-intervals override blocks
8
- * the day entirely; a non-empty override replaces the weekly rules for the day.
9
- */
10
1
  import type { AvailabilityInterval, DateOverride, WeeklyAvailability } from "../shared/index.js";
11
2
  export interface ScheduleInput {
12
3
  timezone: string;
13
4
  weeklyAvailability: WeeklyAvailability[];
14
5
  dateOverrides: DateOverride[];
15
6
  }
16
- /**
17
- * Return the intervals available for a given local date.
18
- * Intervals are in the schedule's local HH:MM, not UTC.
19
- */
20
7
  export declare function evaluateAvailabilityForDate(schedule: ScheduleInput, localDate: string, dayOfWeek: number): AvailabilityInterval[];
21
- /**
22
- * Normalize an interval list: sort by start, merge overlapping/adjacent,
23
- * drop zero-length.
24
- */
25
8
  export declare function normalizeIntervals(intervals: AvailabilityInterval[]): AvailabilityInterval[];
26
9
  //# sourceMappingURL=rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,oBAAoB,EAAE,CAKxB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,oBAAoB,EAAE,GAChC,oBAAoB,EAAE,CAkBxB"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,oBAAoB,EAAE,CAKxB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,oBAAoB,EAAE,GAChC,oBAAoB,EAAE,CAkBxB"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Return the intervals available for a given local date.
3
- * Intervals are in the schedule's local HH:MM, not UTC.
4
- */
5
1
  export function evaluateAvailabilityForDate(schedule, localDate, dayOfWeek) {
6
2
  const override = schedule.dateOverrides.find((o) => o.date === localDate);
7
3
  if (override)
@@ -9,10 +5,6 @@ export function evaluateAvailabilityForDate(schedule, localDate, dayOfWeek) {
9
5
  const weekly = schedule.weeklyAvailability.find((w) => w.day === dayOfWeek);
10
6
  return weekly?.intervals ?? [];
11
7
  }
12
- /**
13
- * Normalize an interval list: sort by start, merge overlapping/adjacent,
14
- * drop zero-length.
15
- */
16
8
  export function normalizeIntervals(intervals) {
17
9
  const sorted = intervals
18
10
  .filter((i) => toMinutes(i.startTime) < toMinutes(i.endTime))
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAuB,EACvB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IAC5E,OAAO,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAiC;IAEjC,MAAM,MAAM,GAAG,SAAS;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SAC5D,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,OAAO;gBACV,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC,OAAO;oBACZ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,2BAA2B,CACzC,QAAuB,EACvB,SAAiB,EACjB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC1E,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC,SAAS,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IAC5E,OAAO,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,SAAiC;IAEjC,MAAM,MAAM,GAAG,SAAS;SACrB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SAC5D,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,IAAI,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC/D,IAAI,CAAC,OAAO;gBACV,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC,OAAO;oBACZ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC"}
@@ -1,57 +1,26 @@
1
- /**
2
- * Slot computation — the heart of the scheduling package.
3
- *
4
- * Input: an event type's config (duration, buffers, limits, period),
5
- * a schedule (weekly hours + date overrides),
6
- * a set of busy intervals (from external calendars + existing bookings),
7
- * a time range to compute over.
8
- * Output: an array of Slot objects (UTC start/end) that are available
9
- * and pass every constraint.
10
- *
11
- * Correctness priorities, in order:
12
- * 1. Never return a slot in the past (respect `now + minimumBookingNotice`)
13
- * 2. Never return a slot that overlaps a busy interval (with buffers)
14
- * 3. Never return a slot outside the schedule's available windows
15
- * 4. Never exceed booking limits (per-day/week/month/year)
16
- * 5. Respect the event type's period (rolling / range / unlimited)
17
- * 6. Correctness across DST transitions
18
- */
19
1
  import type { Slot, BusyInterval, BookingLimits, PeriodType } from "../shared/index.js";
20
2
  import { type BookingCounts } from "./limits.js";
21
3
  import { type ScheduleInput } from "./rules.js";
22
4
  export interface ComputeSlotsInput {
23
- /** Event type duration, minutes */
24
5
  duration: number;
25
- /** Minutes before event start where the event type becomes unbookable; 0 = up to now */
26
6
  minimumBookingNotice: number;
27
- /** Buffers in minutes applied to any existing busy interval and the candidate slot */
28
7
  beforeEventBuffer: number;
29
8
  afterEventBuffer: number;
30
- /** Null = increment by duration */
31
9
  slotInterval: number | null;
32
10
  periodType: PeriodType;
33
11
  periodDays?: number;
34
12
  periodStartDate?: string;
35
13
  periodEndDate?: string;
36
14
  bookingLimits?: BookingLimits;
37
- /** Schedule — intervals in schedule's timezone */
38
15
  schedule: ScheduleInput;
39
- /** Busy intervals in UTC (already aggregated from all sources) */
40
16
  busy: BusyInterval[];
41
- /** Existing bookings grouped by bucket key — used for limit enforcement */
42
17
  bookingCounts?: BookingCounts;
43
- /** Week start for limit-bucketing */
44
18
  weekStartsOn?: 0 | 1;
45
- /** Range to compute over, UTC */
46
19
  rangeStart: Date;
47
20
  rangeEnd: Date;
48
- /** Current time (UTC). Defaults to now. */
49
21
  now?: Date;
50
- /** Seats per slot — if > 1, slot stays available until seats exhausted */
51
22
  seatsPerTimeSlot?: number;
52
- /** Seat count already reserved, keyed by ISO start */
53
23
  seatsTaken?: Map<string, number>;
54
- /** Timezone in which the Booker displays the slots (for limit buckets) */
55
24
  viewerTimezone?: string;
56
25
  }
57
26
  export declare function computeAvailableSlots(input: ComputeSlotsInput): Slot[];
@@ -1 +1 @@
1
- {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/core/slots.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAQ7E,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,EAAE,aAAa,CAAC;IACxB,kEAAkE;IAClE,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,2EAA2E;IAC3E,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,qCAAqC;IACrC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACrB,iCAAiC;IACjC,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC;IACf,2CAA2C;IAC3C,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sDAAsD;IACtD,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAAE,CA6GtE"}
1
+ {"version":3,"file":"slots.d.ts","sourceRoot":"","sources":["../../src/core/slots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAQ7E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACrB,UAAU,EAAE,IAAI,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC;IACf,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAAE,CAuGtE"}
@@ -14,7 +14,6 @@ export function computeAvailableSlots(input) {
14
14
  const interval = input.slotInterval ?? input.duration;
15
15
  const viewerTz = input.viewerTimezone ?? input.schedule.timezone;
16
16
  const slots = [];
17
- // Enumerate each local day in the schedule's timezone that the range touches.
18
17
  const dates = localDatesInRange(rangeStart, rangeEnd, input.schedule.timezone);
19
18
  for (const localDate of dates) {
20
19
  const dow = dayOfWeekForLocalDate(localDate, input.schedule.timezone);
@@ -27,29 +26,24 @@ export function computeAvailableSlots(input) {
27
26
  let slotStart = dayStartUtc;
28
27
  while (addMinutes(slotStart, input.duration) <= dayEndUtc) {
29
28
  const slotEnd = addMinutes(slotStart, input.duration);
30
- // Cap to range
31
29
  if (slotStart < rangeStart || slotEnd > rangeEnd) {
32
30
  slotStart = addMinutes(slotStart, interval);
33
31
  continue;
34
32
  }
35
- // Respect minimum notice
36
33
  if (slotStart < minBookableTime) {
37
34
  slotStart = addMinutes(slotStart, interval);
38
35
  continue;
39
36
  }
40
- // Conflict check (expanded with buffers)
41
37
  const expanded = expandSlotForConflictCheck(slotStart, slotEnd, input.beforeEventBuffer, input.afterEventBuffer);
42
38
  if (hasConflict(expanded, mergedBusy)) {
43
39
  slotStart = addMinutes(slotStart, interval);
44
40
  continue;
45
41
  }
46
- // Booking limits (in viewer's timezone for perDay buckets)
47
42
  if (input.bookingCounts &&
48
43
  exceedsLimits(slotStart, viewerTz, input.bookingLimits, input.bookingCounts, input.weekStartsOn ?? 0)) {
49
44
  slotStart = addMinutes(slotStart, interval);
50
45
  continue;
51
46
  }
52
- // Seats
53
47
  const seatsTaken = input.seatsTaken?.get(slotStart.toISOString()) ?? 0;
54
48
  const seatsRemaining = input.seatsPerTimeSlot != null
55
49
  ? Math.max(0, input.seatsPerTimeSlot - seatsTaken)
@@ -75,7 +69,6 @@ function capToPeriodStart(input, rangeStart, now) {
75
69
  const start = new Date(input.periodStartDate);
76
70
  return rangeStart > start ? rangeStart : start;
77
71
  }
78
- // Rolling + unlimited don't restrict start
79
72
  return rangeStart > now ? rangeStart : now;
80
73
  }
81
74
  function capToPeriodEnd(input, rangeEnd, now) {
@@ -90,8 +83,6 @@ function capToPeriodEnd(input, rangeEnd, now) {
90
83
  return rangeEnd;
91
84
  }
92
85
  function dayOfWeekForLocalDate(localDate, timezone) {
93
- // Construct a UTC date that corresponds to noon on that local date in the
94
- // target timezone, then ask what day-of-week it is in that timezone.
95
86
  const noon = zonedTimeToUtc(localDate, "12:00", timezone);
96
87
  return getDayOfWeek(noon, timezone);
97
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../src/core/slots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slots.js","sourceRoot":"","sources":["../../src/core/slots.ts"],"names":[],"mappings":"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"}