/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------------------------------------------*/
package com.github.copilot.sdk.json;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
* Options for sending a message to a Copilot session.
*
* This class specifies the message content and optional attachments to send to
* the assistant. All setter methods return {@code this} for method chaining.
*
*
Example Usage
*
*
{@code
* var options = new MessageOptions().setPrompt("Explain this code")
* .setAttachments(List.of(new Attachment("file", "/path/to/file.java", null)));
*
* session.send(options).get();
* }
*
*
Blob Attachment Example
*
*
{@code
* var options = new MessageOptions().setPrompt("Describe this image").setAttachments(List.of(new BlobAttachment()
* .setData("iVBORw0KGgoAAAANSUhEUg...").setMimeType("image/png").setDisplayName("screenshot.png")));
*
* session.send(options).get();
* }
*
* @see com.github.copilot.sdk.CopilotSession#send(MessageOptions)
* @since 1.0.0
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MessageOptions {
private String prompt;
private List