# カレンダーツール（AddCalendarEvent / ListCalendarEvents）

スペース別カレンダーに「予定」を読み書きするツール。予定は受動的なエントリで、
cron の定期タスク（`scheduled_tasks`）とは別概念（予定は実行しない）。

予定は実行中タスクが属するスペース（`ctx.spaceId`）のカレンダーに記録される。
スペースに属していないタスク（旧 local タスク）では使えず、明確なエラーを返す。

## AddCalendarEvent

実行中タスクのスペースのカレンダーに予定を1件追加する。
`created_by` は常に `agent`、`source_task_id` には実行中タスク ID が記録される。

引数:
- `title`（必須）: 予定のタイトル
- `date`（必須）: 開始日 `YYYY-MM-DD`（ローカル日付）
- `end_date`（任意）: 終了日 `YYYY-MM-DD`。複数日にまたがる予定のとき指定。省略すると単日。`date` より前は不可
- `time`（任意）: 開始 `HH:MM`。省略すると終日扱い
- `end_time`（任意）: 終了 `HH:MM`。`time`（開始）があるときだけ有効。単日では開始時刻以降のみ（複数日は終了日側の時刻なので順序不問）
- `description`（任意）: 補足説明

例:
```
AddCalendarEvent({ title: "定例MTG", date: "2026-07-01", time: "10:00", end_time: "11:00" })
AddCalendarEvent({ title: "提出締切", date: "2026-07-10" })   // 終日
AddCalendarEvent({ title: "現地出張", date: "2026-07-10", end_date: "2026-07-12" })  // 複数日
```

使いどころ: ユーザーが「○日に△△を予定に入れて」と依頼したとき、調査の結果として
期限や予定日が判明したとき。日付は必ずユーザーのローカル暦日で指定する。

## ListCalendarEvents

スペースの予定を日付範囲で一覧する（読み取り専用）。

引数:
- `from`（任意）: 範囲開始 `YYYY-MM-DD`
- `to`（任意）: 範囲終了 `YYYY-MM-DD`

範囲を省略すると全期間。結果は日付→時刻順（終日は各日の先頭）で返る。

## gotcha

- `date` / `from` / `to` は `YYYY-MM-DD`、`time` / `end_time` は `HH:MM` 厳守。形式違反はエラー。
- `end_time` は `time` なしには指定できない（終日の予定に終了時刻は持てない）。
- スペース未所属のタスクからは呼べない（`ctx.spaceId` 必須）。
- 予定はスペースの可視性に従う。イベント単独の可視性は持たない。
