Takeover: integrate 5 verified community PRs (#113 #110 #109 #92 #106)#121
Merged
Conversation
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: # src/slack/client.ts
# 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
…fault) Co-authored-by: Orca <help@stably.ai>
…rename Co-authored-by: Orca <help@stably.ai>
This was referenced Jul 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Takes over and integrates 5 fully-verified community PRs, rebased onto
mainand merged together so they compose cleanly. Each original author's commit is preserved in history.channel list --via-countsfor Enterprise Gridmessage edit --blocksVerification (composed together, off
main)bun run typecheck— cleanbun test— 345 pass / 0 fail (313 baseline + 32 from these PRs)bun run lint— 0 errors (12 warnings; +1 is amax-linesstyle warning from safe-mode wiring)bun run format:check— cleanbun run build:npm+node --check dist/index.js— OKbun.lockunchanged; no conflict markersConflict / integration notes
main's 429-retry +input.*refactor with the PR's timeout wrap; extended 429 fail-fast to the multipart upload path for consistency (existing retry test opts into waiting viaAGENT_SLACK_RATE_LIMIT_MAX_WAIT_MS).editMessagenow mirrorssendMessage—--blockswins, else auto-convert text→rich-text.composeMessage; CI cannot bypass safe mode (the gate throws before the editor's CI shortcut). Docs re-applied onto the restructured skill.--field) are verified green but need one live credential/socket smoke test — pushed astakeover/pr-108/takeover/pr-74, left open.Supersedes #113, #110, #109, #92, #106 (closed with evidence). Full report + per-PR evidence attached in the takeover review.
Made with Orca 🐋