Skip to content

PoC: Beta class annotation for preview API for azure-ai-agents and azure-ai-projects#49506

Open
jpalvarezl wants to merge 25 commits into
mainfrom
jpalvarezl/feature/class_member_beta_annotation_poc
Open

PoC: Beta class annotation for preview API for azure-ai-agents and azure-ai-projects#49506
jpalvarezl wants to merge 25 commits into
mainfrom
jpalvarezl/feature/class_member_beta_annotation_poc

Conversation

@jpalvarezl

@jpalvarezl jpalvarezl commented Jun 15, 2026

Copy link
Copy Markdown
Member
  • Introduced a @Beta. Happy to migrate if there is something more suitable
  • Using a custom emitter
  • Here is the configuration for that emitter

jpalvarezl and others added 23 commits June 8, 2026 13:49
* Fixed sample issues

* Fix agent-scoped OpenAI endpoint URL; reorganize hosted-agents sample utils

- Fix the agent-scoped OpenAI client in AgentsClientBuilder so requests to a
  hosted-agent endpoint use the unified Azure URL path mode and send
  api-version=v1. Previously the path was duplicated
  (.../protocols/openai/openai/responses) and used an unsupported default
  api-version, causing 400 errors when invoking the Responses API or streaming
  session logs through an agent endpoint.
- Move CodeAgentSampleUtils and HostedAgentsSampleUtils into a
  com.azure.ai.agents.hostedagents.utils subpackage and update sample/test imports.
- Close the endless session-log SSE stream client-side after a short timeout.
- Add a CHANGELOG entry for the bug fix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* add back missing overload

* add revapi suppressions

* add suppressions for all beta clients

* cleanup
@jpalvarezl jpalvarezl changed the title Jpalvarezl/feature/class member beta annotation poc PoC: Beta class annotation for preview API for azure-ai-agents and azure-ai-projects Jun 15, 2026
Base automatically changed from jpalvarezl/feature/foundry_sdk_beta_client_refactor to main June 16, 2026 19:50
Copilot AI review requested due to automatic review settings June 17, 2026 07:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a CSV-driven mechanism to consistently mark preview (beta) APIs in the azure-ai-agents and azure-ai-projects Java SDKs by generating and applying a custom @Beta annotation to specific classes and members during customization.

Changes:

  • Added a @Beta annotation type to both libraries (in each package’s util namespace).
  • Added beta-annotations.csv files and customization logic to parse them and apply @Beta to targeted classes/fields (including accessors).
  • Updated many generated model types to import and use @Beta(...) with preview warning text.

Reviewed changes

