Skip to content

Takeover: integrate 5 verified community PRs (#113 #110 #109 #92 #106)#121

Merged
nwparker merged 16 commits into
mainfrom
nwparker/takeover-merge
Jul 18, 2026
Merged

Takeover: integrate 5 verified community PRs (#113 #110 #109 #92 #106)#121
nwparker merged 16 commits into
mainfrom
nwparker/takeover-merge

Conversation

@nwparker

@nwparker nwparker commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Takes over and integrates 5 fully-verified community PRs, rebased onto main and merged together so they compose cleanly. Each original author's commit is preserved in history.

PR Author Change
#113 @dwaxe Preserve usergroup & broadcast elements when rendering messages back
#110 @manu354 Fail fast on Slack auth hangs (bounded timeouts + 429 fail-fast)
#109 @cawilliamson channel list --via-counts for Enterprise Grid
#92 @delaneyb Block Kit support for message edit --blocks
#106 @TheOutdoorProgrammer Safe mode (redirect send→draft, block edit/delete) — closes #80 (feature 1)

Verification (composed together, off main)

  • bun run typecheck — clean
  • bun test345 pass / 0 fail (313 baseline + 32 from these PRs)
  • bun run lint — 0 errors (12 warnings; +1 is a max-lines style warning from safe-mode wiring)
  • bun run format:check — clean
  • bun run build:npm + node --check dist/index.js — OK
  • bun.lock unchanged; no conflict markers

Conflict / integration notes

Supersedes #113, #110, #109, #92, #106 (closed with evidence). Full report + per-PR evidence attached in the takeover review.

Made with Orca 🐋

delaneyb and others added 16 commits May 13, 2026 22:31
Adds an enforced human-in-the-loop mode (AGENT_SLACK_SAFE_MODE env var or
global --safe-mode flag) for AI agent environments:

- message send is redirected to the browser draft editor with the text
  and thread context pre-filled; output includes safe_mode/redirected_from
  markers and a stderr warning. Flags the editor cannot represent
  (--attach, --blocks, --schedule, --schedule-in, --reply-broadcast) are
  rejected instead of silently dropped, and the CI direct-send shortcut
  is blocked so safe mode cannot be bypassed with CI=1.
- message edit and message delete are blocked with a clear error.
- Read operations and reactions are unchanged.

Implements feature 1 of #80.
On Enterprise Grid, users.conversations and conversations.list return
enterprise_is_restricted for browser/session tokens, so `channel list`
(and `channel list --all`) can't enumerate conversations without an
admin-approved app token.

Add `channel list --via-counts`, which enumerates the current user's
joined conversations via client.counts (the slack web client's sidebar
method, still permitted on Grid) + conversations.info per id for names.
Output matches the existing channel-record shape from the other list
helpers.

- listConversationsViaCounts: client.counts -> ids across channels/mpims/ims
  -> conversations.info per id (parallel), keep {id} on info failure
- --via-counts is incompatible with --all and --user (client.counts is
  current-user, joined-only, no server-side pagination; --limit slices
  locally, --cursor is ignored)
- tests for enumeration, info-failure fallback, limit slicing, id-less
  entries
# Conflicts:
#	README.md
#	skills/agent-slack/SKILL.md
#	skills/agent-slack/references/commands.md
#	src/cli/message-command.ts
# Conflicts:
#	skills/agent-slack/SKILL.md
#	skills/agent-slack/references/commands.md
#	src/cli/message-actions.ts
#	test/message-send.test.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Safe mode (redirect send→draft) and background/detach mode for draft editor

5 participants