Files
kandev/apps/web/lib/api/domains/queue-api.ts
T
2026-02-07 16:04:01 +00:00

56 lines
1.7 KiB
TypeScript

import type { QueueStatus, QueuedMessage } from '@/lib/state/slices/session/types';
import { getWebSocketClient } from '@/lib/ws/connection';
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<QueuedMessage> {
const client = getWebSocketClient();
if (!client) {
throw new Error('WebSocket client not available');
}
return client.request<QueuedMessage>('message.queue.add', params);
}
// Cancel a queued message
export async function cancelQueuedMessage(sessionId: string): Promise<QueuedMessage> {
const client = getWebSocketClient();
if (!client) {
throw new Error('WebSocket client not available');
}
return client.request<QueuedMessage>('message.queue.cancel', { session_id: sessionId });
}
// Get queue status for a session
export async function getQueueStatus(sessionId: string): Promise<QueueStatus> {
const client = getWebSocketClient();
if (!client) {
throw new Error('WebSocket client not available');
}
return client.request<QueueStatus>('message.queue.get', { session_id: sessionId });
}
// Update queued message content (for arrow up editing)
export async function updateQueuedMessage(
sessionId: string,
content: string
): Promise<QueueStatus> {
const client = getWebSocketClient();
if (!client) {
throw new Error('WebSocket client not available');
}
return client.request<QueueStatus>('message.queue.update', { session_id: sessionId, content });
}