Copilot reviewed 96 out of 96 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/util/Beta.java Adds @Beta annotation for preview API marking in Projects.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/TimerRoutineTrigger.java Marks routine trigger model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/ScheduleRoutineTrigger.java Marks routine trigger model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineTriggerType.java Marks routine trigger discriminator enum as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineTrigger.java Marks base routine trigger model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineRunPhase.java Marks routine run phase enum as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineRun.java Marks routine run model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineDispatchPayloadType.java Marks dispatch payload discriminator enum as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineDispatchPayload.java Marks base dispatch payload model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineAttemptSource.java Marks attempt source enum as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineActionType.java Marks routine action discriminator enum as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/RoutineAction.java Marks base routine action model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/Routine.java Marks routine model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiRoutineAction.java Marks responses API routine action model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/InvokeAgentResponsesApiDispatchPayload.java Marks responses API dispatch payload model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiRoutineAction.java Marks invocations API routine action model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/InvokeAgentInvocationsApiDispatchPayload.java Marks invocations API dispatch payload model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/GitHubIssueRoutineTrigger.java Marks GitHub issue trigger model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/GitHubIssueEvent.java Marks GitHub issue event enum as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/EvaluatorCredentialInput.java Marks evaluator credential input model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/EvaluationRule.java Marks evaluation rule member/accessor as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/DispatchRoutineResult.java Marks dispatch result model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/CustomRoutineTrigger.java Marks custom trigger model as preview via @Beta.
sdk/ai/azure-ai-projects/src/main/java/com/azure/ai/projects/models/CodeBasedEvaluatorDefinition.java Marks evaluator fields/accessors as preview via @Beta.
sdk/ai/azure-ai-projects/customizations/src/main/java/ProjectsCustomizations.java Adds CSV parsing + AST customization to apply @Beta in Projects.
sdk/ai/azure-ai-projects/customizations/beta-annotations.csv Adds Projects CSV source-of-truth for preview annotations.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/util/Beta.java Adds @Beta annotation for preview API marking in Agents.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/WorkflowAgentDefinition.java Marks workflow agent model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VersionSelectorType.java Marks version selector type enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VersionSelector.java Marks version selector model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VersionSelectionRule.java Marks version selection rule model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VersionRefIndicator.java Marks version ref indicator model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VersionIndicatorType.java Marks version indicator type enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/VersionIndicator.java Marks version indicator model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/UserProfileMemoryItem.java Marks memory item model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelemetryTransportProtocol.java Marks telemetry enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelemetryEndpointKind.java Marks telemetry enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuthType.java Marks telemetry enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelemetryEndpointAuth.java Marks telemetry auth model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelemetryEndpoint.java Marks telemetry endpoint model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelemetryDataKind.java Marks telemetry enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/TelemetryConfig.java Marks telemetry config model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionLogEventType.java Marks session log enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/SessionLogEvent.java Marks session log event model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ProceduralMemoryItem.java Marks memory item model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/OtlpTelemetryEndpoint.java Marks OTLP endpoint model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateStatus.java Marks memory store enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateResponse.java Marks memory store response model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreUpdateCompletedResult.java Marks memory store result model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreSearchResponse.java Marks memory store search response model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreOperationUsage.java Marks memory store usage model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreKind.java Marks memory store enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreDetails.java Marks memory store details model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreDefinition.java Marks base memory store definition model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultOptions.java Marks memory store options model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryStoreDefaultDefinition.java Marks memory store definition model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemorySearchOptions.java Marks memory search options model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemorySearchItem.java Marks memory search item model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryOperationKind.java Marks memory operation enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryOperation.java Marks memory operation model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryItemKind.java Marks memory item enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/MemoryItem.java Marks base memory item model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ManagedAgentIdentityBlueprintReference.java Marks blueprint reference model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/IsolationKeySourceKind.java Marks isolation key enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/IsolationKeySource.java Marks isolation key source model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/HostedAgentDefinition.java Marks hosted agent model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/HeaderTelemetryEndpointAuth.java Marks telemetry auth model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/HeaderIsolationKeySource.java Marks isolation key source model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/FixedRatioVersionSelectionRule.java Marks selection rule model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ExternalAgentDefinition.java Marks external agent model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/EntraIsolationKeySource.java Marks isolation key source model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/EntraAuthorizationScheme.java Marks authorization scheme model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateAgentVersionInput.java Marks create-version input model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeMetadata.java Marks code-metadata model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CreateAgentVersionFromCodeContent.java Marks code-content model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ContainerConfiguration.java Marks container configuration model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/CodeConfiguration.java Marks code configuration model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/ChatSummaryMemoryItem.java Marks memory item model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BotServiceRbacAuthorizationScheme.java Marks bot auth scheme model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/BotServiceAuthorizationScheme.java Marks bot auth scheme model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentVersionDetails.java Marks agent version details members/accessors as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentSessionStatus.java Marks session status enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentSessionResource.java Marks session resource model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentIdentity.java Marks agent identity model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentEndpointConfig.java Marks endpoint config model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationSchemeType.java Marks endpoint auth enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentEndpointAuthorizationScheme.java Marks endpoint auth scheme model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDetails.java Marks specific members/accessors as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentDefinition.java Marks base agent definition model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentCardSkill.java Marks agent card skill model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentCard.java Marks agent card model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentBlueprintReferenceType.java Marks blueprint ref type enum as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/models/AgentBlueprintReference.java Marks blueprint ref model as preview via @Beta.
sdk/ai/azure-ai-agents/src/main/java/com/azure/ai/agents/implementation/models/CreateAgentFromCodeContent.java Marks implementation model as preview via @Beta.
sdk/ai/azure-ai-agents/customizations/src/main/java/AgentsCustomizations.java Adds CSV parsing + AST customization to apply @Beta in Agents.
sdk/ai/azure-ai-agents/customizations/beta-annotations.csv Adds Agents CSV source-of-truth for preview annotations.

