import {DocAction} from 'app/common/DocActions'; /** * State related to a request for assistance. * * If an AssistanceResponse contains state, that state can be * echoed back in an AssistanceRequest to continue a "conversation." * * Ideally, the state should not be modified or relied upon * by the client, so as not to commit too hard to a particular * model at this time (it is a bit early for that). */ export interface AssistanceState { messages?: AssistanceMessage[]; } export interface AssistanceMessage { role: string; content: string; } /** * Currently, requests for assistance always happen in the context * of the column of a particular table. */ export interface FormulaAssistanceContext { type: 'formula'; tableId: string; colId: string; evaluateCurrentFormula?: boolean; rowId?: number; } export type AssistanceContext = FormulaAssistanceContext; /** * A request for assistance. */ export interface AssistanceRequest { conversationId: string; context: AssistanceContext; state?: AssistanceState; text: string; } /** * A response to a request for assistance. * The client should preserve the state and include it in * any follow-up requests. */ export interface AssistanceResponse { suggestedActions: DocAction[]; suggestedFormula?: string; state?: AssistanceState; // If the model can be trusted to issue a self-contained // markdown-friendly string, it can be included here. reply?: string; limit?: AssistanceLimit; } export interface AssistanceLimit { usage: number; limit: number; }