Entangled: add DMessage metadata

This commit is contained in:
Enrico Ros
2025-07-22 07:10:57 -07:00
parent 54c23a9907
commit ebc28ed8a4
+18 -2
View File
@@ -47,6 +47,8 @@ export type DMessageRole = 'user' | 'assistant' | 'system';
export interface DMessageMetadata {
inReferenceTo?: DMetaReferenceItem[]; // text this was in reply to
entangled?: DMessageEntangled; // entangled messages info
// NOTE: if adding fields, manually update `duplicateDMessageMetadata`
}
/** A textual reference to a text snipped, by a certain role. */
@@ -57,6 +59,13 @@ export interface DMetaReferenceItem {
// messageId?: string;
}
/** Entangled messages info for coordinated multi-chat operations. */
export interface DMessageEntangled {
id: string; // entanglement group ID
color: string; // hex color for visual connection
count: number; // total number of chats this was sent to
}
// Message > User Flags
@@ -169,8 +178,15 @@ export function duplicateDMessage(message: Readonly<DMessage>, skipVoid: boolean
}
export function duplicateDMessageMetadata(metadata: Readonly<DMessageMetadata>): DMessageMetadata {
// TODO: deep copy this?
return { ...metadata };
// NOTE: update this function when adding metadata fields
return {
...(metadata.inReferenceTo ? {
inReferenceTo: metadata.inReferenceTo.map(refItem => ({ ...refItem })),
} : {}),
...(metadata.entangled ? {
entangled: { ...metadata.entangled },
} : {}),
};
}
export function duplicateDMessageGenerator(generator: Readonly<DMessageGenerator>): DMessageGenerator {