UNPKG

assistant-cloud

Version:

Cloud integration for assistant-ui

89 lines (88 loc) • 4.15 kB
import { readCloudArray, readCloudEnum, readCloudInteger, readCloudJSONObject, readCloudNullableString, readCloudNumber, readCloudRecord, readCloudString, readCloudTimestamp } from "./cloudResponse.js"; // src/AssistantCloudThreadMessages.ts const RUN_STATUSES = ["running", "ended"]; const decodeCloudMessageRun = (value, field) => { if (value === void 0 || value === null) return void 0; const run = readCloudRecord(value, field); return { status: readCloudEnum(run.status, `${field}.status`, RUN_STATUSES), last_heartbeat_ms_ago: readCloudNumber(run.last_heartbeat_ms_ago, `${field}.last_heartbeat_ms_ago`) }; }; /** Reads the lease fields of a response that granted or renewed one. */ const decodeCloudRunLease = (response) => ({ lease_id: readCloudString(response.lease_id, "lease_id"), heartbeat_interval_ms: readCloudNumber(response.heartbeat_interval_ms, "heartbeat_interval_ms") }); const MESSAGE_FEEDBACK_TYPES = ["positive", "negative"]; const decodeCloudMessage = (value, field) => { const message = readCloudRecord(value, field); return { id: readCloudString(message.id, `${field}.id`), parent_id: readCloudNullableString(message.parent_id, `${field}.parent_id`), height: readCloudInteger(message.height, `${field}.height`), created_at: readCloudTimestamp(message.created_at, `${field}.created_at`), updated_at: readCloudTimestamp(message.updated_at, `${field}.updated_at`), format: readCloudString(message.format, `${field}.format`), content: readCloudJSONObject(message.content, `${field}.content`), external_id: readCloudNullableString(message.external_id ?? null, `${field}.external_id`), ...message.run !== void 0 && message.run !== null ? { run: decodeCloudMessageRun(message.run, `${field}.run`) } : void 0 }; }; var AssistantCloudThreadMessages = class { cloud; constructor(cloud) { this.cloud = cloud; } async list(threadId, query) { const response = readCloudRecord(await this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}/messages`, { query }), "thread message list response"); return { messages: readCloudArray(response.messages, "messages").map((message, index) => decodeCloudMessage(message, `messages[${index}]`)) }; } async create(threadId, body) { const response = readCloudRecord(await this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}/messages`, { method: "POST", body: { parent_id: body.parent_id, format: body.format, content: body.content, ...body.external_id !== void 0 ? { external_id: body.external_id } : void 0, ...body.parent_external_id !== void 0 ? { parent_external_id: body.parent_external_id } : void 0, ...body.open_run ? { open_run: true } : void 0, ...body.lease_id !== void 0 ? { lease_id: body.lease_id } : void 0 } }), "thread message create response"); return { message_id: readCloudString(response.message_id, "message_id"), ...response.lease_id !== void 0 ? { run: decodeCloudRunLease(response) } : void 0 }; } async update(threadId, messageId, body) { return this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}/messages/${encodeURIComponent(messageId)}`, { method: "PUT", body }); } async delete(threadId, messageIds) { return this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}/messages`, { method: "DELETE", body: { message_ids: messageIds } }); } async feedback(threadId, messageId, body) { const comment = body.comment?.trim(); const response = readCloudRecord(await this.cloud.makeRequest(`/threads/${encodeURIComponent(threadId)}/messages/${encodeURIComponent(messageId)}/feedback`, { method: "POST", body: { type: body.type, ...comment ? { comment } : void 0 } }), "thread message feedback response"); return { feedback_id: readCloudString(response.feedback_id, "feedback_id"), type: readCloudEnum(response.type, "type", MESSAGE_FEEDBACK_TYPES), ..."comment" in response ? { comment: readCloudNullableString(response.comment, "comment") } : void 0 }; } }; export { AssistantCloudThreadMessages, decodeCloudMessage }; //# sourceMappingURL=AssistantCloudThreadMessages.js.map