Skip to content

[Feat] Expand request_user_input across Slack, Linear, Teams, and Telegram - #591

Merged
mrubens merged 3 commits into
developfrom
fix/comms-rui-placeholder-and-parity-2xiyizeolznbn
Jul 19, 2026
Merged

[Feat] Expand request_user_input across Slack, Linear, Teams, and Telegram#591
mrubens merged 3 commits into
developfrom
fix/comms-rui-placeholder-and-parity-2xiyizeolznbn

Conversation

@roomote-roomote

Copy link
Copy Markdown
Contributor

Opened on behalf of Matt Rubens. Follow up by mentioning @roomote-roomote, in the web UI, or in Discord.

What changed

  1. Skip OpenCode empty shells on Slack and Linear
    Don’t post/emit OpenCode’s interim Provide the requested input. placeholder before options land (same polish Discord already had).

  2. Native structured prompts on Telegram and Teams

    • Generic publishCommunicationRequestUserInput for Discord/Telegram/Teams
    • Worker callbacks + answer polling for all three
    • Telegram: text answers + option buttons (inline keyboard)
    • Teams: text answers with numbered options (no Adaptive Card buttons yet — Teams still lacks a callback-button handler)
  3. Agent guidance updated so Teams/Telegram know non-secret structured prompts render in-channel.

Why this change was made

After Discord request_user_input shipped, we still wanted (a) no empty-shell flash on Slack/Linear and (b) the same structured ask flow on the other chat surfaces.

Impact

  • Slack/Linear: fewer useless empty-prompt flashes
  • Telegram: option buttons + text answers for structured questions
  • Teams: structured numbered text prompts + text answers (buttons deferred until Adaptive Card support exists)

mrubens added 2 commits July 19, 2026 16:28
Skip OpenCode empty question shells on Slack and Linear. Publish and answer
structured prompts on Teams (text) and Telegram (text + buttons), reusing the
shared communication pending-state path from Discord.
@roomote-roomote

roomote-roomote Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor Author

No code issues found. See task

  • packages/sdk/src/server/lib/communication-request-user-input.ts:130 Posts use the pending-state conversation key as channelId. For a Teams channel thread that key is the root activity ID, and for a Telegram topic it is the topic ID, but both providers require the original conversation/chat ID plus the thread ID. New structured prompts therefore fail to post in Teams threads and Telegram topics. Keep channelId for the destination and pass threadId only as the reply/topic scope.

Reviewed 7182765

@mrubens

mrubens commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

@roomote-roomote pls fix the tests

@roomote-roomote

Copy link
Copy Markdown
Contributor Author

I'm on it. I routed this request into the existing PR task so follow-up work stays on one Roomote thread for this PR, and I'll keep updates here. See task

Also post Teams/Telegram structured prompts to the chat/conversation id
with threadId as reply/topic scope only.
@roomote-roomote

Copy link
Copy Markdown
Contributor Author

Fixed the failing worker tests:

  • Slack/Linear mocks now include isOpenCodeQuestionPlaceholderRequest
  • Expectations updated so OpenCode empty shells are skipped (richer question posts once)

Also addressed the thread/topic posting issue: Teams and Telegram now post with the real chat/conversation channelId and only pass threadId as reply/topic scope.

@mrubens
mrubens marked this pull request as ready for review July 19, 2026 17:58
@mrubens
mrubens merged commit 5cd1a47 into develop Jul 19, 2026
18 checks passed
@mrubens
mrubens deleted the fix/comms-rui-placeholder-and-parity-2xiyizeolznbn branch July 19, 2026 18:00
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.

1 participant