Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
c63598f
rename evaluator gen ops
kaylieee May 8, 2026
46c66cf
remove async from name
kaylieee May 12, 2026
02327dd
revert targetconfig rename
kaylieee May 12, 2026
9cca5c5
undo rename
kaylieee May 13, 2026
28c13e9
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 13, 2026
c76e2e5
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 13, 2026
76ab5dc
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 15, 2026
f36afb8
rename listsessionfiles
kaylieee May 19, 2026
d329544
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 19, 2026
af96d48
add agents-optimization to agents client, add evaluation-suites, supp…
kaylieee May 20, 2026
805b765
move evaluation suite operations to evaluators, rename
kaylieee May 20, 2026
1e8c4c9
remove evaluationsuites
kaylieee May 21, 2026
d9ead55
Revert "remove evaluationsuites"
kaylieee May 21, 2026
08825b6
Reapply "remove evaluationsuites"
kaylieee May 21, 2026
2789e8c
add evals dependency for agent optimizations
kaylieee May 21, 2026
bd61820
suppress openai outputitem
kaylieee May 21, 2026
fffba63
suppress inputitem
kaylieee May 22, 2026
8d41b32
customization for naming collision
kaylieee May 26, 2026
2b538a2
Ingest spec 52626 (#43522)
kaylieee May 26, 2026
8d71950
Revert "Ingest spec 52626 (#43522)" (#43523)
kaylieee May 26, 2026
4fc661b
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 26, 2026
48bac6c
remove downloadskill override
kaylieee May 26, 2026
404382c
remove skillobject override
kaylieee May 26, 2026
56ab6c4
relocate promote candidate
kaylieee May 26, 2026
7a56624
relocate get candidate
kaylieee May 26, 2026
cc1d5fd
renames
kaylieee May 27, 2026
34133a2
undo rename
kaylieee May 27, 2026
18719de
suppress tool type
kaylieee May 27, 2026
61f2b21
suppress deleteskillversion
kaylieee May 27, 2026
f32adc3
Adding Azure related classes for evals (#43508)
jpalvarezl May 27, 2026
1b882c3
remove listsessionfiles rename
kaylieee May 27, 2026
4528d02
rename uri to url
kaylieee May 27, 2026
89682e5
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 27, 2026
b6b6a3a
rename fabriciq
kaylieee May 27, 2026
4c0ef52
rename to blueprintIdentity
kaylieee May 28, 2026
baea744
rename contentHash to specify method
kaylieee May 28, 2026
e437a05
missing quotes
kaylieee May 28, 2026
49b3a22
rename avg to average
kaylieee May 28, 2026
210d53e
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 28, 2026
1fa42ec
deleteskill suppressions
kaylieee May 29, 2026
de3010c
customizations for deletememory
kaylieee May 29, 2026
256cbe2
Merge branch 'feature/foundry-release' into kaylieee/java-2.2.0-clien…
kaylieee May 29, 2026
05f44b5
remove async from method name
kaylieee May 29, 2026
36ed3f8
renames
kaylieee May 29, 2026
283042f
skill rename
kaylieee Jun 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 87 additions & 9 deletions specification/ai-foundry/data-plane/Foundry/client.java.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ import "./src/models/routes.tsp";
import "./src/deployments/routes.tsp";
import "./src/red-teams/routes.tsp";
import "./src/evaluation-rules/routes.tsp";
// Don't import openai-evaluations, we'll use Stainless SDK like in AgentsV2
// Don't import openai-evaluations routes, we'll use Stainless SDK like in AgentsV2.
// Import only the models so Java codegen can expose Azure-specific eval extensions.
import "./src/openai-evaluations/models.tsp";
// import "./openai-evaluations/routes.tsp";
import "./src/evaluation-taxonomies/routes.tsp";
import "./src/evaluators/routes.tsp";
Expand Down Expand Up @@ -109,6 +111,16 @@ namespace Azure.AI.Projects;
@@clientName(Models.startPendingUpload, "startModelPendingUpload");
@@clientName(Models.getCredentials, "getModelCredentials");

//Evaluator generation jobs
@@clientName(EvaluatorGenerationJobs.create, "createEvaluatorGenerationJob");
@@clientName(EvaluatorGenerationJobs.get, "getEvaluatorGenerationJob");
@@clientName(EvaluatorGenerationJobs.list, "listEvaluatorGenerationJobs");
@@clientName(EvaluatorGenerationJobs.cancel, "cancelEvaluatorGenerationJob");
@@clientName(EvaluatorGenerationJobs.delete, "deleteEvaluatorGenerationJob");

//Routines
@@clientName(Routines.dispatchRoutineAsync, "dispatchRoutine");

// --------------------------------------------------------------------------------
// Renames - models
// --------------------------------------------------------------------------------
Expand All @@ -117,6 +129,8 @@ namespace Azure.AI.Projects;
@@clientName(Sku, "ModelDeploymentSku");
@@clientName(SasCredential, "BlobReferenceSasCredential"); // Not to be confused with class "SASCredentials"

@@clientName(Skill, "SkillDetails");

// // More accurate naming
@@clientName(AssetCredentialResponse, "DatasetCredential");

Expand All @@ -131,9 +145,6 @@ namespace Azure.AI.Projects;
@@clientName(EvalRunResultComparison, "EvaluationRunResultComparison");
@@clientName(EvalRunResultSummary, "EvaluationRunResultSummary");

@@clientName(SkillObject, "SkillDetails");
@@clientName(SkillObject.has_blob, "blobPresent");

@@clientName(Index, "AIProjectIndex", "java");

@@clientName(Azure.Core.Foundations.ResourceBody.resource, "schedule");
Expand All @@ -143,19 +154,46 @@ namespace Azure.AI.Projects;
@@clientName(DatasetVersion.dataUri, "dataUrl");
@@clientName(FolderDatasetVersion.dataUri, "dataUrl");
@@clientName(CodeBasedEvaluatorDefinition.blob_uri, "blobUrl");
@@clientName(ModelVersion.blobUri, "blobUrl");
@@clientName(ModelCredentialRequest.blobUri, "blobUrl");
@@clientName(EvaluatorCredentialRequest.blob_uri, "blobUrl");

// Rename OpenAI.Error to avoid conflict with Azure.Core.Foundations.Error.
// OpenAI.Error is the object type of the `error` properties in `ApiErrorResponse`
// and `MemoryStoreUpdateResponse`.
@@clientName(OpenAI.Error, "ApiError");

@@clientName(RedTeamTargetConfig, "TargetConfig");

// *Request → *Input renames for public body models
@@clientName(UpdateModelVersionRequest, "UpdateModelVersionInput");
@@clientName(ModelPendingUploadRequest, "ModelPendingUploadInput");
@@clientName(ModelCredentialRequest, "ModelCredentialInput");
@@clientName(EvaluatorCredentialRequest, "EvaluatorCredentialInput");

// *Response → *Result renames for public response models
@@clientName(ModelPendingUploadResponse, "ModelPendingUploadResult");
@@clientName(DispatchRoutineResponse, "DispatchRoutineResult");

// --------------------------------------------------------------------------------
// Usage / Public accessibility overrides
// --------------------------------------------------------------------------------

// Needs forceful exposition
@@access(FoundryFeaturesOptInKeys, Access.public);

// Azure-specific OpenAI eval extensions used with the Stainless OpenAI SDK.
@@usage(GraderAzureAIEvaluator,
Usage.input | Usage.output | Usage.json,
"java"
);
@@access(GraderAzureAIEvaluator, Access.public, "java");
@@usage(TestingCriterionAzureAIEvaluator,
Usage.input | Usage.output | Usage.json,
"java"
);
@@access(TestingCriterionAzureAIEvaluator, Access.public, "java");

// Default name produces a style violation
@@clientName(SASCredentials, "SasCredential", "java");
@@clientName(SasCredential, "BlobReferenceSasCredential");
Expand Down Expand Up @@ -190,11 +228,46 @@ namespace Azure.AI.Projects;

// Disabled convenient API generation and make private to provide a custom shim returning `void` in the client
@@convenientAPI(Skills.deleteSkill, false, "java");
@@convenientAPI(Skills.deleteSkillVersion, false, "java");

//making delete methods internal to add public shims that return void
@@access(Skills.deleteSkill, Access.internal);
@@clientName(Skills.deleteSkill, "internalDeleteSkill");
@@access(Skills.deleteSkillVersion, Access.internal);
@@clientName(Skills.deleteSkillVersion, "internalDeleteSkillVersion");

// --------------------------------------------------------------------------------
// Type replacements / encodings
// --------------------------------------------------------------------------------

// OpenAI de-dup: suppress ComparisonFilter & CompoundFilter (and their anonymous
// enum types FileSearchToolFiltersType / FileSearchToolFiltersType1) in favour of
// the equivalent openai-java models.
@@alternateType(OpenAI.ComparisonFilter,
{
identity: "com.openai.models.ComparisonFilter",
},
"java"
);
@@alternateType(OpenAI.CompoundFilter,
{
identity: "com.openai.models.CompoundFilter",
},
"java"
);

// GrammarSyntax1 → expandable GrammarSyntax enum
// The OpenAI TypeSpec names this enum "GrammarSyntax1"; replace with an open union
// so it generates as the extensible "GrammarSyntax" string enum in Java.
union GrammarSyntaxExpandable {
string,
lark: "lark",
regex: "regex",
}

@@clientName(GrammarSyntaxExpandable, "GrammarSyntax", "java");
@@alternateType(OpenAI.GrammarSyntax1, GrammarSyntaxExpandable, "java");

@@alternateType(DayOfWeek,
{
identity: "java.time.DayOfWeek",
Expand All @@ -209,6 +282,9 @@ namespace Azure.AI.Projects;
"java"
);

//Suppress the OpenAI.Tool type to prevent from emitting entire tool model tree
@@alternateType(OpenAI.Tool, unknown, "java");

// SasCredential (BlobReferenceSasCredential) type field should use the shared CredentialType enum
@@alternateType(SasCredential.type, CredentialType, "java");

Expand Down Expand Up @@ -236,10 +312,12 @@ model TimeZoneType {}
@@alternateType(RecurrenceTrigger.timeZone, TimeZoneType, "java");

// --------------------------------------------------------------------------------
// Javadoc / Documentation overrides
// Relocate EvaluatorGenerationJobs, EvaluationSuites, and
// EvaluationSuiteGenerationJobs onto the Evaluators sub-client
// --------------------------------------------------------------------------------

@@clientDoc(Skills.downloadSkill,
"Downloads a skill package as a ZIP archive containing {@code SKILL.md}. Returns the original uploaded archive for skills created via {@code createSkillFromPackage}; materializes a ZIP from stored instructions for skills created via {@code createSkill}.",
DocumentationMode.replace
);
@@clientLocation(EvaluatorGenerationJobs.create, Evaluators);
@@clientLocation(EvaluatorGenerationJobs.get, Evaluators);
@@clientLocation(EvaluatorGenerationJobs.list, Evaluators);
@@clientLocation(EvaluatorGenerationJobs.cancel, Evaluators);
@@clientLocation(EvaluatorGenerationJobs.delete, Evaluators);
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,19 @@ using Azure.AI.Projects;

@@clientName(MemorySearchPreviewTool.update_delay, "updateDelaySeconds");

@@clientName(AgentObject.blueprint, "blueprintIdentity");

@@clientName(CodeConfiguration.content_hash, "contentSha256");

@@clientName(OptimizationCandidate.avg_score, "averageScore");
@@clientName(OptimizationCandidate.avg_tokens, "averageTokens");
@@clientName(OptimizationCandidate.eval_id, "evaluationId");
@@clientName(OptimizationCandidate.eval_run_id, "evaluationRunId");

@@clientName(PromoteCandidateRequest, "PromoteCandidateInput");
@@clientName(PromoteCandidateResponse, "PromoteCandidateResult");
@@clientName(SessionFileWriteResponse, "SessionFileWriteResult");

@@clientName(OpenAI.ResponseFormatJsonSchemaSchema,
"ResponseFormatJsonSchemaInner"
);
Expand Down Expand Up @@ -143,6 +156,37 @@ using Azure.AI.Projects;
@@clientName(ToolboxObject, "ToolboxDetails", "java");

@@clientName(WorkIQPreviewTool, "WorkIqPreviewTool", "java");
@@clientName(FabricIQPreviewTool, "FabricIqPreviewTool", "java");

@@clientName(AgentOptimizationJobs.create, "createOptimizationJob", "java");
@@clientName(AgentOptimizationJobs.get, "getOptimizationJob", "java");
@@clientName(AgentOptimizationJobs.list, "listOptimizationJobs", "java");
@@clientName(AgentOptimizationJobs.cancel, "cancelOptimizationJob", "java");
@@clientName(AgentOptimizationJobs.delete, "deleteOptimizationJob", "java");
@@clientName(AgentOptimizationJobs.listCandidates,
"listOptimizationCandidates",
"java"
);
@@clientName(AgentOptimizationJobs.getCandidate,
"getOptimizationCandidate",
"java"
);
@@clientName(AgentOptimizationJobs.getCandidateConfig,
"getOptimizationCandidateConfig",
"java"
);
@@clientName(AgentOptimizationJobs.getCandidateResults,
"getOptimizationCandidateResults",
"java"
);
@@clientName(AgentOptimizationJobs.promoteCandidate,
"promoteOptimizationCandidate",
"java"
);
@@clientName(AgentOptimizationJobs.getCandidateFile,
"getOptimizationCandidateFile",
"java"
);

// --------------------------------------------------------------------------------
// Usage / Public accessibility overrides
Expand All @@ -152,6 +196,7 @@ using Azure.AI.Projects;
@@access(Agents.updateAgent, Access.internal);
@@access(Agents.createAgentFromManifest, Access.internal);
@@access(Agents.updateAgentFromManifest, Access.internal);
@@access(Agents.createAgentFromCode, Access.internal);

// making methods private to add a public shim using the OpenAI types.
@@access(MemoryStores.searchMemories, Access.internal);
Expand All @@ -164,20 +209,90 @@ using Azure.AI.Projects;
@@convenientAPI(Agents.deleteAgentVersion, false, "java");
@@convenientAPI(MemoryStores.deleteMemoryStore, false, "java");
@@convenientAPI(MemoryStores.deleteScope, false, "java");
@@convenientAPI(MemoryStores.deleteMemory, false, "java");

//making delete methods internal to add public shims that return void
@@access(Agents.deleteAgentVersion, Access.internal);
@@access(Agents.deleteAgent, Access.internal);
@@access(MemoryStores.deleteMemoryStore, Access.internal);
@@access(MemoryStores.deleteScope, Access.internal);
@@access(MemoryStores.deleteMemory, Access.internal);
@@clientName(Agents.deleteAgentVersion, "internalDeleteAgentVersion");
@@clientName(Agents.deleteAgent, "internalDeleteAgent");
@@clientName(MemoryStores.deleteMemoryStore, "internalDeleteMemoryStore");
@@clientName(MemoryStores.deleteScope, "internalDeleteScope");
@@clientName(MemoryStores.deleteMemory, "internalDeleteMemory");

@@access(MemoryStoreSearchResponse, Access.public);
@@usage(MemoryStoreSearchResponse, Usage.output);

// Emit Azure-specific OutputItem subtypes as public Java classes
@@access(BingGroundingToolCall, Access.public);
@@usage(BingGroundingToolCall, Usage.input);

@@access(BingGroundingToolCallOutput, Access.public);
@@usage(BingGroundingToolCallOutput, Usage.input);

@@access(SharepointGroundingToolCall, Access.public);
@@usage(SharepointGroundingToolCall, Usage.input);

@@access(SharepointGroundingToolCallOutput, Access.public);
@@usage(SharepointGroundingToolCallOutput, Usage.input);

@@access(AzureAISearchToolCall, Access.public);
@@usage(AzureAISearchToolCall, Usage.input);

@@access(AzureAISearchToolCallOutput, Access.public);
@@usage(AzureAISearchToolCallOutput, Usage.input);

@@access(BingCustomSearchToolCall, Access.public);
@@usage(BingCustomSearchToolCall, Usage.input);

@@access(BingCustomSearchToolCallOutput, Access.public);
@@usage(BingCustomSearchToolCallOutput, Usage.input);

@@access(OpenApiToolCall, Access.public);
@@usage(OpenApiToolCall, Usage.input);

@@access(OpenApiToolCallOutput, Access.public);
@@usage(OpenApiToolCallOutput, Usage.input);

@@access(BrowserAutomationToolCall, Access.public);
@@usage(BrowserAutomationToolCall, Usage.input);

@@access(BrowserAutomationToolCallOutput, Access.public);
@@usage(BrowserAutomationToolCallOutput, Usage.input);

@@access(FabricDataAgentToolCall, Access.public);
@@usage(FabricDataAgentToolCall, Usage.input);

@@access(FabricDataAgentToolCallOutput, Access.public);
@@usage(FabricDataAgentToolCallOutput, Usage.input);

@@access(AzureFunctionToolCall, Access.public);
@@usage(AzureFunctionToolCall, Usage.input);

@@access(AzureFunctionToolCallOutput, Access.public);
@@usage(AzureFunctionToolCallOutput, Usage.input);

@@access(A2AToolCall, Access.public);
@@usage(A2AToolCall, Usage.input);

@@access(A2AToolCallOutput, Access.public);
@@usage(A2AToolCallOutput, Usage.input);

@@access(MemorySearchToolCall, Access.public);
@@usage(MemorySearchToolCall, Usage.input);

@@access(MemoryCommandToolCall, Access.public);
@@usage(MemoryCommandToolCall, Usage.input);

@@access(MemoryCommandToolCallOutput, Access.public);
@@usage(MemoryCommandToolCallOutput, Usage.input);

@@access(ToolCallStatus, Access.public);
@@usage(ToolCallStatus, Usage.input);

@@access(FoundryFeaturesOptInKeys, Access.public);
@@access(AgentDefinitionOptInKeys, Access.public);

Expand Down Expand Up @@ -205,7 +320,6 @@ using Azure.AI.Projects;
@@usage(CreateAgentVersionRequest, Usage.input);
@@access(CreateAgentVersionRequest, Access.public);


// Ensure SessionLogEvent and SessionLogEventType are emitted
@@usage(SessionLogEvent, Usage.output);
@@access(SessionLogEvent, Access.public);
Expand Down Expand Up @@ -258,6 +372,9 @@ using Azure.AI.Projects;
"java"
);

@@alternateType(OpenAI.OutputItem, unknown, "java");
@@alternateType(OpenAI.InputItem, unknown, "java");

// TimeZone property override via model indirection
@alternateType(
{
Expand Down Expand Up @@ -513,3 +630,19 @@ union WebSearchToolSearchContextSizeExpandable {
// of our own, to prevent confusion.
@@clientName(Conversations.listConversations, "listAgentConversations", "java");
@@clientLocation(Conversations.listConversations, Agents);

// --------------------------------------------------------------------------------
// AgentOptimizationJobs: relocate operations onto the Agents sub-client
// --------------------------------------------------------------------------------

@@clientLocation(AgentOptimizationJobs.create, Agents);
@@clientLocation(AgentOptimizationJobs.get, Agents);
@@clientLocation(AgentOptimizationJobs.list, Agents);
@@clientLocation(AgentOptimizationJobs.cancel, Agents);
@@clientLocation(AgentOptimizationJobs.delete, Agents);
@@clientLocation(AgentOptimizationJobs.listCandidates, Agents);
@@clientLocation(AgentOptimizationJobs.getCandidate, Agents);
@@clientLocation(AgentOptimizationJobs.getCandidateConfig, Agents);
@@clientLocation(AgentOptimizationJobs.getCandidateResults, Agents);
@@clientLocation(AgentOptimizationJobs.promoteCandidate, Agents);
@@clientLocation(AgentOptimizationJobs.getCandidateFile, Agents);
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import "../agents/routes.tsp";
import "../memory-stores/routes.tsp";
import "../toolboxes/routes.tsp";
import "../agents-session-files/routes.tsp";
import "../agents-optimization/routes.tsp";
// We don't need the operations for these subclients, just the models
// so we can customize visibility where necessary.
import "../openai-responses/models.tsp";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ options:
AzureFunctionDefinitionFunction: AzureFunctionDefinitionDetails
MCPToolConnectorId: McpToolConnectorId
UpdateAgentDetailsPatchRequest: UpdateAgentDetailsOptions
AgentsPagedResultOptimizationCandidate: OptimizationCandidatePagedResult
customization-class: customizations/src/main/java/AgentsCustomizations.java
flavor: azure
"@typespec/json-schema":
Expand Down Expand Up @@ -53,6 +54,7 @@ imports:
- "@azure-tools/typespec-azure-core/experimental"
- "@azure-tools/typespec-client-generator-core"
# Note: Imports for OpenAI types may use alternate views per tspconfig.yaml
- "@azure-tools/openai-typespec/models/evals"
- "@azure-tools/openai-typespec/models/responses"
linter:
extends:
Expand Down
2 changes: 2 additions & 0 deletions specification/ai-foundry/data-plane/Foundry/tspconfig.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ options:
generate-samples: false
custom-types-subpackage: "implementation.models"
customization-class: customizations/src/main/java/ProjectsCustomizations.java
rename-model:
FilesFileDetails: SkillFileDetails
flavor: azure
"@typespec/json-schema":
emitAllModels: true
Expand Down
Loading