aws-samples / aws-samples/sample-autonomous-cloud-coding-agents

feat(notifications): per-user notification preferences

Open
#472 0 comments 0 reactions 0 assignees View on GitHub
enhancement orchestration
Dominant language
TypeScript
Stars
143
Forks
46
Avg merge
3d 9h
Merged PRs (30d)
20

Description

**Context:** ROADMAP.md → Per-user notification preferences

---

## Component

API or orchestration

## Describe the feature

**DynamoDB store** (or equivalent) for per-user preferred channels, per-channel config (email address, Slack DM), and **event filters** beyond global defaults.

## Use case

Teams have mixed preferences: some want every milestone, others only failures and approvals. Global fanout defaults are insufficient at scale.

## Proposed solution

1. `NotificationPreferencesTable`: PK `user_id`, channel configs, subscribed event types.
2. FanOutConsumer resolves preferences after task submitter identity.
3. API: `GET/PUT /users/me/notification-preferences`; CLI `bgagent notifications`.
4. Merge with per-channel defaults from `INTERACTIVE_AGENTS.md` AD-4.
5. Document in `docs/design/INPUT_GATEWAY.md`.

## Other information

- Depends on SES dispatcher for email channel.
- Design context: `docs/design/INPUT_GATEWAY.md`.

- [ ] This might be a breaking change

Contributor guide

Open the contributing guide

Research direction

Start with ROADMAP.md and docs/design/INPUT_GATEWAY.md, then trace the FanOutConsumer and the existing notification and SES dispatcher paths. The proposed scope includes the NotificationPreferencesTable, GET/PUT API, CLI command, event-filter merging, and documentation; done means these pieces work together with the stated per-channel defaults.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, typescript
Domain
api, backend, cli, databases, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.