Comment on lines +179 to +182
// Skip the header row (type;class_name;annotation_description;member_name).
if (lineNumber == 1) {
continue;
}
Comment on lines +193 to +208
String type = columns[0].trim();
String className = columns[1].trim();
String description = columns[2];
String member = columns.length >= 4 ? columns[3].trim() : "";
if (className.isEmpty() || description.isEmpty()) {
logger.error("Line {} of {} requires a class_name and an annotation_description: {}", lineNumber,
CSV_FILE_NAME, line);
throw new IllegalStateException("Line " + lineNumber + " of " + CSV_FILE_NAME
+ " requires a class_name and an annotation_description: " + line);
}
if ("field".equals(type) && member.isEmpty()) {
logger.error("Line {} of {} is a field entry but has no member_name: {}", lineNumber, CSV_FILE_NAME,
line);
throw new IllegalStateException("Line " + lineNumber + " of " + CSV_FILE_NAME
+ " is a field entry but has no member_name: " + line);
}
Comment on lines +139 to +142
// Skip the header row (type;class_name;annotation_description;member_name).
if (lineNumber == 1) {
continue;
}
Comment on lines +153 to +168
String type = columns[0].trim();
String className = columns[1].trim();
String description = columns[2];
String member = columns.length >= 4 ? columns[3].trim() : "";
if (className.isEmpty() || description.isEmpty()) {
logger.error("Line {} of {} requires a class_name and an annotation_description: {}", lineNumber,
CSV_FILE_NAME, line);
throw new IllegalStateException("Line " + lineNumber + " of " + CSV_FILE_NAME
+ " requires a class_name and an annotation_description: " + line);
}
if ("field".equals(type) && member.isEmpty()) {
logger.error("Line {} of {} is a field entry but has no member_name: {}", lineNumber, CSV_FILE_NAME,
line);
throw new IllegalStateException("Line " + lineNumber + " of " + CSV_FILE_NAME
+ " is a field entry but has no member_name: " + line);
}
class;com.azure.ai.agents.models.AgentBlueprintReferenceType;Preview API. AgentEndpoints=V1Preview;
class;com.azure.ai.agents.models.AgentCard;Preview API. AgentEndpoints=V1Preview;
class;com.azure.ai.agents.models.AgentCardSkill;Preview API. AgentEndpoints=V1Preview;
class;com.azure.ai.agents.models.AgentDefinition;Preview API. CodeAgents=V1Preview, ExternalAgents=V1Preview, HostedAgents=V1Preview, WorkflowAgents=V1Preview;
class;com.azure.ai.agents.models.ContainerConfiguration;Preview API. CodeAgents=V1Preview;
class;com.azure.ai.agents.models.CreateAgentVersionFromCodeContent;Preview API. CodeAgents=V1Preview;
class;com.azure.ai.agents.models.CreateAgentVersionFromCodeMetadata;Preview API. CodeAgents=V1Preview;
class;com.azure.ai.agents.models.CreateAgentVersionInput;Preview API. CodeAgents=V1Preview, ExternalAgents=V1Preview, HostedAgents=V1Preview, WorkflowAgents=V1Preview;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants