public async void TestGetCapabilities()
        {
            using (var hc = new TestHostContext(this))
                using (var tokenSource = new CancellationTokenSource())
                {
                    Mock <IConfigurationManager> configurationManager = new Mock <IConfigurationManager>();
                    hc.SetSingleton <IConfigurationManager>(configurationManager.Object);

                    // Arrange
                    var provider = new AgentCapabilitiesProvider();
                    provider.Initialize(hc);
                    var settings = new AgentSettings()
                    {
                        AgentName = "IAmAgent007"
                    };

                    // Act
                    List <Capability> capabilities = await provider.GetCapabilitiesAsync(settings, tokenSource.Token);

                    // Assert
                    Assert.NotNull(capabilities);
                    Capability agentNameCapability = capabilities.SingleOrDefault(x => string.Equals(x.Name, "Agent.Name", StringComparison.Ordinal));
                    Assert.NotNull(agentNameCapability);
                    Assert.Equal("IAmAgent007", agentNameCapability.Value);
                }
        }
        private async Task VerifyInteractiveSessionCapability(IHostContext hc, CancellationToken token, bool expectedValue)
        {
            // Arrange
            var provider = new AgentCapabilitiesProvider();

            provider.Initialize(hc);
            var settings = new AgentSettings()
            {
                AgentName = "IAmAgent007"
            };

            // Act
            List <Capability> capabilities = await provider.GetCapabilitiesAsync(settings, token);

            // Assert
            Assert.NotNull(capabilities);
            Capability iSessionCapability = capabilities.SingleOrDefault(x => string.Equals(x.Name, "InteractiveSession", StringComparison.Ordinal));

            Assert.NotNull(iSessionCapability);
            bool.TryParse(iSessionCapability.Value, out bool isInteractive);
            Assert.Equal(expectedValue, isInteractive);
        }