New wakeup flow:
1. Create private Discord channel for the agent
2. Send wakeup message with slot context + workflow reference
3. If Dirigent detected (globalThis.__dirigent), create work-type channel
4. Fallback to api.spawn if Discord not configured
New config fields: discordBotToken, discordGuildId
New file: plugin/calendar/discord-wakeup.ts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New ScheduleCache class: maintains today's full schedule locally
- CalendarBridgeClient.getDaySchedule(): fetch all slots for a date
- Scheduler now runs two intervals:
- Heartbeat (60s): existing slot execution flow (unchanged)
- Sync (5min): pulls full day schedule into local cache
- Exposes getScheduleCache() for tools and status reporting
This enables the plugin to detect slots assigned by other agents
between heartbeats and provides a complete local view of the schedule.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add CalendarScheduler class to manage periodic heartbeat and slot execution
- Implement agent wakeup logic when Idle and slots are pending
- Handle slot status transitions (attended, ongoing, deferred)
- Support both real and virtual slot materialization
- Add task context building for different event types (job, system, entertainment)
- Integrate scheduler into main plugin index.ts
- Add new plugin tools: harborforge_calendar_status, complete, abort