/*---------------------------------------------------------------------------------------------
* 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.List;
import java.util.Map;
/**
* Event: session.shutdown
*
* This event is emitted when a session is shutting down, either routinely or
* due to an error. It contains metrics about the session's usage.
*
* @since 1.0.0
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public final class SessionShutdownEvent extends AbstractSessionEvent {
@JsonProperty("data")
private SessionShutdownData data;
@Override
public String getType() {
return "session.shutdown";
}
public SessionShutdownData getData() {
return data;
}
public void setData(SessionShutdownData data) {
this.data = data;
}
/**
* Data for the session shutdown event.
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class SessionShutdownData {
@JsonProperty("shutdownType")
private ShutdownType shutdownType;
@JsonProperty("errorReason")
private String errorReason;
@JsonProperty("totalPremiumRequests")
private double totalPremiumRequests;
@JsonProperty("totalApiDurationMs")
private double totalApiDurationMs;
@JsonProperty("sessionStartTime")
private double sessionStartTime;
@JsonProperty("codeChanges")
private CodeChanges codeChanges;
@JsonProperty("modelMetrics")
private Map modelMetrics;
@JsonProperty("currentModel")
private String currentModel;
public ShutdownType getShutdownType() {
return shutdownType;
}
public void setShutdownType(ShutdownType shutdownType) {
this.shutdownType = shutdownType;
}
public String getErrorReason() {
return errorReason;
}
public void setErrorReason(String errorReason) {
this.errorReason = errorReason;
}
public double getTotalPremiumRequests() {
return totalPremiumRequests;
}
public void setTotalPremiumRequests(double totalPremiumRequests) {
this.totalPremiumRequests = totalPremiumRequests;
}
public double getTotalApiDurationMs() {
return totalApiDurationMs;
}
public void setTotalApiDurationMs(double totalApiDurationMs) {
this.totalApiDurationMs = totalApiDurationMs;
}
public double getSessionStartTime() {
return sessionStartTime;
}
public void setSessionStartTime(double sessionStartTime) {
this.sessionStartTime = sessionStartTime;
}
public CodeChanges getCodeChanges() {
return codeChanges;
}
public void setCodeChanges(CodeChanges codeChanges) {
this.codeChanges = codeChanges;
}
public Map getModelMetrics() {
return modelMetrics;
}
public void setModelMetrics(Map modelMetrics) {
this.modelMetrics = modelMetrics;
}
public String getCurrentModel() {
return currentModel;
}
public void setCurrentModel(String currentModel) {
this.currentModel = currentModel;
}
}
/**
* Code changes made during the session.
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public static class CodeChanges {
@JsonProperty("linesAdded")
private double linesAdded;
@JsonProperty("linesRemoved")
private double linesRemoved;
@JsonProperty("filesModified")
private List filesModified;
public double getLinesAdded() {
return linesAdded;
}
public void setLinesAdded(double linesAdded) {
this.linesAdded = linesAdded;
}
public double getLinesRemoved() {
return linesRemoved;
}
public void setLinesRemoved(double linesRemoved) {
this.linesRemoved = linesRemoved;
}
public List getFilesModified() {
return filesModified;
}
public void setFilesModified(List filesModified) {
this.filesModified = filesModified;
}
}
/**
* Type of session shutdown.
*/
public enum ShutdownType {
@JsonProperty("routine")
ROUTINE, @JsonProperty("error")
ERROR
}
}