using Agent.App.Logging; using Agent.Core.Localization; using Agent.Mcp; namespace Agent.Core.Tests; public sealed class ObservabilityTests { [Fact] public void Ready_is_always_visible_even_when_log_threshold_is_fatal() { using var directory = new TestDirectory(); LocaleCatalog locale = LocaleCatalog.Load(Path.GetFullPath("config/locales"), "en"); using (var application = new RollingFileLog(directory.Path, 1024 * 1024, 2, "fatal")) using (var observer = new McpHostLogObserver(application, locale, directory.Path, false, 1024 * 1024, 2)) observer.Ready(new McpReadyInfo("http", "http://127.0.0.1:8080/mcp", 42, "2026-07-28", true, true)); Assert.Contains("Agent is ready", File.ReadAllText(Path.Combine(directory.Path, "application.log")), StringComparison.Ordinal); } [Fact] public void Ready_and_http_request_are_logged_without_sensitive_payloads() { using var directory = new TestDirectory(); LocaleCatalog locale = LocaleCatalog.Load(Path.GetFullPath("config/locales"), "en"); using (var application = new RollingFileLog(directory.Path, 1024 * 1024, 2)) { using var observer = new McpHostLogObserver(application, locale, directory.Path, true, 1024 * 1024, 2); observer.Ready(new McpReadyInfo("http", "http://127.0.0.1:8080/mcp", 42, "2026-07-28", true, true)); observer.HttpRequestStarted(new McpHttpRequestStartInfo("connection", "trace", "127.0.0.1", 50123, "POST", "/mcp")); observer.HttpRequest(new McpHttpRequestInfo(DateTimeOffset.UtcNow, "connection", "trace", "127.0.0.1", 50123, "127.0.0.1", 8080, "POST", "/mcp", 200, 12.5, "application/json", 100, "test-client", "2026-07-28", "tools/list", "agent_run")); } string applicationText = File.ReadAllText(Path.Combine(directory.Path, "application.log")); Assert.Contains("Agent is ready", applicationText, StringComparison.Ordinal); Assert.Contains("remote=127.0.0.1:50123", applicationText, StringComparison.Ordinal); string httpText = File.ReadAllText(Path.Combine(directory.Path, "http.jsonl")); Assert.Contains("\"method\":\"POST\"", httpText, StringComparison.Ordinal); Assert.Contains("\"remote_ip\":\"127.0.0.1\"", httpText, StringComparison.Ordinal); Assert.DoesNotContain("Authorization", httpText, StringComparison.OrdinalIgnoreCase); Assert.DoesNotContain("Cookie", httpText, StringComparison.OrdinalIgnoreCase); Assert.DoesNotContain("prompt", httpText, StringComparison.OrdinalIgnoreCase); } }