Files
sim/apps
Waleed 209501e2da feat(slack): assistant thread ops, paginated history/replies, and permalink (#4934)
* feat(slack): add assistant thread ops, paginated history/replies, and permalink

- New tools: slack_set_status, slack_set_title, slack_set_suggested_prompts
  (assistant.threads.*), slack_get_channel_history + slack_get_thread_replies
  (paginated conversations.history/replies via directExecution), slack_get_permalink
- Wire all six as Slack block operations with subBlocks, conditions, params, outputs
- Add scopes: assistant:write, im:history, mpim:read, mpim:history (+ consent labels)
- Add manifest capabilities: action_read_history, action_assistant
- Fix invite_to_conversation no_user error code; widen DM history scope hints
- Regenerate tool docs and integrations catalog

* fix(slack): correct thread parent on cursor-resume, complete DM scope hints, reject empty suggested prompts

- get_thread_replies: identify thread parent by ts === thread_ts instead of
  assuming index 0, so cursor-resumed pages (which omit the parent) no longer
  mislabel a reply as the parent
- get_channel_history + get_thread_replies: include im:history/mpim:history in
  the missing_scope hint to match the OAuth grant and DM/MPIM reads
- set_suggested_prompts: throw a clear error when no valid prompt is provided
  instead of silently calling Slack with an empty prompts array

* fix(slack): guard non-numeric limit/maxPages; drop ungranted im/mpim history scopes

- Add resolvePositiveInt helper and use it for limit/maxPages in
  get_channel_history and get_thread_replies, so a non-numeric value (e.g. from
  an LLM) no longer becomes NaN and silently disables pagination (returning an
  empty success)
- Remove im:history/mpim:read/mpim:history from the Slack OAuth grant — the Slack
  app does not have these scopes; assistant:write is the only added scope
- Drop the explanatory inline comment in get_thread_replies

* improvement(slack): move history pagination cursor/maxPages to advanced mode

Matches the existing paginationCursor convention in the block — keeps the basic
UI focused on channel + time filters while pagination internals live under
advanced.

* fix(slack): narrow set_status missing_scope hint to assistant:write

A user hitting missing_scope on set_status already has chat:write (long
granted); the scope they actually need is assistant:write, which is also what
set_title/set_suggested_prompts point to. Narrow the hint to assistant:write for
accurate, consistent guidance.
2026-06-09 18:28:27 -07:00
..