From b7fed8df16495a6ad51c0a034039e1572fe99a72 Mon Sep 17 00:00:00 2001 From: Disfractal <67520561+Disfractal@users.noreply.github.com> Date: Tue, 29 Oct 2024 14:50:36 -0700 Subject: [PATCH] feat: adding S2C logs to conversation history (#300) --- packages/web-core/CHANGELOG.md | 1 + packages/web-core/src/components/history.ts | 38 +++++++++++++++++++-- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/packages/web-core/CHANGELOG.md b/packages/web-core/CHANGELOG.md index ff0e291..5ccfc07 100644 --- a/packages/web-core/CHANGELOG.md +++ b/packages/web-core/CHANGELOG.md @@ -4,6 +4,7 @@ - Server to Client log events - Latency reporting support +- S2C logs added to conversation history ### Changed diff --git a/packages/web-core/src/components/history.ts b/packages/web-core/src/components/history.ts index 2ce2bc8..3793e9d 100644 --- a/packages/web-core/src/components/history.ts +++ b/packages/web-core/src/components/history.ts @@ -5,6 +5,7 @@ import { ConversationMapItem, Extension, InworlControlAction, + LogLevel, TaskParameter, TriggerParameter, User, @@ -26,12 +27,13 @@ interface InworldHistoryAddProps { export enum CHAT_HISTORY_TYPE { ACTOR = 'actor', + CONVERSATION_UPDATE = 'conversation_update', + INTERACTION_END = 'interaction_end', + LOG_EVENT = 'log_event', NARRATED_ACTION = 'narrated_action', + SCENE_CHANGE = 'scene_change', TRIGGER_EVENT = 'trigger_event', TASK_EVENT = 'task_event', - INTERACTION_END = 'interaction_end', - SCENE_CHANGE = 'scene_change', - CONVERSATION_UPDATE = 'conversation_update', } export interface HistoryItemBase { @@ -84,6 +86,13 @@ export interface HistoryItemNarratedAction extends HistoryItemBase { characters?: Character[]; } +export interface HistoryItemLogEvent extends HistoryItemBase { + type: CHAT_HISTORY_TYPE.LOG_EVENT; + text: string; + level: LogLevel; + metadata?: Record; +} + export interface HistoryItemSceneChange { date: Date; id: string; @@ -115,6 +124,7 @@ export interface HistoryItemConversationUpdate { export type HistoryItem = | HistoryItemActor + | HistoryItemLogEvent | HistoryItemTriggerEvent | HistoryItemTaskEvent | HistoryInteractionEnd @@ -254,6 +264,13 @@ export class InworldHistory< }; break; + case packet.isLog(): + historyItem = { + ...this.combineLogItem(packet), + fromHistory, + }; + break; + case packet.isInteractionEnd(): const controlItem: HistoryInteractionEnd = { ...this.combineInteractionEndItem(packet), @@ -685,6 +702,21 @@ export class InworldHistory< }; } + private combineLogItem(packet: InworldPacketT): HistoryItemLogEvent { + return { + id: packet.packetId.utteranceId, + scene: this.scene, + conversationId: packet.packetId.conversationId, + date: new Date(packet.date), + interactionId: packet.packetId.interactionId, + level: packet.log.level, + metadata: packet.log.metadata, + source: packet.routing.source, + text: packet.log.text, + type: CHAT_HISTORY_TYPE.LOG_EVENT, + }; + } + private convertToExtendedType(packet: InworldPacketT, item: HistoryItem) { return this.extension?.historyItem?.(packet, item) || item; }