/*--------------------------------------------------------------------------------------------- * 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. * *

Example Usage

* *
{@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; } }