feat: add Apple Calendar source package

Add @aris/source-apple-calendar for fetching iCloud
calendar events via CalDAV using tsdav and ical.js.

- CalendarSource implements FeedSource with fetchItems
  and fetchContext for downstream context
- CalendarCredentialProvider interface for token injection
- CalendarDAVClient interface for testability
- iCal parser extracts full event data including
  attendees, alarms, organizer, and recurrence
- Priority based on event proximity to current time

Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
2026-02-13 22:08:58 +00:00
parent 1b2929c2b6
commit f557a0f967
14 changed files with 1182 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
import type { ContextKey } from "@aris/core"
import { contextKey } from "@aris/core"
import type { CalendarEventData } from "./types.ts"
/**
* Calendar context for downstream sources.
*
* Provides a snapshot of the user's upcoming events so other sources
* can adapt (e.g. a commute source checking if there's a meeting soon).
*/
export interface CalendarContext {
/** Events happening right now */
inProgress: CalendarEventData[]
/** Next upcoming event, if any */
nextEvent: CalendarEventData | null
/** Whether the user has any events today */
hasTodayEvents: boolean
/** Total number of events today */
todayEventCount: number
}
export const CalendarKey: ContextKey<CalendarContext> = contextKey("calendar")