Skip to content

Real group names for Lark, Slack and Discord sources (#1151) - #1160

Merged
DoodleBears merged 14 commits into
mainfrom
claude/1151-real-names
Oct 8, 2026
Merged

DoodleBears merged 14 commits into
mainfrom
claude/1151-real-names

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Closes #1151 · Parent #1144 · Stacked on #1148 (will retarget to main once it merges)

Before: a group from Lark, Slack or Discord showed up everywhere as its ID: in External identities, in a connected external conversation, on the message in the Channel, and in what the Bot read. Lark sender names often fell back to the open_id, because the 1.5 s lookup timed out.

After: the real group name is shown. Discord reads as Server #channel. The Bot sees the name, and the ID stays next to it in the context. Existing entries pick up the name with their next message. A failed lookup falls back to the ID and never blocks the message.

How

  • dsh-im (DoodleBears/dsh-im claude/1151-real-names, pinned at a0ba283, on top of the previous pin):
    • Lark looks up im.v1.chat.get in parallel with the sender name. Both are cached per app (names 1 h, misses 1 min), and the timeout is 3 s.
    • Slack reuses the conversations.info result it already checks.
    • Discord reuses the guild and parent channel it already inspects.
    • The host bundle in lib/ is rebuilt, since that bundle is what DSH actually loads.
  • Host:
    • MessagingInboundEvent.conversation.name is optional, and the dsh-im schema accepts it.
    • conversationName() uses it for groups.
    • Group entries are renamed when a named message arrives. DM entries are renamed from the sender name, implicit entries only.
    • Grant-routed and connected-conversation sources take the event's group name. A connected conversation keeps its last known name.
  • The development IM provider is repinned.

Real-IM E2E (cloud QA Host, 2026-10-07/08)

Vain sent real messages in the Lark group "BH Cloud QA", in Slack #bh-cloud-qa and in Discord "DeepSeekBot Cloud QA" #常规. Every source arrived with its name: BH Cloud QA, bh-cloud-qa and DeepSeekBot Cloud QA #常规. The Lark sender showed as MUFENG YANG instead of the open_id. The existing entries for all three platforms and the connected Lark conversation were renamed by the next message. Lark, Slack and Discord each got a reply.

One gap came up during E2E. A Lark @mention that went through the grant path still recorded the ID as its Channel origin. 19e0122 fixes this. On 2026-10-08, two new Lark @mentions showed Lark/Feishu BH Cloud QA (second screenshot).

🤖 Generated with Claude Code

https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC

claude added 5 commits October 7, 2026 19:32
…1145)

A group Channel can connect a known group of a bound app. Every message is
placed in the Channel as a Source Event anchored to the ingest, member Bots
get context-only admissions by default, and the ingest's wake setting can
switch to digest or every message. Pause and Delete keep history.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
…#1151)

Inbound evidence may carry conversation.name; group entries, held
entries, connected conversations and placed sources show it and pick up
renames with the next message. Repins the development IM provider to the
dsh-im build that looks the names up.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 20 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 4b4e06f8-4e3c-4b67-8ccb-d6a9d24a2f75
📥 Commits

Reviewing files that changed from the base of the PR and between 006c0fa and 2f9abb1.

⛔ Files ignored due to path filters (6)
  • docs/assets/pr/1151-real-names/channel-lark.png is excluded by !**/*.png
  • docs/assets/pr/1151-real-names/discord-conversations.png is excluded by !**/*.png
  • docs/assets/pr/1151-real-names/ingest-row.png is excluded by !**/*.png
  • docs/assets/pr/1151-real-names/lark-conversations.png is excluded by !**/*.png
  • docs/assets/pr/1151-real-names/lark-mention.png is excluded by !**/*.png
  • docs/assets/pr/1151-real-names/slack-conversations.png is excluded by !**/*.png
📒 Files selected for processing (9)
  • CHANGELOG.md
  • CHANGELOG.zh.md
  • docs/assets/pr/1151-real-names/README.md
  • packages/core/src/messaging/conversations.ts
  • packages/core/src/messaging/dsh-im.ts
  • packages/core/src/messaging/inbound.ts
  • packages/core/src/messaging/provider.ts
  • packages/core/test/messaging-conversation-ingest.test.ts
  • scripts/dev-im-provider.mjs
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

claude added 3 commits October 7, 2026 21:04
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
#1151)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
@DoodleBears
DoodleBears marked this pull request as ready for review October 7, 2026 21:41
claude added 5 commits October 8, 2026 04:58
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
…; glossary wake wording (#1145)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
origin/main's tree equals f2662de, already merged above.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
@DoodleBears
DoodleBears changed the base branch from claude/1145-lark-group-ingest to main October 8, 2026 05:27
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TukXcCoCAFsqkoHCthVEKC
@DoodleBears
DoodleBears merged commit 4b82a41 into main Oct 8, 2026
3 checks passed
@DoodleBears
DoodleBears deleted the claude/1151-real-names branch October 28, 2026 04:24
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.

External messages show real group and sender names (Lark, Slack, Discord)

2 participants