/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------------------------------------------*/
/**
* Configuration classes and data transfer objects for the Copilot SDK.
*
*
* This package contains all the configuration, request, response, and data
* transfer objects used throughout the SDK. These classes are designed for JSON
* serialization with Jackson and provide fluent setter methods for convenient
* configuration.
*
*
Client Configuration
*
* - {@link com.github.copilot.sdk.json.CopilotClientOptions} - Options for
* configuring the {@link com.github.copilot.sdk.CopilotClient}, including CLI
* path, port, transport mode, and auto-start behavior.
*
*
* Session Configuration
*
* - {@link com.github.copilot.sdk.json.SessionConfig} - Configuration for
* creating a new session, including model selection, tools, system message, and
* MCP server configuration.
* - {@link com.github.copilot.sdk.json.ResumeSessionConfig} - Configuration
* for resuming an existing session.
* - {@link com.github.copilot.sdk.json.InfiniteSessionConfig} - Configuration
* for infinite sessions with automatic context compaction.
* - {@link com.github.copilot.sdk.json.SystemMessageConfig} - System message
* customization options.
*
*
* Message and Tool Configuration
*
* - {@link com.github.copilot.sdk.json.MessageOptions} - Options for sending
* messages, including prompt text and attachments.
* - {@link com.github.copilot.sdk.json.ToolDefinition} - Definition of a
* custom tool that can be invoked by the assistant.
* - {@link com.github.copilot.sdk.json.ToolInvocation} - Represents a tool
* invocation request from the assistant.
* - {@link com.github.copilot.sdk.json.Attachment} - File attachment for
* messages.
*
*
* Provider Configuration (BYOK)
*
* - {@link com.github.copilot.sdk.json.ProviderConfig} - Configuration for
* using your own API keys with custom providers (OpenAI, Azure, etc.).
* - {@link com.github.copilot.sdk.json.AzureOptions} - Azure-specific
* configuration options.
*
*
* Model Information
*
* - {@link com.github.copilot.sdk.json.ModelInfo} - Information about an
* available AI model.
* - {@link com.github.copilot.sdk.json.ModelCapabilities} - Model
* capabilities and limits.
* - {@link com.github.copilot.sdk.json.ModelPolicy} - Model policy and state
* information.
*
*
* Custom Agents
*
* - {@link com.github.copilot.sdk.json.CustomAgentConfig} - Configuration for
* custom agents with specialized behaviors and tools.
*
*
* Permissions
*
* - {@link com.github.copilot.sdk.json.PermissionHandler} - Handler for
* permission requests from the assistant.
* - {@link com.github.copilot.sdk.json.PermissionRequest} - A permission
* request from the assistant.
* - {@link com.github.copilot.sdk.json.PermissionRequestResult} - Result of a
* permission request decision.
*
*
* Usage Example
*
* {@code
* var config = new SessionConfig().setModel("gpt-4.1").setStreaming(true)
* .setSystemMessage(new SystemMessageConfig().setMode(SystemMessageMode.APPEND)
* .setContent("Be concise in your responses."))
* .setTools(List.of(ToolDefinition.create("my_tool", "Description", schema, handler)));
*
* var session = client.createSession(config).get();
* }
*
* @see com.github.copilot.sdk.CopilotClient
* @see com.github.copilot.sdk.CopilotSession
*/
@edu.umd.cs.findbugs.annotations.SuppressFBWarnings(value = "EI_EXPOSE_REP2", justification = "DTOs for JSON deserialization - low risk")
package com.github.copilot.sdk.json;