Add DM fixes, digest stats, tasks/reminders, calendar, and CI/CD pipeline #15

Merged
amoussa1229 merged 6 commits from feature/issues-1-4 into main 2026-05-05 14:45:15 +00:00

6 commits

Author SHA1 Message Date
Adam Moussa
c03f951947 Update README for tasks, reminders, calendar, and CI/CD pipeline 2026-05-05 10:44:37 -04:00
Adam Moussa
1d9b8de8b3 Add CodeBuild CI/CD pipeline
CodePipeline triggers on pushes to main, CodeBuild runs cdk deploy via buildspec.
2026-05-05 10:28:02 -04:00
Adam Moussa
833a4fdd52 Add Google Calendar integration
- New src/shared/calendar.py: OAuth service builder, list_events,
  create_event, check_availability (reuses gmail-oauth secret)
- 3 new tools: get_calendar_events, create_calendar_event, check_availability
- Extended OAuth scopes to include calendar in gmail.py and token script
- Updated system prompt with calendar capabilities

Requires re-running scripts/get_gmail_token.py to grant the calendar scope
and updating the exec-aide/gmail-oauth secret with the new refresh token.

Closes #2
2026-05-05 10:26:05 -04:00
Adam Moussa
31e015877c Add tasks and reminders
- DynamoDB task CRUD with TASK#{ulid} prefix
- 5 new tools: create_task, list_tasks, complete_task, delete_task, create_reminder
- New exec-aide-reminder Lambda triggered by EventBridge Scheduler one-shots
- CDK: reminder Lambda, scheduler IAM role, conversation Lambda permissions
- Updated system prompt with task/reminder capabilities

Closes #3
2026-05-05 10:26:05 -04:00
Adam Moussa
15ed335e10 Add synchronous digest trigger for inline stats
Changed trigger_daily_digest from async (fire-and-forget) to synchronous
invocation so Lauren can report summary stats inline while the full Block
Kit digest arrives as a separate DM.

Closes #1
2026-05-05 10:25:51 -04:00
Adam Moussa
36bd41e238 Fix flat replies in DMs
DM replies were threaded under Adam's message instead of appearing flat.
Root cause: listener fell back to event["ts"] as thread_ts for new DMs,
causing say() to post as a threaded reply. Removed the fallback so DMs
always use flat messages with placeholder update.

Closes #4
2026-05-05 10:25:51 -04:00