import type { QueueStatus, QueuedMessage } from "@/lib/state/slices/session/types"; import { getWebSocketClient } from "@/lib/ws/connection"; const WS_CLIENT_UNAVAILABLE = "WebSocket client not available"; export type QueueMessageParams = { session_id: string; task_id: string; content: string; model?: string; plan_mode?: boolean; attachments?: Array<{ type: string; data: string; mime_type: string }>; user_id?: string; }; // Queue a message for auto-execution export async function queueMessage(params: QueueMessageParams): Promise { const client = getWebSocketClient(); if (!client) { throw new Error(WS_CLIENT_UNAVAILABLE); } return client.request("message.queue.add", params); } // Cancel a queued message export async function cancelQueuedMessage(sessionId: string): Promise { const client = getWebSocketClient(); if (!client) { throw new Error(WS_CLIENT_UNAVAILABLE); } return client.request("message.queue.cancel", { session_id: sessionId }); } // Get queue status for a session export async function getQueueStatus(sessionId: string): Promise { const client = getWebSocketClient(); if (!client) { throw new Error(WS_CLIENT_UNAVAILABLE); } return client.request("message.queue.get", { session_id: sessionId }); } // Append content to an existing queued message, or create a new one if none exists export async function appendToQueue(params: { session_id: string; task_id: string; content: string; model?: string; plan_mode?: boolean; }): Promise { const client = getWebSocketClient(); if (!client) { throw new Error(WS_CLIENT_UNAVAILABLE); } return client.request("message.queue.append", params); } // Update queued message content (for arrow up editing) export async function updateQueuedMessage( sessionId: string, content: string, ): Promise { const client = getWebSocketClient(); if (!client) { throw new Error(WS_CLIENT_UNAVAILABLE); } return client.request("message.queue.update", { session_id: sessionId, content }); }