mirror of
https://github.com/hanzoai/base.git
synced 2026-10-21 03:41:50 +00:00
Rename plugins/scheduling -> plugins/calendar and mount under /v1/calendar, serving the Cal <Booker> atom's endpoint subset — public event, available slots, advisory slot holds, booking create/read/reschedule/cancel and an anonymous /me — so cal.hanzo.ai renders Cal's real Booker straight against native Base. The reviewed core is preserved verbatim: computeSlots, the isOpenSlot availability gate, the transactional double-book guard + partial unique index, and the per-IP/per-host rate limiter (slots_test + redverify_test still pass). Security decisions live in cal.go: event types resolve by (owner, slug) so the client-supplied numeric eventTypeId is never trusted for data access; the public event and /me expose no host email and no raw meeting location (only revealed to the booking uid holder post-booking); reserve/delete are advisory holds that never gate the write path.