/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. *--------------------------------------------------------------------------------------------*/ package com.github.copilot.sdk.events; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.Collections; import java.util.List; /** * Event representing a complete message from the assistant. *
* This event is fired when the assistant has finished generating a response. * For streaming responses, use {@link AssistantMessageDeltaEvent} instead. * *
{@code
* session.on(event -> {
* if (event instanceof AssistantMessageEvent msg) {
* String content = msg.getData().content();
* System.out.println("Assistant: " + content);
* }
* });
* }
*
* @see AssistantMessageDeltaEvent
* @see AbstractSessionEvent
* @since 1.0.0
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public final class AssistantMessageEvent extends AbstractSessionEvent {
@JsonProperty("data")
private AssistantMessageData data;
/**
* {@inheritDoc}
*
* @return "assistant.message"
*/
@Override
public String getType() {
return "assistant.message";
}
/**
* Gets the message data.
*
* @return the message data containing content and tool requests
*/
public AssistantMessageData getData() {
return data;
}
/**
* Sets the message data.
*
* @param data
* the message data
*/
public void setData(AssistantMessageData data) {
this.data = data;
}
/**
* Contains the assistant message content and metadata.
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public record AssistantMessageData(@JsonProperty("messageId") String messageId,
@JsonProperty("content") String content, @JsonProperty("toolRequests") List