

export interface LLMInvoker {
  invoke(messages: UserMessage[], memories: Memory[]): Promise<InvokeModelCommandOutput>;
}

export interface InvokeModelCommandOutput {
  message: UserMessage;
  usage: {
    promptTokens: number;
    completionTokens: number;
    totalTokens: number;
  };
  raw: any; // Adjust type as needed based on the actual response structure
}

export interface UserMessage {
  role: 'user' | 'assistant'
  content: string
}

export interface Memory {
  /**
   * Arbitrary context you want the model to “remember”,
   * e.g. user preferences, past conversation snippets, etc.
   */
  content: string
}