Member Junction
    Preparing search index...

    The calendar watcher — the headline "invite the agent like a person" join method.

    For each active agent identity of IdentityType='Email', the watcher polls that identity's calendar (via the injected ICalendarSource) for new invites, and for every invite where the agent is an attendee it creates a Scheduled MJAIAgentSessionBridgeEntity (JoinMethod='Invite', Status='Scheduled', ScheduledStartTime=invite.StartTime, Address=joinUrl, ProviderID resolved from the join URL) plus the linked AIAgentSession the bridge attaches to. The ScheduledBridgeRunner later starts these at their start time.

    Design properties (all per spec):

    • Provider-agnostic. All calendar-API specifics live behind ICalendarSource; this class knows only the normalized NormalizedCalendarInvite shape.
    • Idempotent. Before creating a bridge it checks for an existing one with the same ExternalConnectionID (set to the invite's ExternalEventID). The same invite never double-books.
    • Tolerant. A failing identity or source is logged and the sweep continues to the next identity; one bad calendar never blocks the others.
    • No timer. The watcher only exposes Sweep; the host schedules the polling loop (matching the engine janitor's "documented hook, not a hard timer" posture).

    /plans/realtime/realtime-bridges-architecture.md §5 (Invite/Calendar join + agent identity).

    Index

    Constructors

    Methods

    Constructors

    Methods