123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120{"id":"com.lattice.calendar","name":"Calendar","icon":"📅","color":"#ec4899","description":"Plan one-off and recurring calendar events.","requested_permissions":{"storage":["kv","sql"],"network":{"allowlist":[]},"notifications":true,"events":{"event-created":{"description":"A one-off event or recurring series was created.","schema":{"type":"object","properties":{"id":{"type":"integer","description":"Event or recurring-series ID."},"title":{"type":"string","description":"Event or series title."},"date":{"type":"string","description":"Local YYYY-MM-DD event date; series start date for recurring events."},"time":{"type":"string","description":"Local HH:MM; empty means no time."},"location":{"type":"string","description":"Venue or address; empty means none."},"description":{"type":"string","description":"Event details; empty means none."},"recurrence":{"type":"object","properties":{"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"],"description":"Repeat frequency."},"interval":{"type":"integer","description":"Number of frequency units between repetitions."},"daysOfWeek":{"type":"array","items":{"type":"integer","description":"Weekday number, 0=Sunday through 6=Saturday."},"description":"Weekly weekdays; empty uses startDate’s weekday; ignored for other frequencies."},"startDate":{"type":"string","description":"First eligible local date, YYYY-MM-DD."},"endDate":{"type":["string","null"],"description":"Inclusive final local date, YYYY-MM-DD; null means no end date."}},"required":["frequency","interval","daysOfWeek","startDate","endDate"],"description":"Recurrence pattern; omitted for one-off events."}},"required":["id","title","date","time","location","description"]}},"event-updated":{"description":"A one-off event or recurring series was updated.","schema":{"type":"object","properties":{"id":{"type":"integer","description":"Event or recurring-series ID."},"title":{"type":"string","description":"Event or series title."},"date":{"type":"string","description":"Local YYYY-MM-DD event date; series start date for recurring events."},"time":{"type":"string","description":"Local HH:MM; empty means no time."},"location":{"type":"string","description":"Venue or address; empty means none."},"description":{"type":"string","description":"Event details; empty means none."},"recurrence":{"type":"object","properties":{"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"],"description":"Repeat frequency."},"interval":{"type":"integer","description":"Number of frequency units between repetitions."},"daysOfWeek":{"type":"array","items":{"type":"integer","description":"Weekday number, 0=Sunday through 6=Saturday."},"description":"Weekly weekdays; empty uses startDate’s weekday; ignored for other frequencies."},"startDate":{"type":"string","description":"First eligible local date, YYYY-MM-DD."},"endDate":{"type":["string","null"],"description":"Inclusive final local date, YYYY-MM-DD; null means no end date."}},"required":["frequency","interval","daysOfWeek","startDate","endDate"],"description":"Recurrence pattern; omitted for one-off events."}},"required":["id","title","date","time","location","description"]}},"event-removed":{"description":"A one-off event or recurring series was removed.","schema":{"type":"object","properties":{"id":{"type":"integer","description":"Event or recurring-series ID."},"title":{"type":"string","description":"Event or series title."}},"required":["id","title"]}}},"listeners":{"add-event":{"description":"Create a one-off event or recurring series.","schema":{"type":"object","properties":{"title":{"type":"string","description":"Nonempty event title."},"date":{"type":"string","description":"Local YYYY-MM-DD; required for one-off events, ignored for recurring series."},"time":{"type":"string","description":"Local HH:MM; omitted or empty means no time."},"location":{"type":"string","description":"Venue or address; omitted or empty means none."},"description":{"type":"string","description":"Event details; omitted or empty means none."},"recurrence":{"type":"object","description":"Series pattern; omitted creates a one-off event using date.","properties":{"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"],"description":"Repeat frequency; omitted creates a one-off event using date."},"interval":{"type":"integer","description":"Frequency units between repetitions; omitted or zero defaults to 1."},"daysOfWeek":{"type":"array","items":{"type":"integer","description":"Weekday number, 0=Sunday through 6=Saturday."},"description":"Weekly weekdays; omitted/empty uses startDate’s weekday; ignored for other frequencies."},"startDate":{"type":"string","description":"First eligible local YYYY-MM-DD; omitted or empty defaults to local today."},"endDate":{"type":["string","null"],"description":"Inclusive final local YYYY-MM-DD; omitted, empty or null means no end date."}},"required":[]},"color":{"type":"string","description":"Display color; omitted or empty defaults to #4f46e5."}},"required":["title"]}}}}}