Skip to content

Slack: dedupe normalized interaction selections#18423

Closed
Solvely-Colin wants to merge 1 commit into
openclaw:mainfrom
Solvely-Colin:codex/slack-interaction-payload-dedupe
Closed

Slack: dedupe normalized interaction selections#18423
Solvely-Colin wants to merge 1 commit into
openclaw:mainfrom
Solvely-Colin:codex/slack-interaction-payload-dedupe

Conversation

@Solvely-Colin

@Solvely-Colin Solvely-Colin commented Feb 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Hardens normalized Slack interaction payloads by deduplicating selected values/labels while preserving first-seen order.

  • dedupe normalized selectedValues
  • dedupe normalized selectedLabels
  • add regression coverage for duplicate mixed-select payload inputs

Scope

  • src/slack/monitor/events/interactions.ts
  • src/slack/monitor/events/interactions.test.ts

Validation

  • pnpm test src/slack/monitor/events/interactions.test.ts
  • pnpm check

Dependency

Depends on:

If reviewing before dependencies merge, review tip commit: 215dc56b9.

Greptile Summary

Adds deduplication to Slack Block Kit interaction payload normalization, preventing duplicate values/labels when Slack sends redundant selections across singular and plural fields (e.g., selected_user + selected_users). Uses first-seen order preservation via Set-based deduplication with trimming.

  • Introduced uniqueNonEmptyStrings helper with defensive type guards
  • Applied deduplication to selectedValues, selectedLabels, selectedUsers, selectedChannels, and selectedConversations
  • Shared across both block actions and modal submissions via summarizeAction
  • Added regression test coverage with mixed duplicate inputs

Confidence Score: 5/5

  • This PR is safe to merge with no risk
  • The implementation is clean, well-tested, and defensive. The deduplication logic correctly preserves first-seen order, handles edge cases (empty strings, non-strings), and applies consistently across all interaction types. Test coverage validates the exact scenario described (duplicates across singular/plural fields). No breaking changes or side effects.
  • No files require special attention

Last reviewed commit: 7446c0a

@Solvely-Colin
Solvely-Colin force-pushed the codex/slack-interaction-payload-dedupe branch from eaf2ee6 to 7446c0a Compare February 17, 2026 00:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel: slack Channel integration: slack size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants