// [DEF:frontend.src.lib.api.assistant:Module] // @TIER: STANDARD // @SEMANTICS: assistant, api, client, chat, confirmation // @PURPOSE: API client wrapper for assistant chat, confirmation actions, and history retrieval. // @LAYER: Infra-API // @RELATION: DEPENDS_ON -> frontend.src.lib.api.api_module // @INVARIANT: All assistant requests must use requestApi wrapper (no native fetch). import { requestApi } from '$lib/api.js'; // [DEF:sendAssistantMessage:Function] // @PURPOSE: Send a user message to assistant orchestrator endpoint. // @PRE: payload.message is a non-empty string. // @POST: Returns assistant response object with deterministic state. export function sendAssistantMessage(payload) { return requestApi('/assistant/messages', 'POST', payload); } // [/DEF:sendAssistantMessage:Function] // [DEF:confirmAssistantOperation:Function] // @PURPOSE: Confirm a pending risky assistant operation. // @PRE: confirmationId references an existing pending token. // @POST: Returns execution response (started/success/failed). export function confirmAssistantOperation(confirmationId) { return requestApi(`/assistant/confirmations/${confirmationId}/confirm`, 'POST'); } // [/DEF:confirmAssistantOperation:Function] // [DEF:cancelAssistantOperation:Function] // @PURPOSE: Cancel a pending risky assistant operation. // @PRE: confirmationId references an existing pending token. // @POST: Operation is cancelled and cannot be executed by this token. export function cancelAssistantOperation(confirmationId) { return requestApi(`/assistant/confirmations/${confirmationId}/cancel`, 'POST'); } // [/DEF:cancelAssistantOperation:Function] // [DEF:getAssistantHistory:Function] // @PURPOSE: Retrieve paginated assistant conversation history. // @PRE: page/pageSize are positive integers. // @POST: Returns a paginated payload with history items. export function getAssistantHistory(page = 1, pageSize = 20, conversationId = null) { const params = new URLSearchParams({ page: String(page), page_size: String(pageSize) }); if (conversationId) { params.append('conversation_id', conversationId); } return requestApi(`/assistant/history?${params.toString()}`, 'GET'); } // [/DEF:getAssistantHistory:Function] // [/DEF:frontend.src.lib.api.assistant:Module]