calendar: add recurring events, event management, and safety rules

Add --rrule flag to send with DTSTART/BYDAY validation (RFC 5545).
Add event list (via khal) and event delete (safe single-event removal).
Document safety rules from 2026-03-25 incident: always dry-run recurring
events, never rm .ics files, space out SMTP sends.
This commit is contained in:
Yanxin Lu
2026-03-25 09:32:22 -07:00
parent 810a9923f9
commit 35f048dd83
6 changed files with 347 additions and 19 deletions

View File

@@ -73,6 +73,7 @@ _这份文件记录持续性项目和重要状态跨会话保留。_
### 3. 日历邀请 + CalDAV 同步
**状态**: 运行中
**创建**: 2026-03-18
**更新**: 2026-03-25添加 RRULE 支持 + 事件管理 + 安全规则)
**配置**:
- 技能: `~/.openclaw/workspace/skills/calendar/`
- 日历数据: `~/.openclaw/workspace/calendars/` (home/work/tasks/journals)
@@ -82,12 +83,19 @@ _这份文件记录持续性项目和重要状态跨会话保留。_
- 运行方式: `uv run`(依赖 `icalendar` 库)
**功能**:
- 发送日历邀请给外部收件人
- 发送日历邀请,支持周期性事件(`--rrule`
- 接受/拒绝/暂定回复邀请(回复给 organizer
- VTODO 待办管理add/list/complete/delete/check
- 事件管理(`event list` / `event delete`
- VTODO 待办管理add/list/edit/complete/delete/check
- 发送/回复/待办操作后自动 `vdirsyncer sync` 同步到 CalDAV
- 心跳定期同步日历
**⚠️ 重要安全规则**2026-03-25 事故教训):
- 周期性邀请**必须先 `--dry-run`** 验证 ICS 内容
- `--rrule``BYDAY` 必须和 `--start` 日期的星期匹配(工具会自动校验)
- **绝不用 `rm` 删日历 .ics 文件**,只用 `event delete --match`
- 连续发多封邮件时,每封间隔 10 秒以上Migadu SMTP 限频)
---
## 📁 项目文件索引
@@ -100,4 +108,4 @@ _这份文件记录持续性项目和重要状态跨会话保留。_
---
_最后更新: 2026-03-24_
_最后更新: 2026-03-25_