Merge root message entities in Activity#590
Conversation
There was a problem hiding this comment.
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 roothttps://schema.org/Messageentities and merge them into the existing root message entity instead of appending. - Updated
Activity.addEntities()to route throughaddEntity()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.
| if (target.additionalType || source.additionalType) { | ||
| merged.additionalType = [ | ||
| ...new Set([...(target.additionalType || []), ...(source.additionalType || [])]), | ||
| ]; | ||
| } | ||
|
|
||
| if (target.citation || source.citation) { | ||
| merged.citation = [...(target.citation || []), ...(source.citation || [])]; | ||
| } |
There was a problem hiding this comment.
Good point. We should use the claim.position here to do the dedupe. Take the newest one.
There was a problem hiding this comment.
Updated in 7a672df: citations are now deduplicated by Claim.position during root message entity merge, with later entries taking precedence.
Summary
Why this matters
Test plan