Uh oh!
There was an error while loading. Please reload this page.
feat(google-chat,ms-teams): emit classifier facets on chat links - #382
Merged
Conversation
Google Chat and Microsoft Teams links now carry classifier facets
({format, automation, reach}), matching the Slack and other messaging
connectors so the platform can tell real people's conversations apart
from bot traffic:
- Direct and group chats are facetted as direct-reach chat, judged over
the whole message batch: only an all-bot conversation is automated,
and a single human-shaped message keeps it human (fail-open — a
muteable automated verdict that hides a real person is the one
failure classification must never produce).
- Named-space / channel threads are facetted as list-reach, judged from
the thread's parent message, with long posts reading as message
rather than chat.
- Google Chat judges bot-shape from the sender's explicit HUMAN/BOT
type; Teams from application-sent messages (or a missing human
sender), excluding system event messages from the judgement.
Both connectors get unit coverage for the facet functions and the
transform stamping; google-chat gains its vitest setup.
Claude-Session: https://claude.ai/code/session_01FHoQc2TdA62Wp4BwUxvR6P
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
Summary
Google Chat and Microsoft Teams links now carry classifier facets (
{format, automation, reach}), completing the sweep that gave Slack (#381) and the other messaging connectors this signal. The facets let the platform tell real people's conversations apart from bot traffic without content inspection.{format: chat, reach: direct}, withautomationjudged over the whole message batch: only an all-bot conversation isautomated, and a single human-shaped message keeps ithuman. This is deliberately fail-open — a muteableautomatedverdict that hides a real person is the one failure classification must never produce.reach: list, judged from the thread's parent message, with long posts reading asmessagerather thanchat(same 1000-char rule as Slack).sender.type(HUMAN/BOT); Teams'from.application(or a message with no human sender). Teams system event messages are excluded from the judgement, mirroring their exclusion from the synced notes.Google Chat's space type isn't on the message resource, so the space/dm distinction is passed into
transformChatThreadfrom the sync path, which always knows which kind of space it is walking.Test plan
googleChatThreadFacets/googleChatDmFacets/teamsChannelFacets/teamsDmFacets, including the fail-open cases (mixed batches, empty batches, missing sender types) and the stripped-HTML length rule.google-chatgains its vitest setup (config + script + devDep); existing ms-teams and slack suites still pass.🤖 Generated with Claude Code
https://claude.ai/code/session_01FHoQc2TdA62Wp4BwUxvR6P