/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. *--------------------------------------------------------------------------------------------*/ package com.github.copilot.sdk.json; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; /** * Metadata about an existing Copilot session. *
* This class represents session information returned when listing available * sessions via {@link com.github.copilot.sdk.CopilotClient#listSessions()}. It * includes timing information, a summary of the conversation, and whether the * session is stored remotely. * *
{@code
* var sessions = client.listSessions().get();
* for (var meta : sessions) {
* System.out.println("Session: " + meta.getSessionId());
* System.out.println(" Started: " + meta.getStartTime());
* System.out.println(" Summary: " + meta.getSummary());
* }
* }
*
* @see com.github.copilot.sdk.CopilotClient#listSessions()
* @see com.github.copilot.sdk.CopilotClient#resumeSession(String,
* ResumeSessionConfig)
* @since 1.0.0
*/
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SessionMetadata {
@JsonProperty("sessionId")
private String sessionId;
@JsonProperty("startTime")
private String startTime;
@JsonProperty("modifiedTime")
private String modifiedTime;
@JsonProperty("summary")
private String summary;
@JsonProperty("isRemote")
private boolean isRemote;
@JsonProperty("context")
private SessionContext context;
/**
* Gets the unique identifier for this session.
*
* @return the session ID
*/
public String getSessionId() {
return sessionId;
}
/**
* Sets the session identifier.
*
* @param sessionId
* the session ID
*/
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
/**
* Gets the timestamp when the session was created.
*
* @return the start time as an ISO 8601 formatted string
*/
public String getStartTime() {
return startTime;
}
/**
* Sets the session start time.
*
* @param startTime
* the start time as an ISO 8601 formatted string
*/
public void setStartTime(String startTime) {
this.startTime = startTime;
}
/**
* Gets the timestamp when the session was last modified.
*
* @return the modified time as an ISO 8601 formatted string
*/
public String getModifiedTime() {
return modifiedTime;
}
/**
* Sets the session modified time.
*
* @param modifiedTime
* the modified time as an ISO 8601 formatted string
*/
public void setModifiedTime(String modifiedTime) {
this.modifiedTime = modifiedTime;
}
/**
* Gets a brief summary of the session's conversation.
* * This is typically an AI-generated summary of the session content. * * @return the session summary, or {@code null} if not available */ public String getSummary() { return summary; } /** * Sets the session summary. * * @param summary * the session summary */ public void setSummary(String summary) { this.summary = summary; } /** * Returns whether this session is stored remotely. * * @return {@code true} if the session is stored on the server, {@code false} if * it's stored locally */ public boolean isRemote() { return isRemote; } /** * Sets whether this session is stored remotely. * * @param remote * {@code true} if stored remotely */ public void setRemote(boolean remote) { isRemote = remote; } /** * Gets the working directory context from session creation. *
* Contains information about the working directory, git repository, and branch * where the session was created. * * @return the session context, or {@code null} if not available */ public SessionContext getContext() { return context; } /** * Sets the working directory context. * * @param context * the session context */ public void setContext(SessionContext context) { this.context = context; } }