import { toSocketIo } from "@mswjs/socket.io-binding"; import { AgentState } from "#/types/agent-state"; import { AssistantMessageAction, UserMessageAction, } from "#/types/core/actions"; import { AgentStateChangeObservation } from "#/types/core/observations"; import { MockSessionMessaage } from "./session-history.mock"; export const generateAgentStateChangeObservation = ( state: AgentState, ): AgentStateChangeObservation => ({ id: 1, cause: 0, message: "AGENT_STATE_CHANGE_MESSAGE", source: "agent", timestamp: new Date().toISOString(), observation: "agent_state_changed", content: "AGENT_STATE_CHANGE_MESSAGE", extras: { agent_state: state }, }); export const generateAssistantMessageAction = ( message: string, ): AssistantMessageAction => ({ id: 2, message: "USER_MESSAGE", source: "agent", timestamp: new Date().toISOString(), action: "message", args: { thought: message, image_urls: [], wait_for_response: false, }, }); export const generateUserMessageAction = ( message: string, ): UserMessageAction => ({ id: 3, message: "USER_MESSAGE", source: "user", timestamp: new Date().toISOString(), action: "message", args: { content: message, image_urls: [], }, }); export const emitAssistantMessage = ( io: ReturnType, message: string, ) => io.client.emit("oh_event", generateAssistantMessageAction(message)); export const emitUserMessage = ( io: ReturnType, message: string, ) => io.client.emit("oh_event", generateUserMessageAction(message)); export const emitMessages = ( io: ReturnType, messages: MockSessionMessaage[], ) => { messages.forEach(({ source, message }) => { if (source === "assistant") { emitAssistantMessage(io, message); } else { emitUserMessage(io, message); } }); };