From 2e7664f2eb6bd7f6c1e78670bc836544b184b27f Mon Sep 17 00:00:00 2001 From: Krrish Mittal Date: Thu, 23 Apr 2026 15:34:58 -0700 Subject: [PATCH] fix(designer): restore deploymentModelProperties for AzureOpenAI agent connections MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Regression from #9012 which removed AzureOpenAI from the visibility dependencies of deploymentModelProperties (name, format, version) in the agent loop manifest. The assumption was that the backend derives model info from the deployment — but the backend requires these values explicitly, failing with InvalidAgentModelSettings when they're missing. Changes: - Restore AzureOpenAI in agentloop.ts manifest visibility for deploymentModelProperties.name, .format, .version - Restore AzureOpenAI deployment-info lookup in parametersTab (both designer and designer-v2) so model properties are populated from the ARM deployment response when selecting a deployment - Add regression tests verifying deploymentModelProperties visibility includes both AzureOpenAI and MicrosoftFoundry Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../tabs/parametersTab/index.tsx | 8 ++++---- .../tabs/parametersTab/index.tsx | 8 ++++---- .../standard/manifest/__test__/agentloop.spec.ts | 16 ++++++++++++++++ .../lib/standard/manifest/agentloop.ts | 6 +++--- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx b/libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx index 8ac3327b12f..27845ab3ef7 100644 --- a/libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx +++ b/libs/designer-v2/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx @@ -1087,11 +1087,11 @@ export const ParameterSection = ({ const selectedModelId = value?.length ? value[0]?.value : undefined; const currentModelType = findFoundryParam(nodeInputs.parameterGroups, group.id, agentModelTypeParameterKey)?.value?.[0]?.value; - // Only populate deploymentModelProperties for MicrosoftFoundry. - // For AzureOpenAI the backend derives model info from the deployment itself. - if (currentModelType === 'MicrosoftFoundry' && selectedModelId) { + // Populate deploymentModelProperties for both AzureOpenAI and MicrosoftFoundry. + // The backend requires name/format/version for AzureOpenAI model type. + if ((currentModelType === 'MicrosoftFoundry' || currentModelType === 'AzureOpenAI') && selectedModelId) { const deploymentInfo = deploymentsForCognitiveServiceAccount?.find((deployment: any) => deployment.name === selectedModelId); - const modelName = deploymentInfo?.properties?.model?.name; + const modelName = deploymentInfo?.properties?.model?.name ?? selectedModelId; let modelFormat = deploymentInfo?.properties?.model?.format; let modelVersion = deploymentInfo?.properties?.model?.version; if (!modelFormat || !modelVersion) { diff --git a/libs/designer/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx b/libs/designer/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx index 70d856994af..64b1bd85046 100644 --- a/libs/designer/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx +++ b/libs/designer/src/lib/ui/panel/nodeDetailsPanel/tabs/parametersTab/index.tsx @@ -1096,11 +1096,11 @@ export const ParameterSection = ({ const selectedModelId = value?.length ? value[0]?.value : undefined; const currentModelType = findFoundryParam(nodeInputs.parameterGroups, group.id, agentModelTypeParameterKey)?.value?.[0]?.value; - // Only populate deploymentModelProperties for MicrosoftFoundry. - // For AzureOpenAI the backend derives model info from the deployment itself. - if (currentModelType === 'MicrosoftFoundry' && selectedModelId) { + // Populate deploymentModelProperties for both AzureOpenAI and MicrosoftFoundry. + // The backend requires name/format/version for AzureOpenAI model type. + if ((currentModelType === 'MicrosoftFoundry' || currentModelType === 'AzureOpenAI') && selectedModelId) { const deploymentInfo = deploymentsForCognitiveServiceAccount?.find((deployment: any) => deployment.name === selectedModelId); - const modelName = deploymentInfo?.properties?.model?.name; + const modelName = deploymentInfo?.properties?.model?.name ?? selectedModelId; let modelFormat = deploymentInfo?.properties?.model?.format; let modelVersion = deploymentInfo?.properties?.model?.version; if (!modelFormat || !modelVersion) { diff --git a/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/__test__/agentloop.spec.ts b/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/__test__/agentloop.spec.ts index 816f435f1c0..fb5b53ca5d9 100644 --- a/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/__test__/agentloop.spec.ts +++ b/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/__test__/agentloop.spec.ts @@ -116,4 +116,20 @@ describe('agentloop – Foundry V2 regression', () => { expect(field.type).toBe('string'); }); }); + + describe('deploymentModelProperties visibility', () => { + const agentModelSettings = inputs.agentModelSettings?.properties as Record; + const deploymentModelProps = agentModelSettings?.deploymentModelProperties?.properties as Record; + + it.each(['name', 'format', 'version'])('%s should be visible for both AzureOpenAI and MicrosoftFoundry', (field) => { + const visValues = deploymentModelProps[field]['x-ms-input-dependencies'].parameters[0].values as string[]; + expect(visValues).toContain('AzureOpenAI'); + expect(visValues).toContain('MicrosoftFoundry'); + }); + + it.each(['name', 'format', 'version'])('%s should NOT be visible for FoundryAgentServiceV2', (field) => { + const visValues = deploymentModelProps[field]['x-ms-input-dependencies'].parameters[0].values as string[]; + expect(visValues).not.toContain('FoundryAgentServiceV2'); + }); + }); }); diff --git a/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts b/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts index 4f625d68673..1606b0b1fde 100644 --- a/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts +++ b/libs/logic-apps-shared/src/designer-client-services/lib/standard/manifest/agentloop.ts @@ -476,7 +476,7 @@ export default { parameters: [ { name: 'agentModelType', - values: ['MicrosoftFoundry'], + values: ['AzureOpenAI', 'MicrosoftFoundry'], }, ], }, @@ -490,7 +490,7 @@ export default { parameters: [ { name: 'agentModelType', - values: ['MicrosoftFoundry'], + values: ['AzureOpenAI', 'MicrosoftFoundry'], }, ], }, @@ -504,7 +504,7 @@ export default { parameters: [ { name: 'agentModelType', - values: ['MicrosoftFoundry'], + values: ['AzureOpenAI', 'MicrosoftFoundry'], }, ], },