diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/AzureSdkChatMessageExtensions.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/AzureSdkChatMessageExtensions.cs index ff6dc0a1b..c950d98de 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/AzureSdkChatMessageExtensions.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/AzureSdkChatMessageExtensions.cs @@ -35,7 +35,7 @@ public void Test_ChatCompletionsToolCall_InvalidToolType() Assert.Equal($"Invalid ChatCompletionsToolCall type: {nameof(InvalidToolCall)}", ex.Message); } - private class InvalidToolCall : Azure.AI.OpenAI.ChatCompletionsToolCall + private sealed class InvalidToolCall : Azure.AI.OpenAI.ChatCompletionsToolCall { public InvalidToolCall() : base("test-id") { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/ChatMessageExtensionsTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/ChatMessageExtensionsTests.cs index 5bcad5382..608ff75d0 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/ChatMessageExtensionsTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/ChatMessageExtensionsTests.cs @@ -165,7 +165,7 @@ public void Test_ChatCompletionsToolCall_InvalidToolType() Assert.Equal("Invalid tool type: invalidToolType", ex.Message); } - private class InvalidToolCall : AI.Models.ChatCompletionsToolCall + private sealed class InvalidToolCall : AI.Models.ChatCompletionsToolCall { public InvalidToolCall() : base("invalidToolType", "test-id") { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/SequentialDelayStrategyTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/SequentialDelayStrategyTests.cs index a9c6c596f..eb7269390 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/SequentialDelayStrategyTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/AITests/Models/SequentialDelayStrategyTests.cs @@ -31,7 +31,7 @@ public void Test_SequentialDelayStrategy() } } - internal class TestSequentialDelayStrategy : SequentialDelayStrategy + internal sealed class TestSequentialDelayStrategy : SequentialDelayStrategy { public TestSequentialDelayStrategy(List delays) : base(delays) { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/AppConfig.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/AppConfig.cs index c2a924598..d179fdddd 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/AppConfig.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/AppConfig.cs @@ -3,7 +3,7 @@ namespace Microsoft.Teams.AI.Tests.Application.Authentication { - internal class AppConfig : IAppConfig + internal sealed class AppConfig : IAppConfig { #pragma warning disable CS8618 // This class is for test purpose only public AppConfig(string clientId, string tenantId) diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/OAuthBotAuthenticationTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/OAuthBotAuthenticationTests.cs index b94735dce..81b167a66 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/OAuthBotAuthenticationTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/OAuthBotAuthenticationTests.cs @@ -6,7 +6,7 @@ namespace Microsoft.Teams.AI.Tests.Application.Authentication.Bot { - internal class TestOAuthBotAuthentication : OAuthBotAuthentication + internal sealed class TestOAuthBotAuthentication : OAuthBotAuthentication { public TestOAuthBotAuthentication(Application app, OAuthSettings oauthSettings, string settingName, IStorage? storage = null) : base(app, oauthSettings, settingName, storage) { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoBotAuthenticationTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoBotAuthenticationTests.cs index 996132fdd..707a9af79 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoBotAuthenticationTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoBotAuthenticationTests.cs @@ -11,7 +11,7 @@ namespace Microsoft.Teams.AI.Tests.Application.Authentication.Bot { public class TeamsSsoBotAuthenticationTests { - internal class MockTeamsSsoBotAuthentication : TeamsSsoBotAuthentication + internal sealed class MockTeamsSsoBotAuthentication : TeamsSsoBotAuthentication where TState : TurnState, new() { public MockTeamsSsoBotAuthentication(Application app, string name, TeamsSsoSettings settings, TeamsSsoPrompt? mockPrompt = null) : base(app, name, settings, null) diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoPromptTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoPromptTests.cs index 065194b22..4eff52499 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoPromptTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/Bot/TeamsSsoPromptTests.cs @@ -22,7 +22,7 @@ public class TeamsSsoPromptTests private const string AuthStartPage = "https://localhost/auth-start.html"; private const string AccessToken = "test token"; - private class TeamsSsoPromptMock : TeamsSsoPrompt + private sealed class TeamsSsoPromptMock : TeamsSsoPrompt { public TeamsSsoPromptMock(string dialogId, string name, TeamsSsoSettings settings, IConfidentialClientApplicationAdapter msalAdapterMock) : base(dialogId, name, settings) { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/MessageExtensions/TeamsSsoMessageExtensionsAuthenticationTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/MessageExtensions/TeamsSsoMessageExtensionsAuthenticationTests.cs index d18d48655..da82b435e 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/MessageExtensions/TeamsSsoMessageExtensionsAuthenticationTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/MessageExtensions/TeamsSsoMessageExtensionsAuthenticationTests.cs @@ -16,7 +16,7 @@ public class TeamsSsoMessageExtensionsAuthenticationTests private const string AuthStartPage = "https://localhost/auth-start.html"; private const string AccessToken = "test token"; - private class TeamsSsoMessageExtensionsAuthenticationMock : TeamsSsoMessageExtensionsAuthentication + private sealed class TeamsSsoMessageExtensionsAuthenticationMock : TeamsSsoMessageExtensionsAuthentication { public TeamsSsoMessageExtensionsAuthenticationMock(TeamsSsoSettings settings, IConfidentialClientApplicationAdapter msalAdapterMock) : base(settings) { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TeamsSsoAuthenticationTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TeamsSsoAuthenticationTests.cs index 91054fb07..75fd39343 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TeamsSsoAuthenticationTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TeamsSsoAuthenticationTests.cs @@ -17,7 +17,7 @@ public class TeamsSsoAuthenticationTests private const string AuthStartPage = "https://localhost/auth-start.html"; private const string AccessToken = "test token"; - private class TeamsSsoAuthenticationMock : TeamsSsoAuthentication + private sealed class TeamsSsoAuthenticationMock : TeamsSsoAuthentication where TState : TurnState, new() { public TeamsSsoAuthenticationMock(Application app, string name, TeamsSsoSettings settings, IConfidentialClientApplicationAdapter msalAdapterMock) : base(app, name, settings, null) diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TestAuthenticationManager.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TestAuthenticationManager.cs index 2b4e1e6c9..6c2805c82 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TestAuthenticationManager.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/Application/Authentication/TestAuthenticationManager.cs @@ -3,7 +3,7 @@ namespace Microsoft.Teams.AI.Tests.Application.Authentication { - internal class TestAuthenticationManager : AuthenticationManager + internal sealed class TestAuthenticationManager : AuthenticationManager { public TestAuthenticationManager(AuthenticationOptions options, Application app, IStorage? storage = null) : base(app, options, storage) { diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/StateTests/TurnStateTests.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/StateTests/TurnStateTests.cs index ab3d2cdc0..47668e244 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/StateTests/TurnStateTests.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI.Tests/StateTests/TurnStateTests.cs @@ -184,8 +184,10 @@ public async void Test_SaveState_Existing_Loading_Operation() { await state.SaveStateAsync(turnContext, null); } +#pragma warning disable CA1031 catch (Exception) { +#pragma warning restore CA1031 // Ignore the exception, this is the expected behavior is state is not loaded. } diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Planners/PredictedSayCommand.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Planners/PredictedSayCommand.cs index 889663509..00199807f 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Planners/PredictedSayCommand.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/AI/Planners/PredictedSayCommand.cs @@ -33,6 +33,10 @@ public PredictedSayCommand(ChatMessage response) Response = response; } + /// + /// Creates a new instance of the class. + /// + /// The response that the AI system should say. public PredictedSayCommand(string response) { Response = new ChatMessage(ChatRole.Assistant) diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Application.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Application.cs index 506f28778..08a56fb28 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Application.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Application.cs @@ -763,7 +763,7 @@ public Application OnHandoff(HandoffHandler handler) ); RouteHandler routeHandler = async (turnContext, turnState, cancellationToken) => { - string token = turnContext.Activity.Value.GetType().GetProperty("Continuation").GetValue(turnContext.Activity.Value) as string; + string token = turnContext.Activity.Value.GetType().GetProperty("Continuation").GetValue(turnContext.Activity.Value) as string ?? ""; await handler(turnContext, turnState, token, cancellationToken); // Check to see if an invoke response has already been added diff --git a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Authentication/AdaptiveCards/AdaptiveCardsAuthenticationBase.cs b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Authentication/AdaptiveCards/AdaptiveCardsAuthenticationBase.cs index 1613505d4..15e577dba 100644 --- a/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Authentication/AdaptiveCards/AdaptiveCardsAuthenticationBase.cs +++ b/dotnet/packages/Microsoft.TeamsAI/Microsoft.TeamsAI/Application/Authentication/AdaptiveCards/AdaptiveCardsAuthenticationBase.cs @@ -13,10 +13,12 @@ internal abstract class AdaptiveCardsAuthenticationBase /// /// The turn context /// The sign in response +#pragma warning disable 1998 // Await call for non-implemented method public async Task AuthenticateAsync(ITurnContext context) { throw new NotImplementedException(); } +#pragma warning restore 1998 /// /// Whether the current activity is a valid activity that supports authentication