Skip to content

feat: add calendar management (read, create, schedule) #781

Description

@avoidwork

Summary

Add calendar management tools for reading events, creating/updating/deleting events, checking availability, and generating meeting summaries via Google Calendar and Outlook/MS Graph.

Motivation

Productivity workflows revolve around scheduling. The agent has no capability to interact with calendar systems — it cannot read upcoming events, create new meetings, check attendee availability, update existing events, or generate meeting summaries. This is a fundamental gap for any agent designed to assist with professional workflows. Users cannot ask the agent to "find a 30-minute slot tomorrow" or "summarize my afternoon meetings."

Proposed Solution

Create a calendar skill that provides:

  • Read events: Fetch calendar events with filtering (date range, calendar, attendee, keyword)
  • Create events: Schedule new meetings with title, time, attendees, location, description
  • Update events: Modify existing events (time changes, attendee additions, description updates)
  • Delete events: Cancel/remove events
  • Check availability: Find free time slots, conflict detection
  • Meeting summaries: Generate summaries of past events from calendar descriptions and attached notes
  • Multi-provider support: Google Calendar API, Outlook/MS Graph API
  • Timezone awareness: Proper handling of timezone conversions

Alternatives Considered

  • Shell-based calendar tools (khal, calcurse): limited to local calendars, no cloud sync.
  • Single-provider only (Google Calendar): excludes enterprise/Outlook users.
  • Email-based scheduling: fragile, no structured data access.

OpenSpec Note

This project uses OpenSpec for feature development. If this request is approved, I will:

  1. Run /opsx:propose to generate a full proposal with specs and tasks
  2. Iterate on the design before any code is written
  3. Follow the task-driven implementation workflow

Additional Context

This should integrate with the email gap (#779) for scheduling workflows — e.g., creating a calendar event and sending calendar invites via email simultaneously.

Audit Findings (for Issue #781)

  • src/tools/index.js — Tools are registered here with TOOL_PERMISSIONS and TOOL_CLASSIFICATIONS. Calendar tools would need network:outbound permission and likely classifications for scheduling/productivity agents.
  • src/tools/date.js — Existing date tool provides date awareness; calendar tools would extend this with event-level operations.
  • src/config/config.js / src/config/loader.js — Calendar API credentials (OAuth tokens, API keys) would need secure storage.
  • src/config/schemas/providers.js — Calendar provider configuration schemas (Google Calendar, MS Graph) would follow existing patterns.
  • src/tools/web.js — Existing web tool uses network:outbound; calendar tools would follow the same permission model.
  • src/agent/deepAgents.js — Agent orchestration; calendar tools would be registered alongside existing tools.
  • src/scheduler/cron.js / src/scheduler/scheduler.js — Existing scheduler infrastructure; calendar tools could leverage or integrate with this for recurring event detection.
  • Dependency note — Google Calendar API requires googleapis npm package. MS Graph requires @microsoft/microsoft-graph-client. OAuth flows add complexity — consider starting with API key and adding OAuth later.
  • Integration point — Cross-references feat: add email integration (read, send, manage) #779 (email integration). Calendar invites should be sent via email tools. Shared auth abstraction between email and calendar tools is recommended.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions