Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

@elizaos/plugin-scheduling

Scheduling and calendar coordination plugin for elizaOS agents.

Features

  • Multi-party Availability Coordination: Find meeting times that work for all participants
  • Time Zone Aware: Handles availability across different time zones
  • Calendar Invites: Generate ICS files for calendar integration
  • Automated Reminders: Schedule SMS/email reminders before meetings
  • Meeting Lifecycle: Track meetings from proposal to completion
  • Rescheduling Support: Handle cancellations and reschedules gracefully

Installation

npm install @elizaos/plugin-scheduling

Usage

import { schedulingPlugin } from '@elizaos/plugin-scheduling';
import { createCharacter } from '@elizaos/core';

const character = createCharacter({
  name: 'Scheduler',
  plugins: [schedulingPlugin],
});

API

SchedulingService

The core service for managing scheduling operations.

Save Availability

const schedulingService = runtime.getService<SchedulingService>('SCHEDULING');

await schedulingService.saveAvailability(entityId, {
  timeZone: 'America/New_York',
  weekly: [
    { day: 'mon', startMinutes: 540, endMinutes: 1020 }, // 9am-5pm
    { day: 'tue', startMinutes: 540, endMinutes: 1020 },
    { day: 'wed', startMinutes: 540, endMinutes: 1020 },
    { day: 'thu', startMinutes: 540, endMinutes: 1020 },
    { day: 'fri', startMinutes: 540, endMinutes: 1020 },
  ],
  exceptions: [
    { date: '2024-01-20', unavailable: true, reason: 'Holiday' },
  ],
});

Create Scheduling Request

const request = await schedulingService.createSchedulingRequest(
  roomId,
  'Coffee Chat',
  [
    { entityId: user1Id, name: 'Alice', availability: aliceAvailability },
    { entityId: user2Id, name: 'Bob', availability: bobAvailability },
  ],
  {
    minDurationMinutes: 30,
    preferredDurationMinutes: 60,
    maxDaysOut: 7,
    preferredTimes: ['afternoon'],
    locationType: 'in_person',
  }
);

Find Available Slots

const result = await schedulingService.findAvailableSlots(request);

if (result.success) {
  // result.proposedSlots contains ranked time slots
  const bestSlot = result.proposedSlots[0];
  console.log(`Best slot: ${bestSlot.slot.start} - Score: ${bestSlot.score}`);
}

Create Meeting

const meeting = await schedulingService.createMeeting(request, slot, {
  type: 'in_person',
  name: 'Blue Bottle Coffee',
  address: '123 Main St',
  city: 'San Francisco',
});

Confirm Attendance

await schedulingService.confirmParticipant(meetingId, entityId);

Actions

The plugin provides conversational actions:

  • SCHEDULE_MEETING: Start scheduling a meeting
  • CONFIRM_MEETING: Confirm or decline attendance
  • SET_AVAILABILITY: Update availability preferences

Provider

The SCHEDULING_CONTEXT provider gives agents context about:

  • Upcoming meetings
  • Pending confirmations
  • User's availability settings

Types

Availability

interface Availability {
  timeZone: string;               // IANA time zone
  weekly: AvailabilityWindow[];   // Recurring windows
  exceptions: AvailabilityException[]; // One-off changes
}

interface AvailabilityWindow {
  day: DayOfWeek;       // 'mon' | 'tue' | 'wed' | 'thu' | 'fri' | 'sat' | 'sun'
  startMinutes: number; // Minutes from midnight (0-1439)
  endMinutes: number;   // Minutes from midnight (0-1439)
}

Meeting

interface Meeting {
  id: string;
  title: string;
  slot: TimeSlot;
  location: MeetingLocation;
  participants: MeetingParticipant[];
  status: MeetingStatus;
  rescheduleCount: number;
}

type MeetingStatus = 
  | 'proposed'
  | 'confirmed'
  | 'scheduled'
  | 'in_progress'
  | 'completed'
  | 'cancelled'
  | 'rescheduling'
  | 'no_show';

Configuration

const config: SchedulingServiceConfig = {
  defaultReminderMinutes: [1440, 120],  // 24h and 2h before
  maxProposals: 3,
  defaultMaxDaysOut: 7,
  minMeetingDuration: 30,
  defaultMeetingDuration: 60,
  autoSendCalendarInvites: true,
  autoScheduleReminders: true,
};

Calendar Integration

Generate ICS files for calendar apps:

import { generateIcs } from '@elizaos/plugin-scheduling';

const ics = generateIcs({
  uid: meeting.id,
  title: meeting.title,
  start: meeting.slot.start,
  end: meeting.slot.end,
  timeZone: meeting.slot.timeZone,
  location: meeting.location.address,
  organizer: { name: 'Ori', email: 'ori@soulmates.app' },
  attendees: meeting.participants.map(p => ({
    name: p.name,
    email: p.email,
    role: p.role,
  })),
  reminderMinutes: [1440, 120],
});

License

MIT

Metadata

Release files for elizaos-plugin-scheduling 2.0.0a5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for elizaos-plugin-scheduling 2.0.0a5
File Size Uploaded
elizaos_plugin_scheduling-2.0.0a5.tar.gz 31.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for elizaos-plugin-scheduling 2.0.0a5
File Interpreter ABI Platform
elizaos_plugin_scheduling-2.0.0a5-py3-none-any.whl Python 3 none any Details

Total release size: 62.1 kB

Release files / elizaos_plugin_scheduling-2.0.0a5.tar.gz

Download URL elizaos_plugin_scheduling-2.0.0a5.tar.gz
Size 31.7 kB
Tags Source
SHA-256 checksum
How to use checksums
37f2b542eb1dd7e9ecc65ce44ebf5951bb80fa33a2b01780fdef97d2231833b7
BLAKE2b-256 checksum
How to use checksums
f57f1580f89ceb40ad0392045e3160b1200fe1653f0887d1433daef185378cd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release files / elizaos_plugin_scheduling-2.0.0a5-py3-none-any.whl

Download URL elizaos_plugin_scheduling-2.0.0a5-py3-none-any.whl
Size 30.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5ad32e63bc6d6d0ae19164f5dbbdfafdd803a5ddf8516d9472ea585db1e22deb
BLAKE2b-256 checksum
How to use checksums
d0e7a82230ea76fffd6c455e89b939823687e86b4baf0b3414af6634569f671a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.2

Release history Release notifications | RSS feed

This release

2.0.0a5 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page