UNPKG

@artinet/sdk

Version:
109 lines 3.88 kB
import { getCurrentTimestamp } from "../../../utils/common/utils.js"; import { logError } from "../../../utils/logging/log.js"; import { processArtifactUpdate } from "../state.js"; export var UpdateKind; (function (UpdateKind) { UpdateKind["Message"] = "message"; UpdateKind["Task"] = "task"; UpdateKind["StatusUpdate"] = "status-update"; UpdateKind["ArtifactUpdate"] = "artifact-update"; })(UpdateKind || (UpdateKind = {})); const isMessageInHistory = (task, message) => { return task.history?.find((msg) => msg.messageId === message.messageId); }; const updateHistory = (current, updateMessage) => { if (!isMessageInHistory(current.task, updateMessage)) { current.history = [...(current.history ?? []), updateMessage]; current.task.history = [...(current.task.history ?? []), updateMessage]; } }; export const updateMessage = async (props) => { const { context, update } = props; if (!update || update.kind !== UpdateKind.Message) { logError("updateMessage", "Invalid update", update); return false; } context.latestUserMessage = update; return true; }; export const updateTask = async (props) => { const { context, current, update } = props; if (!update || update.kind !== UpdateKind.Task) { logError("updateTask", "Invalid update kind", update); return false; } current.task = { ...current.task, ...update }; if (context.latestUserMessage && !isMessageInHistory(current.task, context.latestUserMessage)) { current.task.history = [ context.latestUserMessage, ...(current.task.history ?? []), ]; current.history = [context.latestUserMessage, ...(current.history ?? [])]; } return true; }; export const updateTaskStatusUpdate = async (props) => { const { current, update } = props; if (!update || update.kind !== UpdateKind.StatusUpdate) { logError("updateTaskStatusUpdate", "Invalid update kind", update); return false; } if (current.task.id === update.taskId) { current.task.status = update.status; current.task.status.timestamp = getCurrentTimestamp(); if (update.status.message) { updateHistory(current, update.status.message); } return true; } logError("updateTaskStatusUpdate", "Invalid task id", update); return false; }; export const updateTaskArtifactUpdate = async (props) => { const { current, update } = props; if (!update || update.kind !== UpdateKind.ArtifactUpdate) { logError("updateTaskArtifactUpdate", "Invalid update kind", update); return false; } if (current.task.id === update.taskId) { current.task.artifacts = processArtifactUpdate(update.append ?? false, current.task.artifacts ?? [], update.artifact); } return true; }; export const update = async (props) => { const { context, current, update } = props; if (!update || !update.kind) { logError("update", "Invalid update", update); return false; } switch (update.kind) { case UpdateKind.Message: return updateMessage({ context, current, update: update, }); case UpdateKind.Task: return updateTask({ context, current, update: update, }); case UpdateKind.StatusUpdate: return updateTaskStatusUpdate({ context, current, update: update, }); case UpdateKind.ArtifactUpdate: return updateTaskArtifactUpdate({ context, current, update: update, }); default: return false; } }; //# sourceMappingURL=base.js.map