UNPKG

rhombus-node-mcp

Version:
126 lines (125 loc) 3.96 kB
import { postApi } from "../network/network.js"; export async function getSavedClips(args, requestModifiers, sessionId) { const res = await postApi({ route: "/event/getClipsWithProgress", body: args, modifiers: requestModifiers, sessionId, }); if (res.error) return { error: res.errorMsg ?? undefined }; return { savedClips: res.savedClips?.map((clip) => ({ ...clip, createdAtTimestamp: clip.createdAtMs ? new Date(clip.createdAtMs).toISOString() : null, })) ?? [], }; } export async function getExpiringClips(args, requestModifiers, sessionId) { const res = await postApi({ route: "/event/getExpiringClipsForOrg", body: args, modifiers: requestModifiers, sessionId, }); if (res.error) return { error: res.errorMsg ?? undefined }; return { expiringClips: res.savedClips?.map((clip) => ({ ...clip, createdAtTimestamp: clip.createdAtMs ? new Date(clip.createdAtMs).toISOString() : null, })) ?? [], }; } export async function getSharedLiveStreams(_args, requestModifiers, sessionId) { const res = await postApi({ route: "/camera/findAllSharedLiveVideoStreams", body: {}, modifiers: requestModifiers, sessionId, }); if (res.error) return { error: res.errorMsg ?? undefined }; return { sharedLiveVideoStreams: res.sharedLiveVideoStreams ?? [], }; } export async function getTimelapseClips(_args, requestModifiers, sessionId) { const res = await postApi({ route: "/video/getTimelapseClips", body: {}, modifiers: requestModifiers, sessionId, }); if (res.error) return { error: res.errorMsg ?? undefined }; return { timelapseClips: res.timelapseClips ?? [], }; } export async function getClipGroups(requestModifiers, sessionId) { const res = await postApi({ route: "/event/getClipGroupsForOrg", body: {}, modifiers: requestModifiers, sessionId, }); if (res.error) throw new Error(JSON.stringify(res)); return { clipGroups: (res.clipGroups || []).map((group) => ({ uuid: group.uuid ?? undefined, name: group.name ?? undefined, clipCount: group.clipCount ?? undefined, })), }; } export async function getSharedClipGroups(requestModifiers, sessionId) { const res = await postApi({ route: "/event/getSharedClipGroupsV2", body: {}, modifiers: requestModifiers, sessionId, }); if (res.error) throw new Error(JSON.stringify(res)); return { sharedClipGroups: (res.sharedClipGroups || []).map((group) => ({ uuid: group.uuid ?? undefined, name: group.title ?? undefined, })), }; } export async function createClip(cameraUuid, startTimeMs, endTimeMs, requestModifiers, sessionId) { const durationSec = Math.round((endTimeMs - startTimeMs) / 1000); const body = { deviceUuids: [cameraUuid], startTimeMillis: startTimeMs, durationSec, saveToConsole: true, }; const res = await postApi({ route: "/video/spliceV3", body, modifiers: requestModifiers, sessionId, }); if (res.error) throw new Error(JSON.stringify(res)); return { spliceResult: { success: true, clipUuid: res.clipUuid ?? undefined } }; } export async function deleteClip(clipUuid, requestModifiers, sessionId) { const res = await postApi({ route: "/event/deleteSavedClip", body: { savedClipUuid: clipUuid }, modifiers: requestModifiers, sessionId, }); if (res.error) throw new Error(JSON.stringify(res)); return { deleteResult: { success: true } }; }