Skip to content

Merge root message entities in Activity#590

Open
heyitsaamir wants to merge 2 commits into
mainfrom
fix/httpstream-root-message-merge
Open

Merge root message entities in Activity#590
heyitsaamir wants to merge 2 commits into
mainfrom
fix/httpstream-root-message-merge

Conversation

@heyitsaamir
Copy link
Copy Markdown
Collaborator

@heyitsaamir heyitsaamir commented May 21, 2026

Summary

  • Make Activity.addEntity/addEntities merge root schema.org Message entities instead of blindly appending them
  • Keep AI-generated labels and citations on one root message entity
  • Add regression coverage in the Activity tests

Why this matters

  • This shows up when a message is assembled in pieces, like streaming a response or combining multiple helpers that each add root Message metadata
  • Before this change, those pieces could leave you with multiple root Message entities on the same activity, which Teams doesn’t love
  • In practice that means features like AI-generated markers and citations could get split across duplicate root entities

Test plan

  • cd packages/api && npx jest --runInBand src/activities/activity.spec.ts
  • cd packages/apps && npx jest --runInBand src/http/http-stream.spec.ts

Copilot AI review requested due to automatic review settings May 21, 2026 22:48
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Activity entity handling so that multiple root schema.org Message entities are merged into a single root message entity, ensuring properties like AI-generated labels (additionalType) and citations are consolidated rather than duplicated across multiple root entities.

Changes:

  • Updated Activity.addEntity() to detect root https://schema.org/Message entities and merge them into the existing root message entity instead of appending.
  • Updated Activity.addEntities() to route through addEntity() so the same merge behavior applies to batch additions.
  • Added a regression test covering merge behavior when adding multiple root message entities alongside other entity types.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
packages/api/src/activities/activity.ts Implements root message entity detection + merge logic, and updates addEntities() to reuse addEntity() semantics.
packages/api/src/activities/activity.spec.ts Adds regression coverage to ensure multiple root message entities are merged into one and retain key properties.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

Comment on lines +504 to 512
if (target.additionalType || source.additionalType) {
merged.additionalType = [
...new Set([...(target.additionalType || []), ...(source.additionalType || [])]),
];
}

if (target.citation || source.citation) {
merged.citation = [...(target.citation || []), ...(source.citation || [])];
}
Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. We should use the claim.position here to do the dedupe. Take the newest one.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in 7a672df: citations are now deduplicated by Claim.position during root message entity merge, with later entries taking precedence.

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.

4 participants