Skip to main content
Glama

Adversary MCP Server

by brettbergin
coverage.json825 kB
{"meta": {"format": 3, "version": "7.10.0", "timestamp": "2025-08-26T11:19:35.258972", "branch_coverage": false, "show_contexts": false}, "files": {"src/adversary_mcp_server/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 11, 13, 14, 16, 18, 19, 21, 22, 23, 39, 42, 75, 77, 78, 88, 89, 90, 91, 95, 108], "summary": {"covered_lines": 25, "num_statements": 63, "percent_covered": 39.682539682539684, "percent_covered_display": "40", "missing_lines": 38, "excluded_lines": 0}, "missing_lines": [26, 27, 28, 31, 32, 33, 34, 35, 44, 46, 47, 49, 51, 52, 54, 55, 56, 59, 60, 62, 65, 66, 67, 68, 69, 72, 79, 81, 82, 83, 85, 97, 98, 100, 101, 102, 104, 105], "excluded_lines": [], "functions": {"_get_default_version": {"executed_lines": [11, 13, 14, 16, 18, 19, 21, 22, 23], "summary": {"covered_lines": 9, "num_statements": 17, "percent_covered": 52.94117647058823, "percent_covered_display": "53", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [26, 27, 28, 31, 32, 33, 34, 35], "excluded_lines": []}, "_read_version_from_pyproject": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0}, "missing_lines": [44, 46, 47, 49, 51, 52, 54, 55, 56, 59, 60, 62, 65, 66, 67, 68, 69, 72], "excluded_lines": []}, "get_version": {"executed_lines": [77, 78], "summary": {"covered_lines": 2, "num_statements": 7, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [79, 81, 82, 83, 85], "excluded_lines": []}, "__getattr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [97, 98, 100, 101, 102, 104, 105], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 39, 42, 75, 88, 89, 90, 91, 95, 108], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 9, 11, 13, 14, 16, 18, 19, 21, 22, 23, 39, 42, 75, 77, 78, 88, 89, 90, 91, 95, 108], "summary": {"covered_lines": 25, "num_statements": 63, "percent_covered": 39.682539682539684, "percent_covered_display": "40", "missing_lines": 38, "excluded_lines": 0}, "missing_lines": [26, 27, 28, 31, 32, 33, 34, 35, 44, 46, 47, 49, 51, 52, 54, 55, 56, 59, 60, 62, 65, 66, 67, 68, 69, 72, 79, 81, 82, 83, 85, 97, 98, 100, 101, 102, 104, 105], "excluded_lines": []}}}, "src/adversary_mcp_server/application/__init__.py": {"executed_lines": [1, 18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 18], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/__init__.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/input_models.py": {"executed_lines": [1, 7, 9, 11, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 43, 44, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 82, 83, 92, 93, 95, 96, 97, 99, 100, 104, 105, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 135, 136, 137, 138, 139, 142, 143, 145, 146, 147, 148, 149, 152, 162, 164, 165], "summary": {"covered_lines": 91, "num_statements": 113, "percent_covered": 80.53097345132744, "percent_covered_display": "81", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [39, 40, 41, 46, 47, 48, 50, 78, 79, 80, 85, 86, 87, 89, 102, 107, 163, 168, 169, 170, 171, 172], "excluded_lines": [], "functions": {"SemgrepScanResultInput.normalize_severity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [39, 40, 41], "excluded_lines": []}, "SemgrepScanResultInput.normalize_category": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [46, 47, 48, 50], "excluded_lines": []}, "LLMScanResultInput.normalize_severity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [78, 79, 80], "excluded_lines": []}, "LLMScanResultInput.normalize_category": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [85, 86, 87, 89], "excluded_lines": []}, "MetadataInput.ensure_target_info_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [102], "excluded_lines": []}, "MetadataInput.ensure_execution_stats_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [107], "excluded_lines": []}, "safe_convert_to_input_model": {"executed_lines": [162, 164, 165], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [163, 168, 169, 170, 171, 172], "excluded_lines": []}, "": {"executed_lines": [1, 7, 9, 11, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 43, 44, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 82, 83, 92, 93, 95, 96, 97, 99, 100, 104, 105, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 135, 136, 137, 138, 139, 142, 143, 145, 146, 147, 148, 149, 152], "summary": {"covered_lines": 88, "num_statements": 88, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SemgrepScanResultInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [39, 40, 41, 46, 47, 48, 50], "excluded_lines": []}, "LLMScanResultInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [78, 79, 80, 85, 86, 87, 89], "excluded_lines": []}, "MetadataInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [102, 107], "excluded_lines": []}, "TelemetryInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationResultInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheStatsInput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 9, 11, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 43, 44, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 75, 76, 82, 83, 92, 93, 95, 96, 97, 99, 100, 104, 105, 110, 111, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 132, 133, 135, 136, 137, 138, 139, 142, 143, 145, 146, 147, 148, 149, 152, 162, 164, 165], "summary": {"covered_lines": 91, "num_statements": 97, "percent_covered": 93.81443298969072, "percent_covered_display": "94", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [163, 168, 169, 170, 171, 172], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/llm_adapter.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 38, 47, 49, 50, 53, 54, 56, 57, 60, 61, 70, 72, 74, 75, 76, 77, 79, 86, 87, 90, 98, 99, 100, 102, 104, 106, 108, 118, 120, 122, 123, 124, 125, 127, 132, 135, 138, 140, 145, 151, 152, 153, 154, 155, 164, 166, 167, 169, 174, 175, 179, 181, 182, 184, 186, 187, 196, 201, 204, 209, 212, 219, 220, 221, 223, 225, 232, 253, 255, 256, 260, 262, 267, 268, 270, 273, 274, 276, 281, 282, 286, 288, 290, 292, 294, 295, 296, 298, 305, 307, 308, 312, 318, 320, 323, 324, 325, 327, 328, 335, 338, 340, 343, 347, 350, 352, 354, 357, 359, 360, 363, 365, 368, 370, 371, 372, 379, 398, 402, 404, 405, 407, 408, 409, 414, 415, 418, 419, 422, 423, 425, 435, 437, 440, 451, 454, 457, 458, 461, 482, 485, 487, 489, 490, 492, 494, 536, 538, 548, 549, 551, 554, 555, 558, 562, 563, 564, 565, 566, 569, 570, 571, 572, 575, 576, 579, 580, 583, 584, 585, 587, 589, 593, 594, 596, 597, 598, 599, 600, 609], "summary": {"covered_lines": 198, "num_statements": 226, "percent_covered": 87.61061946902655, "percent_covered_display": "88", "missing_lines": 28, "excluded_lines": 0}, "missing_lines": [158, 159, 162, 170, 191, 193, 194, 375, 376, 377, 426, 428, 429, 432, 445, 448, 483, 497, 500, 503, 505, 510, 531, 534, 601, 602, 607, 608], "excluded_lines": [], "functions": {"LLMScanStrategy.__init__": {"executed_lines": [47, 49, 50, 53, 54, 56, 57, 60, 61, 70], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy.get_strategy_name": {"executed_lines": [74, 75, 76, 77], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy.can_scan": {"executed_lines": [86, 87, 90, 98, 99, 100, 102], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy.get_supported_languages": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy.execute_scan": {"executed_lines": [118, 120, 122, 123, 124, 125, 127, 132, 135, 138, 140, 145, 151, 152, 153, 154, 155, 164, 166, 167, 169, 174, 175, 179, 181, 182, 184, 186, 187, 196, 201, 204, 209, 212, 219, 220, 221, 223, 225, 232, 253, 255, 256, 260], "summary": {"covered_lines": 44, "num_statements": 51, "percent_covered": 86.27450980392157, "percent_covered_display": "86", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [158, 159, 162, 170, 191, 193, 194], "excluded_lines": []}, "LLMScanStrategy._analyze_file": {"executed_lines": [267, 268], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy._analyze_directory": {"executed_lines": [273, 274], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy._analyze_code": {"executed_lines": [281, 282, 286], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy._analyze_with_session": {"executed_lines": [290, 292, 294, 295, 296, 298, 305, 307, 308, 312, 318, 320, 323, 324, 325, 327, 328, 335, 338, 340, 343, 347, 350, 352], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy._has_project_context": {"executed_lines": [357, 359, 360, 363], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy._finding_to_dict": {"executed_lines": [368, 370, 371, 372, 379], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [375, 376, 377], "excluded_lines": []}, "LLMScanStrategy._convert_to_domain_threats": {"executed_lines": [402, 404, 405, 407, 408, 409, 414, 415, 418, 419, 422, 423, 425, 435, 437, 440, 451, 454, 457, 458, 461, 482, 485, 487, 489, 490, 492], "summary": {"covered_lines": 27, "num_statements": 34, "percent_covered": 79.41176470588235, "percent_covered_display": "79", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [426, 428, 429, 432, 445, 448, 483], "excluded_lines": []}, "LLMScanStrategy._convert_legacy_threat_to_domain": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [497, 500, 503, 505, 510, 531, 534], "excluded_lines": []}, "LLMScanStrategy._map_severity": {"executed_lines": [538, 548, 549], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy._determine_category": {"executed_lines": [554, 555, 558, 562, 563, 564, 565, 566, 569, 570, 571, 572, 575, 576, 579, 580, 583, 584, 585, 587], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanStrategy._apply_severity_filter": {"executed_lines": [593, 594, 596, 597, 598, 599, 600, 609], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [601, 602, 607, 608], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 38, 72, 79, 104, 108, 262, 270, 276, 288, 354, 365, 398, 494, 536, 551, 589], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LLMScanStrategy": {"executed_lines": [47, 49, 50, 53, 54, 56, 57, 60, 61, 70, 74, 75, 76, 77, 86, 87, 90, 98, 99, 100, 102, 106, 118, 120, 122, 123, 124, 125, 127, 132, 135, 138, 140, 145, 151, 152, 153, 154, 155, 164, 166, 167, 169, 174, 175, 179, 181, 182, 184, 186, 187, 196, 201, 204, 209, 212, 219, 220, 221, 223, 225, 232, 253, 255, 256, 260, 267, 268, 273, 274, 281, 282, 286, 290, 292, 294, 295, 296, 298, 305, 307, 308, 312, 318, 320, 323, 324, 325, 327, 328, 335, 338, 340, 343, 347, 350, 352, 357, 359, 360, 363, 368, 370, 371, 372, 379, 402, 404, 405, 407, 408, 409, 414, 415, 418, 419, 422, 423, 425, 435, 437, 440, 451, 454, 457, 458, 461, 482, 485, 487, 489, 490, 492, 538, 548, 549, 554, 555, 558, 562, 563, 564, 565, 566, 569, 570, 571, 572, 575, 576, 579, 580, 583, 584, 585, 587, 593, 594, 596, 597, 598, 599, 600, 609], "summary": {"covered_lines": 164, "num_statements": 192, "percent_covered": 85.41666666666667, "percent_covered_display": "85", "missing_lines": 28, "excluded_lines": 0}, "missing_lines": [158, 159, 162, 170, 191, 193, 194, 375, 376, 377, 426, 428, 429, 432, 445, 448, 483, 497, 500, 503, 505, 510, 531, 534, 601, 602, 607, 608], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 28, 38, 72, 79, 104, 108, 262, 270, 276, 288, 354, 365, 398, 494, 536, 551, 589], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/llm_validation_adapter.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 13, 16, 17, 24, 26, 30, 31, 33, 34, 35, 36, 37, 38, 40, 42, 44, 67, 131, 150, 200, 252, 324, 328, 332], "summary": {"covered_lines": 31, "num_statements": 131, "percent_covered": 23.66412213740458, "percent_covered_display": "24", "missing_lines": 100, "excluded_lines": 0}, "missing_lines": [27, 51, 52, 55, 56, 59, 60, 63, 65, 79, 82, 83, 84, 86, 87, 89, 90, 91, 92, 97, 98, 103, 106, 111, 112, 117, 121, 123, 125, 126, 128, 129, 136, 137, 139, 140, 155, 157, 158, 160, 163, 168, 171, 180, 181, 186, 187, 189, 192, 195, 196, 198, 202, 204, 208, 209, 210, 212, 214, 221, 222, 223, 227, 230, 231, 232, 235, 238, 242, 244, 250, 260, 263, 268, 269, 270, 271, 273, 291, 294, 295, 296, 298, 301, 304, 310, 311, 312, 313, 314, 315, 320, 321, 322, 326, 330, 336, 337, 338, 340], "excluded_lines": [], "functions": {"LLMValidationStrategy.__init__": {"executed_lines": [26, 30, 31, 33, 34, 35, 36, 37, 38], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [27], "excluded_lines": []}, "LLMValidationStrategy.get_strategy_name": {"executed_lines": [42], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidationStrategy.can_validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [51, 52, 55, 56, 59, 60, 63, 65], "excluded_lines": []}, "LLMValidationStrategy.validate_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0}, "missing_lines": [79, 82, 83, 84, 86, 87, 89, 90, 91, 92, 97, 98, 103, 106, 111, 112, 117, 121, 123, 125, 126, 128, 129], "excluded_lines": []}, "LLMValidationStrategy._execute_validation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [136, 137, 139, 140], "excluded_lines": []}, "LLMValidationStrategy._apply_validation_results": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [155, 157, 158, 160, 163, 168, 171, 180, 181, 186, 187, 189, 192, 195, 196, 198], "excluded_lines": []}, "LLMValidationStrategy._filter_by_confidence": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [202, 204, 208, 209, 210, 212, 214, 221, 222, 223, 227, 230, 231, 232, 235, 238, 242, 244, 250], "excluded_lines": []}, "LLMValidationStrategy._record_validation_metadata": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0}, "missing_lines": [260, 263, 268, 269, 270, 271, 273, 291, 294, 295, 296, 298, 301, 304, 310, 311, 312, 313, 314, 315, 320, 321, 322], "excluded_lines": []}, "LLMValidationStrategy.set_confidence_threshold": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [326], "excluded_lines": []}, "LLMValidationStrategy.get_confidence_threshold": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [330], "excluded_lines": []}, "LLMValidationStrategy.get_validation_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [336, 337, 338, 340], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 13, 16, 17, 24, 40, 44, 67, 131, 150, 200, 252, 324, 328, 332], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LLMValidationStrategy": {"executed_lines": [26, 30, 31, 33, 34, 35, 36, 37, 38, 42], "summary": {"covered_lines": 10, "num_statements": 110, "percent_covered": 9.090909090909092, "percent_covered_display": "9", "missing_lines": 100, "excluded_lines": 0}, "missing_lines": [27, 51, 52, 55, 56, 59, 60, 63, 65, 79, 82, 83, 84, 86, 87, 89, 90, 91, 92, 97, 98, 103, 106, 111, 112, 117, 121, 123, 125, 126, 128, 129, 136, 137, 139, 140, 155, 157, 158, 160, 163, 168, 171, 180, 181, 186, 187, 189, 192, 195, 196, 198, 202, 204, 208, 209, 210, 212, 214, 221, 222, 223, 227, 230, 231, 232, 235, 238, 242, 244, 250, 260, 263, 268, 269, 270, 271, 273, 291, 294, 295, 296, 298, 301, 304, 310, 311, 312, 313, 314, 315, 320, 321, 322, 326, 330, 336, 337, 338, 340], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 13, 16, 17, 24, 40, 44, 67, 131, 150, 200, 252, 324, 328, 332], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/mock_semgrep_adapter.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 18, 20, 22, 24, 26, 28, 29, 30, 32, 34, 36, 39, 56, 73, 90, 102], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [104, 105], "excluded_lines": [], "functions": {"MockSemgrepScanStrategy.get_strategy_name": {"executed_lines": [20], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MockSemgrepScanStrategy.get_supported_languages": {"executed_lines": [24], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MockSemgrepScanStrategy.can_scan": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MockSemgrepScanStrategy.execute_scan": {"executed_lines": [34, 36, 39, 56, 73, 90, 102], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [104, 105], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 18, 22, 26, 32], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"MockSemgrepScanStrategy": {"executed_lines": [20, 24, 28, 29, 30, 34, 36, 39, 56, 73, 90, 102], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [104, 105], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 18, 22, 26, 32], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/semgrep_adapter.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 38, 40, 41, 44, 45, 46, 48, 50, 51, 56, 57, 61, 63, 65, 68, 71, 73, 75, 77, 84, 85, 87, 89, 91, 93, 102, 103, 104, 107, 110, 111, 113, 115, 116, 120, 121, 123, 125, 126, 127, 129, 131, 132, 133, 134, 148, 151, 154, 159, 160, 163, 173, 176, 182, 184, 186, 188, 190, 192, 194, 198, 200, 204, 206, 207, 212, 215, 220, 250, 252, 254, 257, 259, 261, 296, 298, 305, 306, 308, 312, 313, 315, 318, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 336, 339, 340, 342, 345, 346, 347, 348, 349, 351, 355, 357, 361, 362, 364, 368, 370, 371, 372, 373, 374, 375, 377, 379, 380, 382, 383, 384, 388, 394, 396, 398, 400, 403, 404, 406, 407, 413, 415, 417, 419, 420, 421, 422, 425, 426, 432, 433, 434, 435, 436, 441, 446, 448, 450, 453, 454, 457, 458, 459, 462, 468, 469, 470, 473, 474, 477, 478, 479, 484], "summary": {"covered_lines": 185, "num_statements": 202, "percent_covered": 91.58415841584159, "percent_covered_display": "92", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [136, 139, 140, 144, 145, 264, 269, 272, 275, 350, 352, 389, 390, 437, 438, 440, 463], "excluded_lines": [], "functions": {"SemgrepScanStrategy.__init__": {"executed_lines": [40, 41, 44, 45, 46, 48, 50, 51, 56, 57, 61, 63, 65, 68, 71], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy.get_strategy_name": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy.can_scan": {"executed_lines": [84, 85, 87], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy.get_supported_languages": {"executed_lines": [91], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy.execute_scan": {"executed_lines": [102, 103, 104, 107, 110, 111, 113, 115, 116, 120, 121, 123, 125, 126, 127, 129, 131, 132, 133, 134, 148, 151, 154, 159, 160, 163, 173, 176, 182, 184], "summary": {"covered_lines": 30, "num_statements": 35, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [136, 139, 140, 144, 145], "excluded_lines": []}, "SemgrepScanStrategy._scan_file": {"executed_lines": [188], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._scan_directory": {"executed_lines": [192], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._scan_code": {"executed_lines": [198], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._convert_to_domain_threats": {"executed_lines": [204, 206, 207, 212, 215, 220, 250, 252, 254, 257, 259], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._convert_legacy_threat_to_domain": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [264, 269, 272, 275], "excluded_lines": []}, "SemgrepScanStrategy._map_severity": {"executed_lines": [298, 305, 306], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._map_scanner_severity": {"executed_lines": [312, 313], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._determine_category": {"executed_lines": [318, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._map_infrastructure_severity_to_domain": {"executed_lines": [339, 340, 342, 345, 346, 347, 348, 349, 351, 355], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [350, 352], "excluded_lines": []}, "SemgrepScanStrategy._apply_severity_filter": {"executed_lines": [361, 362, 364], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._count_lines_in_file": {"executed_lines": [370, 371, 372, 373, 374, 375], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._count_lines_in_directory": {"executed_lines": [379, 380, 382, 383, 384, 388, 394], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [389, 390], "excluded_lines": []}, "SemgrepScanStrategy._get_semgrep_version": {"executed_lines": [398, 400, 403, 404, 406, 407, 413], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SemgrepScanStrategy._get_rules_count": {"executed_lines": [417, 419, 420, 421, 422, 425, 426, 432, 433, 434, 435, 436, 441, 446], "summary": {"covered_lines": 14, "num_statements": 17, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [437, 438, 440], "excluded_lines": []}, "SemgrepScanStrategy._validate_scan_metadata": {"executed_lines": [450, 453, 454, 457, 458, 459, 462, 468, 469, 470, 473, 474, 477, 478, 479, 484], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [463], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 38, 73, 77, 89, 93, 186, 190, 194, 200, 261, 296, 308, 315, 336, 357, 368, 377, 396, 415, 448], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SemgrepScanStrategy": {"executed_lines": [40, 41, 44, 45, 46, 48, 50, 51, 56, 57, 61, 63, 65, 68, 71, 75, 84, 85, 87, 91, 102, 103, 104, 107, 110, 111, 113, 115, 116, 120, 121, 123, 125, 126, 127, 129, 131, 132, 133, 134, 148, 151, 154, 159, 160, 163, 173, 176, 182, 184, 188, 192, 198, 204, 206, 207, 212, 215, 220, 250, 252, 254, 257, 259, 298, 305, 306, 312, 313, 318, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 334, 339, 340, 342, 345, 346, 347, 348, 349, 351, 355, 361, 362, 364, 370, 371, 372, 373, 374, 375, 379, 380, 382, 383, 384, 388, 394, 398, 400, 403, 404, 406, 407, 413, 417, 419, 420, 421, 422, 425, 426, 432, 433, 434, 435, 436, 441, 446, 450, 453, 454, 457, 458, 459, 462, 468, 469, 470, 473, 474, 477, 478, 479, 484], "summary": {"covered_lines": 146, "num_statements": 163, "percent_covered": 89.57055214723927, "percent_covered_display": "90", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [136, 139, 140, 144, 145, 264, 269, 272, 275, 350, 352, 389, 390, 437, 438, 440, 463], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 38, 73, 77, 89, 93, 186, 190, 194, 200, 261, 296, 308, 315, 336, 357, 368, 377, 396, 415, 448], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/session_aware_llm_adapter.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 13, 14, 15, 16, 20, 23, 24, 31, 33, 34, 37, 38, 40, 41, 46, 48, 50, 53, 54, 57, 59, 61, 64, 66, 68, 71, 72, 73, 76, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 94, 97, 104, 118, 119, 121, 123, 126, 129, 131, 137, 139, 142, 143, 146, 148, 154, 156, 157, 160, 161, 162, 164, 166, 173, 175, 176, 179, 185, 191, 193, 196, 197, 199, 202, 205, 206, 207, 208, 211, 212, 215, 216, 217, 220, 221, 223, 225, 227, 230, 231, 235, 239, 241, 243, 248, 249, 251, 252, 271, 306, 308, 310, 316, 317, 319], "summary": {"covered_lines": 111, "num_statements": 116, "percent_covered": 95.6896551724138, "percent_covered_display": "96", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [42, 43, 44, 69, 144], "excluded_lines": [], "functions": {"SessionAwareLLMScanStrategy.__init__": {"executed_lines": [33, 34, 37, 38, 40, 41], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [42, 43, 44], "excluded_lines": []}, "SessionAwareLLMScanStrategy.get_strategy_name": {"executed_lines": [48], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy.can_scan": {"executed_lines": [53, 54, 57], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy.get_supported_languages": {"executed_lines": [61, 64], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy.execute_scan": {"executed_lines": [68, 71, 72, 73, 76, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 94, 97, 104, 118, 119], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [69], "excluded_lines": []}, "SessionAwareLLMScanStrategy._analyze_file_with_context": {"executed_lines": [123, 126, 129, 131], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy._analyze_directory_with_context": {"executed_lines": [139, 142, 143, 146, 148], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [144], "excluded_lines": []}, "SessionAwareLLMScanStrategy._analyze_code_with_context": {"executed_lines": [156, 157, 160, 161, 162, 164, 166], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy._analyze_diff_with_context": {"executed_lines": [175, 176, 179, 185], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy._create_context_hint": {"executed_lines": [193, 196, 197, 199, 202, 205, 206, 207, 208, 211, 212, 215, 216, 217, 220, 221, 223], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy._create_analysis_focus": {"executed_lines": [227, 230, 231, 235, 239, 241], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy._convert_to_domain_threats": {"executed_lines": [248, 249, 251, 252, 271, 306, 308], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanStrategy._apply_severity_filter": {"executed_lines": [316, 317, 319], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 13, 14, 15, 16, 20, 23, 24, 31, 46, 50, 59, 66, 121, 137, 154, 173, 191, 225, 243, 310], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SessionAwareLLMScanStrategy": {"executed_lines": [33, 34, 37, 38, 40, 41, 48, 53, 54, 57, 61, 64, 68, 71, 72, 73, 76, 78, 79, 80, 81, 82, 83, 84, 85, 88, 89, 94, 97, 104, 118, 119, 123, 126, 129, 131, 139, 142, 143, 146, 148, 156, 157, 160, 161, 162, 164, 166, 175, 176, 179, 185, 193, 196, 197, 199, 202, 205, 206, 207, 208, 211, 212, 215, 216, 217, 220, 221, 223, 227, 230, 231, 235, 239, 241, 248, 249, 251, 252, 271, 306, 308, 316, 317, 319], "summary": {"covered_lines": 85, "num_statements": 90, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [42, 43, 44, 69, 144], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 13, 14, 15, 16, 20, 23, 24, 31, 46, 50, 59, 66, 121, 137, 154, 173, 191, 225, 243, 310], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/adapters/telemetry_adapter.py": {"executed_lines": [1, 3, 5, 9, 10, 11, 12, 13, 15, 18, 19, 27, 31, 34, 35, 38, 40, 42, 43, 45, 47, 48, 52, 58, 69, 70, 72, 73, 75, 77, 78, 80, 81, 93, 94, 96, 98, 99, 101, 102, 103, 104, 107, 112, 113, 116, 117, 118, 119, 121, 128, 129, 131, 138, 139, 141, 142, 143, 145, 146, 147, 150, 151, 153, 155, 156, 158, 159, 160, 163, 167, 170, 173, 175, 183, 184, 187, 188, 196, 199, 200, 202, 248, 251, 252, 255, 257, 261, 263, 264, 292, 293, 297, 299, 301, 303, 305, 340, 342, 344, 345, 354, 357, 360, 363, 368, 380, 382, 384, 386, 387, 392, 393, 402, 410, 428, 454, 477, 485, 494, 496, 497, 499, 500, 501, 505, 507, 508, 509, 510, 512, 521, 530], "summary": {"covered_lines": 130, "num_statements": 173, "percent_covered": 75.14450867052022, "percent_covered_display": "75", "missing_lines": 43, "excluded_lines": 0}, "missing_lines": [253, 294, 295, 381, 383, 385, 389, 394, 395, 396, 397, 399, 430, 432, 433, 435, 452, 456, 457, 459, 460, 462, 463, 465, 479, 487, 503, 514, 515, 516, 518, 519, 523, 524, 528, 532, 533, 534, 535, 538, 539, 540, 541], "excluded_lines": [], "functions": {"TelemetryAdapter.__init__": {"executed_lines": [31, 34, 35, 38], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryAdapter.record_scan_completion": {"executed_lines": [42, 43, 45, 47, 48, 52, 58, 69, 70, 72, 73], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryAdapter.record_threat_detection": {"executed_lines": [77, 78, 80, 81, 93, 94], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryAdapter.record_scan_performance": {"executed_lines": [98, 99, 101, 102, 103, 104, 107, 112, 113, 116, 117, 118, 119, 121, 128, 129], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryAdapter.record_validation_results": {"executed_lines": [138, 139, 141, 142, 143, 145, 146, 147, 150, 151, 153, 155, 156, 158, 159, 160, 163, 167, 170, 173, 175, 183, 184], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainTelemetryAdapter.extract_scan_metrics": {"executed_lines": [199, 200, 202, 248, 251, 252, 255], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [253], "excluded_lines": []}, "DomainTelemetryAdapter.extract_threat_metrics": {"executed_lines": [261, 263, 264, 292, 293, 297, 299], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [294, 295], "excluded_lines": []}, "DomainTelemetryAdapter.extract_performance_metrics": {"executed_lines": [303, 305], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainTelemetryAdapter.extract_quality_metrics": {"executed_lines": [342, 344, 345, 354, 357, 360, 363, 368, 380, 382, 384, 386, 387, 392, 393, 402, 410], "summary": {"covered_lines": 17, "num_statements": 26, "percent_covered": 65.38461538461539, "percent_covered_display": "65", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [381, 383, 385, 389, 394, 395, 396, 397, 399], "excluded_lines": []}, "DomainTelemetryAdapter._extract_scanner_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [430, 432, 433, 435, 452], "excluded_lines": []}, "DomainTelemetryAdapter._extract_validation_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [456, 457, 459, 460, 462, 463, 465], "excluded_lines": []}, "DomainTelemetryAdapter._extract_semgrep_threat_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [479], "excluded_lines": []}, "DomainTelemetryAdapter._extract_llm_threat_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [487], "excluded_lines": []}, "DomainTelemetryAdapter._get_file_size": {"executed_lines": [496, 497, 499, 500, 501], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [503], "excluded_lines": []}, "DomainTelemetryAdapter._get_category_breakdown": {"executed_lines": [507, 508, 509, 510], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainTelemetryAdapter._calculate_throughput": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [514, 515, 516, 518, 519], "excluded_lines": []}, "DomainTelemetryAdapter._estimate_lines_scanned": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [523, 524, 528], "excluded_lines": []}, "DomainTelemetryAdapter._count_files_processed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [532, 533, 534, 535, 538, 539, 540, 541], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 9, 10, 11, 12, 13, 15, 18, 19, 27, 40, 75, 96, 131, 187, 188, 196, 257, 301, 340, 428, 454, 477, 485, 494, 505, 512, 521, 530], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TelemetryAdapter": {"executed_lines": [31, 34, 35, 38, 42, 43, 45, 47, 48, 52, 58, 69, 70, 72, 73, 77, 78, 80, 81, 93, 94, 98, 99, 101, 102, 103, 104, 107, 112, 113, 116, 117, 118, 119, 121, 128, 129, 138, 139, 141, 142, 143, 145, 146, 147, 150, 151, 153, 155, 156, 158, 159, 160, 163, 167, 170, 173, 175, 183, 184], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainTelemetryAdapter": {"executed_lines": [199, 200, 202, 248, 251, 252, 255, 261, 263, 264, 292, 293, 297, 299, 303, 305, 342, 344, 345, 354, 357, 360, 363, 368, 380, 382, 384, 386, 387, 392, 393, 402, 410, 496, 497, 499, 500, 501, 507, 508, 509, 510], "summary": {"covered_lines": 42, "num_statements": 85, "percent_covered": 49.411764705882355, "percent_covered_display": "49", "missing_lines": 43, "excluded_lines": 0}, "missing_lines": [253, 294, 295, 381, 383, 385, 389, 394, 395, 396, 397, 399, 430, 432, 433, 435, 452, 456, 457, 459, 460, 462, 463, 465, 479, 487, 503, 514, 515, 516, 518, 519, 523, 524, 528, 532, 533, 534, 535, 538, 539, 540, 541], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 9, 10, 11, 12, 13, 15, 18, 19, 27, 40, 75, 96, 131, 187, 188, 196, 257, 301, 340, 428, 454, 477, 485, 494, 505, 512, 521, 530], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/bootstrap_clean.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 21, 26, 37, 38, 39, 40, 41, 44, 45, 52, 53, 54, 56, 59, 64, 65, 66, 67, 69, 70, 72, 73, 74, 76, 79, 83, 84, 85, 86, 88, 89, 91, 92, 93, 95, 97, 98, 99, 101, 103, 104, 105, 107, 110, 111, 113, 114, 117, 119, 120, 122, 123, 133, 136, 137, 139, 140, 142, 143, 145, 146, 148, 149, 151, 152, 153, 154, 155], "summary": {"covered_lines": 79, "num_statements": 79, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3}, "missing_lines": [], "excluded_lines": [23, 24, 25], "functions": {"StrategyFactory.create": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [23]}, "_create_strategy_safely": {"executed_lines": [37, 38, 39, 40, 41], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanArchitectureBootstrap.get_scan_strategies": {"executed_lines": [56, 59, 64, 65, 66, 67, 69, 70], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanArchitectureBootstrap.get_validation_strategies": {"executed_lines": [76, 79, 83, 84, 85, 86, 88, 89], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanArchitectureBootstrap.get_threat_aggregator": {"executed_lines": [95], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanArchitectureBootstrap.get_validation_service": {"executed_lines": [101], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanArchitectureBootstrap.get_scan_orchestrator": {"executed_lines": [107, 110, 111, 113, 114, 117, 119, 120], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanArchitectureBootstrap.create_for_testing": {"executed_lines": [133, 136, 137, 139, 140, 142, 143, 145, 146], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanArchitectureBootstrap.clear_cache": {"executed_lines": [151, 152, 153, 154, 155], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 21, 26, 44, 45, 52, 53, 54, 72, 73, 74, 91, 92, 93, 97, 98, 99, 103, 104, 105, 122, 123, 148, 149], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [24, 25]}}, "classes": {"StrategyFactory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [23]}, "CleanArchitectureBootstrap": {"executed_lines": [56, 59, 64, 65, 66, 67, 69, 70, 76, 79, 83, 84, 85, 86, 88, 89, 95, 101, 107, 110, 111, 113, 114, 117, 119, 120, 133, 136, 137, 139, 140, 142, 143, 145, 146, 151, 152, 153, 154, 155], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 15, 18, 19, 21, 26, 37, 38, 39, 40, 41, 44, 45, 52, 53, 54, 72, 73, 74, 91, 92, 93, 97, 98, 99, 103, 104, 105, 122, 123, 148, 149], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 2}, "missing_lines": [], "excluded_lines": [24, 25]}}}, "src/adversary_mcp_server/application/cli/__init__.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/cli/clean_cli.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 18, 21, 25, 26, 27, 28, 33, 34, 35, 37, 38, 41, 42, 49, 51, 52, 53, 54, 57, 58, 60, 72, 73, 78, 79, 88, 91, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 110, 111, 112, 116, 118, 120, 121, 129, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 173, 185, 186, 191, 192, 201, 204, 209, 210, 211, 212, 213, 214, 215, 216, 223, 226, 228, 230, 231, 239, 285, 298, 301, 306, 307, 317, 320, 325, 326, 327, 328, 329, 330, 331, 332, 333, 340, 345, 347, 349, 350, 359, 402, 542, 552, 553, 554, 555, 563, 564, 565, 566, 572, 573, 574, 575, 582, 583, 584, 586, 588, 589, 590, 591, 597, 599, 602, 603, 605, 607, 609, 612, 620, 621, 623, 628, 629, 630, 631, 632, 633, 635, 636, 643, 645, 669, 689, 735, 838, 907, 1000, 1011, 1080, 1237, 1329, 1378, 1380, 1381, 1382, 1384, 1400, 1408, 1498, 1514, 1558, 1585, 1634, 1635, 1636, 1641, 1642, 1643, 1646, 1647, 1652, 1658, 1664, 1665, 1666, 1716, 1717, 1718, 1721, 1722, 1727, 1733, 1739, 1740, 1741, 1793, 1794, 1795, 1796, 1799, 1800, 1805, 1811, 1817, 1818, 1819, 1886, 1887, 1893, 1894, 1895, 1896, 1899, 1900, 1901, 1906, 1911, 1916, 1921, 1926, 1968, 1969, 1970, 1973, 1974, 1975, 1980, 1985, 1990, 1995, 2000, 2032, 2033, 2034, 2044, 2045, 2051, 2056, 2061, 2129, 2145], "summary": {"covered_lines": 245, "num_statements": 824, "percent_covered": 29.733009708737864, "percent_covered_display": "30", "missing_lines": 579, "excluded_lines": 0}, "missing_lines": [89, 132, 138, 141, 142, 150, 152, 155, 202, 218, 219, 220, 221, 224, 242, 248, 250, 253, 261, 265, 267, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 318, 335, 336, 337, 338, 341, 362, 368, 370, 371, 380, 382, 384, 388, 389, 390, 391, 392, 393, 395, 396, 397, 398, 399, 400, 404, 405, 406, 407, 410, 411, 412, 413, 418, 425, 426, 437, 438, 449, 450, 461, 462, 463, 472, 473, 480, 481, 482, 491, 492, 498, 499, 522, 523, 524, 525, 528, 529, 533, 537, 538, 539, 540, 558, 559, 560, 576, 577, 579, 592, 593, 594, 595, 647, 648, 650, 652, 654, 655, 657, 662, 663, 671, 672, 674, 677, 682, 683, 691, 692, 693, 695, 696, 703, 708, 709, 711, 713, 714, 715, 716, 718, 719, 720, 722, 728, 729, 737, 739, 741, 742, 745, 747, 748, 750, 751, 753, 754, 755, 756, 759, 760, 763, 764, 765, 767, 768, 769, 772, 775, 776, 779, 780, 782, 784, 789, 791, 792, 799, 800, 801, 803, 805, 812, 815, 816, 817, 819, 821, 827, 833, 834, 836, 840, 842, 844, 845, 846, 849, 851, 852, 855, 856, 857, 862, 864, 865, 866, 867, 878, 879, 880, 890, 896, 902, 903, 905, 924, 925, 928, 929, 930, 933, 936, 937, 938, 939, 940, 943, 944, 945, 948, 960, 961, 964, 965, 970, 971, 975, 978, 983, 984, 987, 989, 990, 991, 992, 993, 995, 996, 997, 998, 1004, 1007, 1009, 1015, 1018, 1019, 1025, 1026, 1029, 1030, 1036, 1037, 1040, 1041, 1044, 1045, 1048, 1051, 1052, 1053, 1057, 1063, 1064, 1067, 1071, 1078, 1082, 1084, 1086, 1088, 1089, 1093, 1094, 1098, 1103, 1104, 1105, 1106, 1108, 1111, 1112, 1115, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1131, 1138, 1141, 1142, 1143, 1144, 1149, 1150, 1151, 1153, 1154, 1159, 1160, 1165, 1172, 1173, 1174, 1175, 1176, 1178, 1180, 1183, 1185, 1186, 1189, 1196, 1197, 1202, 1203, 1204, 1208, 1212, 1214, 1217, 1220, 1222, 1223, 1225, 1228, 1233, 1234, 1235, 1244, 1245, 1246, 1247, 1250, 1251, 1260, 1261, 1263, 1268, 1278, 1280, 1281, 1293, 1295, 1296, 1297, 1298, 1300, 1301, 1303, 1304, 1306, 1308, 1309, 1310, 1311, 1313, 1314, 1316, 1317, 1319, 1321, 1327, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1344, 1345, 1347, 1350, 1353, 1356, 1357, 1358, 1361, 1363, 1364, 1366, 1367, 1368, 1371, 1373, 1374, 1375, 1376, 1385, 1387, 1393, 1398, 1404, 1405, 1406, 1418, 1419, 1422, 1424, 1426, 1427, 1430, 1432, 1434, 1435, 1440, 1445, 1446, 1447, 1449, 1452, 1462, 1467, 1471, 1474, 1477, 1478, 1483, 1484, 1487, 1488, 1492, 1494, 1495, 1496, 1500, 1506, 1507, 1510, 1512, 1517, 1538, 1539, 1554, 1556, 1560, 1561, 1562, 1563, 1564, 1566, 1567, 1572, 1576, 1583, 1589, 1591, 1615, 1616, 1618, 1619, 1622, 1624, 1625, 1627, 1629, 1630, 1638, 1677, 1679, 1680, 1681, 1689, 1690, 1691, 1698, 1699, 1711, 1712, 1713, 1752, 1754, 1757, 1758, 1766, 1767, 1768, 1775, 1776, 1788, 1789, 1790, 1831, 1833, 1834, 1835, 1843, 1844, 1845, 1853, 1854, 1855, 1857, 1858, 1861, 1862, 1863, 1865, 1867, 1868, 1881, 1882, 1883, 1889, 1890, 1946, 1948, 1949, 1950, 1963, 1964, 1965, 2012, 2013, 2014, 2027, 2028, 2029, 2036, 2037, 2038, 2039, 2040, 2041, 2063, 2065, 2066, 2067, 2069, 2070, 2075, 2078, 2080, 2084, 2090, 2093, 2094, 2097, 2098, 2100, 2101, 2103, 2106, 2107, 2111, 2113, 2114, 2116, 2117, 2121, 2123, 2124, 2125, 2126, 2132, 2133, 2135, 2136, 2137, 2138, 2139, 2140, 2142, 2146], "excluded_lines": [], "functions": {"CleanCLI.__init__": {"executed_lines": [51, 52, 53, 54, 57, 58], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanCLI.scan_file": {"executed_lines": [72, 73, 78, 79, 88, 91, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 110, 111, 112, 116, 118, 120, 121, 129, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171], "summary": {"covered_lines": 38, "num_statements": 46, "percent_covered": 82.6086956521739, "percent_covered_display": "83", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [89, 132, 138, 141, 142, 150, 152, 155], "excluded_lines": []}, "CleanCLI.scan_directory": {"executed_lines": [185, 186, 191, 192, 201, 204, 209, 210, 211, 212, 213, 214, 215, 216, 223, 226, 228, 230, 231, 239], "summary": {"covered_lines": 20, "num_statements": 45, "percent_covered": 44.44444444444444, "percent_covered_display": "44", "missing_lines": 25, "excluded_lines": 0}, "missing_lines": [202, 218, 219, 220, 221, 224, 242, 248, 250, 253, 261, 265, 267, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283], "excluded_lines": []}, "CleanCLI.scan_code": {"executed_lines": [298, 301, 306, 307, 317, 320, 325, 326, 327, 328, 329, 330, 331, 332, 333, 340, 345, 347, 349, 350, 359], "summary": {"covered_lines": 21, "num_statements": 46, "percent_covered": 45.65217391304348, "percent_covered_display": "46", "missing_lines": 25, "excluded_lines": 0}, "missing_lines": [318, 335, 336, 337, 338, 341, 362, 368, 370, 371, 380, 382, 384, 388, 389, 390, 391, 392, 393, 395, 396, 397, 398, 399, 400], "excluded_lines": []}, "CleanCLI.get_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 38, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 38, "excluded_lines": 0}, "missing_lines": [404, 405, 406, 407, 410, 411, 412, 413, 418, 425, 426, 437, 438, 449, 450, 461, 462, 463, 472, 473, 480, 481, 482, 491, 492, 498, 499, 522, 523, 524, 525, 528, 529, 533, 537, 538, 539, 540], "excluded_lines": []}, "CleanCLI._output_results": {"executed_lines": [552, 553, 554, 555, 563, 564, 565, 566, 572, 573, 574, 575, 582, 583, 584, 586, 588, 589, 590, 591, 597, 599, 602, 603, 605], "summary": {"covered_lines": 25, "num_statements": 35, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [558, 559, 560, 576, 577, 579, 592, 593, 594, 595], "excluded_lines": []}, "CleanCLI._print_summary": {"executed_lines": [609, 612, 620, 621, 623, 628, 629, 630, 631, 632, 633, 635, 636, 643], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanCLI._get_database_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [647, 648, 650, 652, 654, 655, 657, 662, 663], "excluded_lines": []}, "CleanCLI._get_cache_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [671, 672, 674, 677, 682, 683], "excluded_lines": []}, "CleanCLI._get_llm_configuration_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [691, 692, 693, 695, 696, 703, 708, 709, 711, 713, 714, 715, 716, 718, 719, 720, 722, 728, 729], "excluded_lines": []}, "CleanCLI._get_scanner_statuses": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 46, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 46, "excluded_lines": 0}, "missing_lines": [737, 739, 741, 742, 745, 747, 748, 750, 751, 753, 754, 755, 756, 759, 760, 763, 764, 765, 767, 768, 769, 772, 775, 776, 779, 780, 782, 784, 789, 791, 792, 799, 800, 801, 803, 805, 812, 815, 816, 817, 819, 821, 827, 833, 834, 836], "excluded_lines": []}, "CleanCLI._get_validation_statuses": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0}, "missing_lines": [840, 842, 844, 845, 846, 849, 851, 852, 855, 856, 857, 862, 864, 865, 866, 867, 878, 879, 880, 890, 896, 902, 903, 905], "excluded_lines": []}, "CleanCLI.configure_settings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 35, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 35, "excluded_lines": 0}, "missing_lines": [924, 925, 928, 929, 930, 933, 936, 937, 938, 939, 940, 943, 944, 945, 948, 960, 961, 964, 965, 970, 971, 975, 978, 983, 984, 987, 989, 990, 991, 992, 993, 995, 996, 997, 998], "excluded_lines": []}, "CleanCLI._update_config_from_params": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1004, 1007, 1009], "excluded_lines": []}, "CleanCLI._interactive_configure": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0}, "missing_lines": [1015, 1018, 1019, 1025, 1026, 1029, 1030, 1036, 1037, 1040, 1041, 1044, 1045, 1048, 1051, 1052, 1053, 1057, 1063, 1064, 1067, 1071, 1078], "excluded_lines": []}, "CleanCLI._configure_llm_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 69, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 69, "excluded_lines": 0}, "missing_lines": [1082, 1084, 1086, 1088, 1089, 1093, 1094, 1098, 1103, 1104, 1105, 1106, 1108, 1111, 1112, 1115, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1131, 1138, 1141, 1142, 1143, 1144, 1149, 1150, 1151, 1153, 1154, 1159, 1160, 1165, 1172, 1173, 1174, 1175, 1176, 1178, 1180, 1183, 1185, 1186, 1189, 1196, 1197, 1202, 1203, 1204, 1208, 1212, 1214, 1217, 1220, 1222, 1223, 1225, 1228, 1233, 1234, 1235], "excluded_lines": []}, "CleanCLI._show_configuration_summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 34, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 34, "excluded_lines": 0}, "missing_lines": [1244, 1245, 1246, 1247, 1250, 1251, 1260, 1261, 1263, 1268, 1278, 1280, 1281, 1293, 1295, 1296, 1297, 1298, 1300, 1301, 1303, 1304, 1306, 1308, 1309, 1310, 1311, 1313, 1314, 1316, 1317, 1319, 1321, 1327], "excluded_lines": []}, "CleanCLI.reset_configuration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0}, "missing_lines": [1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1344, 1345, 1347, 1350, 1353, 1356, 1357, 1358, 1361, 1363, 1364, 1366, 1367, 1368, 1371, 1373, 1374, 1375, 1376], "excluded_lines": []}, "CleanCLI._init_session_manager": {"executed_lines": [1380, 1381, 1382, 1384, 1400], "summary": {"covered_lines": 5, "num_statements": 12, "percent_covered": 41.666666666666664, "percent_covered_display": "42", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [1385, 1387, 1393, 1398, 1404, 1405, 1406], "excluded_lines": []}, "CleanCLI.scan_project_with_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 30, "excluded_lines": 0}, "missing_lines": [1418, 1419, 1422, 1424, 1426, 1427, 1430, 1432, 1434, 1435, 1440, 1445, 1446, 1447, 1449, 1452, 1462, 1467, 1471, 1474, 1477, 1478, 1483, 1484, 1487, 1488, 1492, 1494, 1495, 1496], "excluded_lines": []}, "CleanCLI.get_session_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [1500, 1506, 1507, 1510, 1512], "excluded_lines": []}, "CleanCLI._perform_cli_session_analysis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [1517, 1538, 1539, 1554, 1556], "excluded_lines": []}, "CleanCLI._display_session_findings": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [1560, 1561, 1562, 1563, 1564, 1566, 1567, 1572, 1576, 1583], "excluded_lines": []}, "CleanCLI._save_session_results": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [1589, 1591, 1615, 1616, 1618, 1619, 1622, 1624, 1625, 1627, 1629, 1630], "excluded_lines": []}, "cli": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1638], "excluded_lines": []}, "scan_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [1677, 1679, 1680, 1681, 1689, 1690, 1691, 1698, 1699, 1711, 1712, 1713], "excluded_lines": []}, "scan_directory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [1752, 1754, 1757, 1758, 1766, 1767, 1768, 1775, 1776, 1788, 1789, 1790], "excluded_lines": []}, "scan_code": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 21, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 21, "excluded_lines": 0}, "missing_lines": [1831, 1833, 1834, 1835, 1843, 1844, 1845, 1853, 1854, 1855, 1857, 1858, 1861, 1862, 1863, 1865, 1867, 1868, 1881, 1882, 1883], "excluded_lines": []}, "status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1889, 1890], "excluded_lines": []}, "configure": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [1946, 1948, 1949, 1950, 1963, 1964, 1965], "excluded_lines": []}, "setup": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [2012, 2013, 2014, 2027, 2028, 2029], "excluded_lines": []}, "reset": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [2036, 2037, 2038, 2039, 2040, 2041], "excluded_lines": []}, "dashboard": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 30, "excluded_lines": 0}, "missing_lines": [2063, 2065, 2066, 2067, 2069, 2070, 2075, 2078, 2080, 2084, 2090, 2093, 2094, 2097, 2098, 2100, 2101, 2103, 2106, 2107, 2111, 2113, 2114, 2116, 2117, 2121, 2123, 2124, 2125, 2126], "excluded_lines": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [2132, 2133, 2135, 2136, 2137, 2138, 2139, 2140, 2142], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 18, 21, 25, 26, 27, 28, 33, 34, 35, 37, 38, 41, 42, 49, 60, 173, 285, 402, 542, 607, 645, 669, 689, 735, 838, 907, 1000, 1011, 1080, 1237, 1329, 1378, 1408, 1498, 1514, 1558, 1585, 1634, 1635, 1636, 1641, 1642, 1643, 1646, 1647, 1652, 1658, 1664, 1665, 1666, 1716, 1717, 1718, 1721, 1722, 1727, 1733, 1739, 1740, 1741, 1793, 1794, 1795, 1796, 1799, 1800, 1805, 1811, 1817, 1818, 1819, 1886, 1887, 1893, 1894, 1895, 1896, 1899, 1900, 1901, 1906, 1911, 1916, 1921, 1926, 1968, 1969, 1970, 1973, 1974, 1975, 1980, 1985, 1990, 1995, 2000, 2032, 2033, 2034, 2044, 2045, 2051, 2056, 2061, 2129, 2145], "summary": {"covered_lines": 116, "num_statements": 117, "percent_covered": 99.14529914529915, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [2146], "excluded_lines": []}}, "classes": {"CleanCLI": {"executed_lines": [51, 52, 53, 54, 57, 58, 72, 73, 78, 79, 88, 91, 96, 97, 98, 99, 100, 101, 102, 103, 105, 106, 107, 108, 110, 111, 112, 116, 118, 120, 121, 129, 159, 160, 161, 162, 163, 164, 166, 167, 168, 169, 170, 171, 185, 186, 191, 192, 201, 204, 209, 210, 211, 212, 213, 214, 215, 216, 223, 226, 228, 230, 231, 239, 298, 301, 306, 307, 317, 320, 325, 326, 327, 328, 329, 330, 331, 332, 333, 340, 345, 347, 349, 350, 359, 552, 553, 554, 555, 563, 564, 565, 566, 572, 573, 574, 575, 582, 583, 584, 586, 588, 589, 590, 591, 597, 599, 602, 603, 605, 609, 612, 620, 621, 623, 628, 629, 630, 631, 632, 633, 635, 636, 643, 1380, 1381, 1382, 1384, 1400], "summary": {"covered_lines": 129, "num_statements": 601, "percent_covered": 21.46422628951747, "percent_covered_display": "21", "missing_lines": 472, "excluded_lines": 0}, "missing_lines": [89, 132, 138, 141, 142, 150, 152, 155, 202, 218, 219, 220, 221, 224, 242, 248, 250, 253, 261, 265, 267, 271, 272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283, 318, 335, 336, 337, 338, 341, 362, 368, 370, 371, 380, 382, 384, 388, 389, 390, 391, 392, 393, 395, 396, 397, 398, 399, 400, 404, 405, 406, 407, 410, 411, 412, 413, 418, 425, 426, 437, 438, 449, 450, 461, 462, 463, 472, 473, 480, 481, 482, 491, 492, 498, 499, 522, 523, 524, 525, 528, 529, 533, 537, 538, 539, 540, 558, 559, 560, 576, 577, 579, 592, 593, 594, 595, 647, 648, 650, 652, 654, 655, 657, 662, 663, 671, 672, 674, 677, 682, 683, 691, 692, 693, 695, 696, 703, 708, 709, 711, 713, 714, 715, 716, 718, 719, 720, 722, 728, 729, 737, 739, 741, 742, 745, 747, 748, 750, 751, 753, 754, 755, 756, 759, 760, 763, 764, 765, 767, 768, 769, 772, 775, 776, 779, 780, 782, 784, 789, 791, 792, 799, 800, 801, 803, 805, 812, 815, 816, 817, 819, 821, 827, 833, 834, 836, 840, 842, 844, 845, 846, 849, 851, 852, 855, 856, 857, 862, 864, 865, 866, 867, 878, 879, 880, 890, 896, 902, 903, 905, 924, 925, 928, 929, 930, 933, 936, 937, 938, 939, 940, 943, 944, 945, 948, 960, 961, 964, 965, 970, 971, 975, 978, 983, 984, 987, 989, 990, 991, 992, 993, 995, 996, 997, 998, 1004, 1007, 1009, 1015, 1018, 1019, 1025, 1026, 1029, 1030, 1036, 1037, 1040, 1041, 1044, 1045, 1048, 1051, 1052, 1053, 1057, 1063, 1064, 1067, 1071, 1078, 1082, 1084, 1086, 1088, 1089, 1093, 1094, 1098, 1103, 1104, 1105, 1106, 1108, 1111, 1112, 1115, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1129, 1130, 1131, 1138, 1141, 1142, 1143, 1144, 1149, 1150, 1151, 1153, 1154, 1159, 1160, 1165, 1172, 1173, 1174, 1175, 1176, 1178, 1180, 1183, 1185, 1186, 1189, 1196, 1197, 1202, 1203, 1204, 1208, 1212, 1214, 1217, 1220, 1222, 1223, 1225, 1228, 1233, 1234, 1235, 1244, 1245, 1246, 1247, 1250, 1251, 1260, 1261, 1263, 1268, 1278, 1280, 1281, 1293, 1295, 1296, 1297, 1298, 1300, 1301, 1303, 1304, 1306, 1308, 1309, 1310, 1311, 1313, 1314, 1316, 1317, 1319, 1321, 1327, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1341, 1344, 1345, 1347, 1350, 1353, 1356, 1357, 1358, 1361, 1363, 1364, 1366, 1367, 1368, 1371, 1373, 1374, 1375, 1376, 1385, 1387, 1393, 1398, 1404, 1405, 1406, 1418, 1419, 1422, 1424, 1426, 1427, 1430, 1432, 1434, 1435, 1440, 1445, 1446, 1447, 1449, 1452, 1462, 1467, 1471, 1474, 1477, 1478, 1483, 1484, 1487, 1488, 1492, 1494, 1495, 1496, 1500, 1506, 1507, 1510, 1512, 1517, 1538, 1539, 1554, 1556, 1560, 1561, 1562, 1563, 1564, 1566, 1567, 1572, 1576, 1583, 1589, 1591, 1615, 1616, 1618, 1619, 1622, 1624, 1625, 1627, 1629, 1630], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 18, 21, 25, 26, 27, 28, 33, 34, 35, 37, 38, 41, 42, 49, 60, 173, 285, 402, 542, 607, 645, 669, 689, 735, 838, 907, 1000, 1011, 1080, 1237, 1329, 1378, 1408, 1498, 1514, 1558, 1585, 1634, 1635, 1636, 1641, 1642, 1643, 1646, 1647, 1652, 1658, 1664, 1665, 1666, 1716, 1717, 1718, 1721, 1722, 1727, 1733, 1739, 1740, 1741, 1793, 1794, 1795, 1796, 1799, 1800, 1805, 1811, 1817, 1818, 1819, 1886, 1887, 1893, 1894, 1895, 1896, 1899, 1900, 1901, 1906, 1911, 1916, 1921, 1926, 1968, 1969, 1970, 1973, 1974, 1975, 1980, 1985, 1990, 1995, 2000, 2032, 2033, 2034, 2044, 2045, 2051, 2056, 2061, 2129, 2145], "summary": {"covered_lines": 116, "num_statements": 223, "percent_covered": 52.01793721973094, "percent_covered_display": "52", "missing_lines": 107, "excluded_lines": 0}, "missing_lines": [1638, 1677, 1679, 1680, 1681, 1689, 1690, 1691, 1698, 1699, 1711, 1712, 1713, 1752, 1754, 1757, 1758, 1766, 1767, 1768, 1775, 1776, 1788, 1789, 1790, 1831, 1833, 1834, 1835, 1843, 1844, 1845, 1853, 1854, 1855, 1857, 1858, 1861, 1862, 1863, 1865, 1867, 1868, 1881, 1882, 1883, 1889, 1890, 1946, 1948, 1949, 1950, 1963, 1964, 1965, 2012, 2013, 2014, 2027, 2028, 2029, 2036, 2037, 2038, 2039, 2040, 2041, 2063, 2065, 2066, 2067, 2069, 2070, 2075, 2078, 2080, 2084, 2090, 2093, 2094, 2097, 2098, 2100, 2101, 2103, 2106, 2107, 2111, 2113, 2114, 2116, 2117, 2121, 2123, 2124, 2125, 2126, 2132, 2133, 2135, 2136, 2137, 2138, 2139, 2140, 2142, 2146], "excluded_lines": []}}}, "src/adversary_mcp_server/application/formatters/__init__.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/formatters/domain_result_formatter.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 22, 30, 31, 33, 35, 36, 44, 47, 48, 51, 52, 55, 56, 59, 60, 62, 67, 69, 70, 74, 75, 76, 78, 79, 82, 84, 86, 95, 97, 100, 101, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 128, 129, 130, 131, 132, 135, 136, 138, 139, 140, 141, 142, 144, 145, 146, 147, 149, 151, 152, 153, 155, 157, 159, 162, 175, 178, 179, 192, 194, 196, 198, 200, 220, 221, 233, 235, 237, 256, 258, 261, 262, 263, 264, 274, 275, 277, 279, 281, 282, 309, 310, 314, 315, 317, 318, 322, 324, 326, 328, 332, 333, 335, 337, 354, 356, 358, 360, 361, 362, 370, 372, 374, 375, 376], "summary": {"covered_lines": 133, "num_statements": 134, "percent_covered": 99.25373134328358, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [65], "excluded_lines": [], "functions": {"DomainScanResultFormatter.__init__": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter.format_json": {"executed_lines": [35, 36], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._json_serializer": {"executed_lines": [47, 48, 51, 52, 55, 56, 59, 60, 62], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [65], "excluded_lines": []}, "DomainScanResultFormatter._sanitize_for_json": {"executed_lines": [69, 70, 74, 75, 76, 78, 79, 82], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter.format_dict": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter.format_markdown": {"executed_lines": [97, 100, 101, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 128, 129, 130, 131, 132, 135, 136, 138, 139, 140, 141, 142, 144, 145, 146, 147, 149, 151, 152, 153, 155], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter.format_csv": {"executed_lines": [159, 162, 175, 178, 179, 192, 194], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._format_scan_metadata": {"executed_lines": [198, 200, 220, 221, 233], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._format_summary": {"executed_lines": [237], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._format_statistics": {"executed_lines": [258, 261, 262, 263, 264, 274, 275], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._format_threats": {"executed_lines": [279, 281, 282, 309, 310, 314, 315, 317, 318, 322, 324], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._format_validation_info": {"executed_lines": [328, 332, 333, 335, 337], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._format_scanner_execution_summary": {"executed_lines": [356, 358, 360, 361, 362, 370], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DomainScanResultFormatter._escape_csv": {"executed_lines": [374, 375, 376], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 22, 33, 44, 67, 84, 95, 157, 196, 235, 256, 277, 326, 354, 372], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DomainScanResultFormatter": {"executed_lines": [30, 31, 35, 36, 47, 48, 51, 52, 55, 56, 59, 60, 62, 69, 70, 74, 75, 76, 78, 79, 82, 86, 97, 100, 101, 104, 105, 106, 107, 108, 109, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 128, 129, 130, 131, 132, 135, 136, 138, 139, 140, 141, 142, 144, 145, 146, 147, 149, 151, 152, 153, 155, 159, 162, 175, 178, 179, 192, 194, 198, 200, 220, 221, 233, 237, 258, 261, 262, 263, 264, 274, 275, 279, 281, 282, 309, 310, 314, 315, 317, 318, 322, 324, 328, 332, 333, 335, 337, 356, 358, 360, 361, 362, 370, 374, 375, 376], "summary": {"covered_lines": 110, "num_statements": 111, "percent_covered": 99.09909909909909, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [65], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 14, 15, 22, 33, 44, 67, 84, 95, 157, 196, 235, 256, 277, 326, 354, 372], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/mcp_server.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 21, 25, 28, 29, 30, 35, 36, 37, 40, 41, 42, 44, 47, 48, 50, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 70, 71, 72, 73, 74, 75, 76, 79, 80, 87, 89, 90, 91, 92, 95, 96, 99, 101, 107, 111, 112, 117, 118, 139, 143, 145, 146, 149, 152, 157, 160, 161, 164, 165, 166, 169, 172, 173, 174, 175, 178, 190, 191, 192, 196, 197, 201, 204, 211, 214, 219, 223, 230, 231, 232, 233, 234, 235, 236, 238, 242, 244, 245, 248, 252, 253, 254, 255, 256, 257, 258, 259, 262, 274, 275, 276, 280, 281, 284, 287, 294, 297, 302, 307, 311, 326, 330, 332, 333, 336, 340, 341, 343, 345, 348, 349, 352, 353, 354, 357, 360, 380, 391, 392, 393, 397, 398, 401, 404, 411, 414, 419, 420, 424, 439, 443, 444, 445, 447, 460, 475, 485, 489, 490, 492, 498, 506, 510, 512, 516, 517, 518, 519, 523, 527, 528, 531, 535, 545, 547, 548, 549, 551, 555, 557, 561, 562, 566, 570, 571, 574, 576, 586, 592, 594, 633, 661, 663, 664, 666, 667, 669, 670, 672, 678, 683, 685, 689, 690, 691, 693, 834, 1003, 1044, 1101, 1149, 1193, 1241, 1285, 1342, 1394, 1396, 1398, 1400, 1602, 1604, 1606, 1607, 1618, 1624], "summary": {"covered_lines": 226, "num_statements": 437, "percent_covered": 51.7162471395881, "percent_covered_display": "52", "missing_lines": 211, "excluded_lines": 0}, "missing_lines": [103, 105, 114, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 137, 162, 195, 279, 318, 319, 320, 321, 322, 323, 324, 344, 346, 362, 365, 368, 396, 431, 432, 433, 434, 435, 436, 437, 461, 464, 467, 481, 482, 483, 502, 503, 504, 524, 567, 588, 589, 590, 635, 697, 698, 699, 712, 716, 717, 720, 721, 723, 724, 736, 739, 740, 741, 744, 755, 760, 763, 790, 791, 799, 804, 805, 806, 808, 812, 819, 820, 821, 822, 838, 839, 840, 853, 857, 858, 859, 861, 862, 874, 877, 880, 892, 894, 895, 896, 899, 900, 901, 903, 911, 912, 914, 915, 919, 920, 921, 923, 930, 933, 961, 962, 970, 975, 976, 977, 979, 981, 988, 989, 990, 991, 1007, 1008, 1014, 1015, 1018, 1022, 1029, 1030, 1031, 1032, 1048, 1049, 1050, 1062, 1065, 1067, 1069, 1086, 1087, 1088, 1089, 1105, 1106, 1107, 1119, 1121, 1134, 1135, 1136, 1137, 1152, 1173, 1174, 1189, 1191, 1205, 1206, 1208, 1209, 1212, 1221, 1223, 1226, 1231, 1235, 1239, 1253, 1254, 1256, 1259, 1268, 1270, 1275, 1279, 1283, 1289, 1290, 1293, 1294, 1296, 1297, 1298, 1299, 1300, 1302, 1318, 1321, 1330, 1340, 1354, 1355, 1357, 1360, 1369, 1371, 1372, 1375, 1380, 1388, 1392, 1620, 1621, 1625], "excluded_lines": [], "functions": {"CleanMCPServer.__init__": {"executed_lines": [89, 90, 91, 92, 95, 96, 99], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanMCPServer._detect_language": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [103, 105], "excluded_lines": []}, "CleanMCPServer._register_tools": {"executed_lines": [111, 112, 117, 118], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanMCPServer._register_tools.list_tools": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [114], "excluded_lines": []}, "CleanMCPServer._register_tools.tool_dispatcher": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 137], "excluded_lines": []}, "CleanMCPServer._handle_scan_file": {"executed_lines": [143, 145, 146, 149, 152, 157, 160, 161, 164, 165, 166, 169, 172, 173, 174, 175, 178, 190, 191, 192, 196, 197, 201, 204, 211, 214, 219, 223, 230, 231, 232, 233, 234, 235, 236], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [162, 195], "excluded_lines": []}, "CleanMCPServer._handle_scan_folder": {"executed_lines": [242, 244, 245, 248, 252, 253, 254, 255, 256, 257, 258, 259, 262, 274, 275, 276, 280, 281, 284, 287, 294, 297, 302, 307, 311], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "76", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [279, 318, 319, 320, 321, 322, 323, 324], "excluded_lines": []}, "CleanMCPServer._handle_scan_code": {"executed_lines": [330, 332, 333, 336, 340, 341, 343, 345, 348, 349, 352, 353, 354, 357, 360, 380, 391, 392, 393, 397, 398, 401, 404, 411, 414, 419, 420, 424], "summary": {"covered_lines": 28, "num_statements": 41, "percent_covered": 68.29268292682927, "percent_covered_display": "68", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [344, 346, 362, 365, 368, 396, 431, 432, 433, 434, 435, 436, 437], "excluded_lines": []}, "CleanMCPServer._handle_get_status": {"executed_lines": [443, 444, 445, 447, 460, 475], "summary": {"covered_lines": 6, "num_statements": 12, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [461, 464, 467, 481, 482, 483], "excluded_lines": []}, "CleanMCPServer._handle_get_version": {"executed_lines": [489, 490, 492, 498], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [502, 503, 504], "excluded_lines": []}, "CleanMCPServer._handle_mark_false_positive": {"executed_lines": [510, 512, 516, 517, 518, 519, 523, 527, 528, 531, 535, 545, 547, 548, 549], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [524], "excluded_lines": []}, "CleanMCPServer._handle_unmark_false_positive": {"executed_lines": [555, 557, 561, 562, 566, 570, 571, 574, 576, 586], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [567, 588, 589, 590], "excluded_lines": []}, "CleanMCPServer._format_scan_result": {"executed_lines": [594], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanMCPServer._format_threat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [635], "excluded_lines": []}, "CleanMCPServer._init_session_manager": {"executed_lines": [663, 664, 666, 667, 669, 670, 672, 678, 683, 685, 689, 690, 691], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanMCPServer._handle_session_scan_project": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 30, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 30, "excluded_lines": 0}, "missing_lines": [697, 698, 699, 712, 716, 717, 720, 721, 723, 724, 736, 739, 740, 741, 744, 755, 760, 763, 790, 791, 799, 804, 805, 806, 808, 812, 819, 820, 821, 822], "excluded_lines": []}, "CleanMCPServer._handle_session_scan_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 42, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 42, "excluded_lines": 0}, "missing_lines": [838, 839, 840, 853, 857, 858, 859, 861, 862, 874, 877, 880, 892, 894, 895, 896, 899, 900, 901, 903, 911, 912, 914, 915, 919, 920, 921, 923, 930, 933, 961, 962, 970, 975, 976, 977, 979, 981, 988, 989, 990, 991], "excluded_lines": []}, "CleanMCPServer._handle_session_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [1007, 1008, 1014, 1015, 1018, 1022, 1029, 1030, 1031, 1032], "excluded_lines": []}, "CleanMCPServer._handle_session_cache_warm": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [1048, 1049, 1050, 1062, 1065, 1067, 1069, 1086, 1087, 1088, 1089], "excluded_lines": []}, "CleanMCPServer._handle_session_cache_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [1105, 1106, 1107, 1119, 1121, 1134, 1135, 1136, 1137], "excluded_lines": []}, "CleanMCPServer._perform_mcp_session_analysis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [1152, 1173, 1174, 1189, 1191], "excluded_lines": []}, "CleanMCPServer._handle_session_file_analysis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [1205, 1206, 1208, 1209, 1212, 1221, 1223, 1226, 1231, 1235, 1239], "excluded_lines": []}, "CleanMCPServer._handle_session_folder_analysis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [1253, 1254, 1256, 1259, 1268, 1270, 1275, 1279, 1283], "excluded_lines": []}, "CleanMCPServer._convert_session_findings_to_scan_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 14, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [1289, 1290, 1293, 1294, 1296, 1297, 1298, 1299, 1300, 1302, 1318, 1321, 1330, 1340], "excluded_lines": []}, "CleanMCPServer._handle_session_code_analysis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [1354, 1355, 1357, 1360, 1369, 1371, 1372, 1375, 1380, 1388, 1392], "excluded_lines": []}, "CleanMCPServer.get_capabilities": {"executed_lines": [1396], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanMCPServer.get_tools": {"executed_lines": [1400], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanMCPServer.run": {"executed_lines": [1604, 1606, 1607], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1620, 1621], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 21, 25, 28, 29, 30, 35, 36, 37, 40, 41, 42, 44, 47, 48, 50, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 70, 71, 72, 73, 74, 75, 76, 79, 80, 87, 101, 107, 139, 238, 326, 439, 485, 506, 551, 592, 633, 661, 693, 834, 1003, 1044, 1101, 1149, 1193, 1241, 1285, 1342, 1394, 1398, 1602, 1618, 1624], "summary": {"covered_lines": 73, "num_statements": 74, "percent_covered": 98.64864864864865, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1625], "excluded_lines": []}}, "classes": {"CleanAdversaryToolError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DiffScanRequest": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CleanMCPServer": {"executed_lines": [89, 90, 91, 92, 95, 96, 99, 111, 112, 117, 118, 143, 145, 146, 149, 152, 157, 160, 161, 164, 165, 166, 169, 172, 173, 174, 175, 178, 190, 191, 192, 196, 197, 201, 204, 211, 214, 219, 223, 230, 231, 232, 233, 234, 235, 236, 242, 244, 245, 248, 252, 253, 254, 255, 256, 257, 258, 259, 262, 274, 275, 276, 280, 281, 284, 287, 294, 297, 302, 307, 311, 330, 332, 333, 336, 340, 341, 343, 345, 348, 349, 352, 353, 354, 357, 360, 380, 391, 392, 393, 397, 398, 401, 404, 411, 414, 419, 420, 424, 443, 444, 445, 447, 460, 475, 489, 490, 492, 498, 510, 512, 516, 517, 518, 519, 523, 527, 528, 531, 535, 545, 547, 548, 549, 555, 557, 561, 562, 566, 570, 571, 574, 576, 586, 594, 663, 664, 666, 667, 669, 670, 672, 678, 683, 685, 689, 690, 691, 1396, 1400, 1604, 1606, 1607], "summary": {"covered_lines": 153, "num_statements": 361, "percent_covered": 42.38227146814405, "percent_covered_display": "42", "missing_lines": 208, "excluded_lines": 0}, "missing_lines": [103, 105, 114, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 137, 162, 195, 279, 318, 319, 320, 321, 322, 323, 324, 344, 346, 362, 365, 368, 396, 431, 432, 433, 434, 435, 436, 437, 461, 464, 467, 481, 482, 483, 502, 503, 504, 524, 567, 588, 589, 590, 635, 697, 698, 699, 712, 716, 717, 720, 721, 723, 724, 736, 739, 740, 741, 744, 755, 760, 763, 790, 791, 799, 804, 805, 806, 808, 812, 819, 820, 821, 822, 838, 839, 840, 853, 857, 858, 859, 861, 862, 874, 877, 880, 892, 894, 895, 896, 899, 900, 901, 903, 911, 912, 914, 915, 919, 920, 921, 923, 930, 933, 961, 962, 970, 975, 976, 977, 979, 981, 988, 989, 990, 991, 1007, 1008, 1014, 1015, 1018, 1022, 1029, 1030, 1031, 1032, 1048, 1049, 1050, 1062, 1065, 1067, 1069, 1086, 1087, 1088, 1089, 1105, 1106, 1107, 1119, 1121, 1134, 1135, 1136, 1137, 1152, 1173, 1174, 1189, 1191, 1205, 1206, 1208, 1209, 1212, 1221, 1223, 1226, 1231, 1235, 1239, 1253, 1254, 1256, 1259, 1268, 1270, 1275, 1279, 1283, 1289, 1290, 1293, 1294, 1296, 1297, 1298, 1299, 1300, 1302, 1318, 1321, 1330, 1340, 1354, 1355, 1357, 1360, 1369, 1371, 1372, 1375, 1380, 1388, 1392], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 18, 21, 25, 28, 29, 30, 35, 36, 37, 40, 41, 42, 44, 47, 48, 50, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 70, 71, 72, 73, 74, 75, 76, 79, 80, 87, 101, 107, 139, 238, 326, 439, 485, 506, 551, 592, 633, 661, 693, 834, 1003, 1044, 1101, 1149, 1193, 1241, 1285, 1342, 1394, 1398, 1602, 1618, 1624], "summary": {"covered_lines": 73, "num_statements": 76, "percent_covered": 96.05263157894737, "percent_covered_display": "96", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1620, 1621, 1625], "excluded_lines": []}}}, "src/adversary_mcp_server/application/services/__init__.py": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/services/false_positive_service.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 12, 15, 16, 24, 31, 32, 34, 51, 53, 54, 57, 64, 66, 67, 71, 73, 75, 76, 77, 79, 89, 91, 92, 95, 96, 97, 98, 101, 103, 104, 108, 110, 111, 112, 114, 131, 133, 137, 138, 143, 146, 148, 149, 155, 161, 171, 172, 173, 178, 188, 189, 190, 191, 192, 197, 204, 205, 206, 211, 218, 219, 220, 222, 229, 230, 231, 234, 235, 238, 240, 241, 244], "summary": {"covered_lines": 76, "num_statements": 97, "percent_covered": 78.35051546391753, "percent_covered_display": "78", "missing_lines": 21, "excluded_lines": 0}, "missing_lines": [106, 134, 139, 140, 153, 157, 158, 159, 174, 175, 176, 193, 194, 195, 207, 208, 209, 242, 246, 247, 248], "excluded_lines": [], "functions": {"FalsePositiveService.__init__": {"executed_lines": [31, 32], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveService.mark_as_false_positive": {"executed_lines": [51, 53, 54, 57, 64, 66, 67, 71, 73, 75, 76, 77], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveService.unmark_false_positive": {"executed_lines": [89, 91, 92, 95, 96, 97, 98, 101, 103, 104, 108, 110, 111, 112], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [106], "excluded_lines": []}, "FalsePositiveService.update_false_positive_reason": {"executed_lines": [131, 133, 137, 138, 143, 146, 148, 149, 155], "summary": {"covered_lines": 9, "num_statements": 16, "percent_covered": 56.25, "percent_covered_display": "56", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [134, 139, 140, 153, 157, 158, 159], "excluded_lines": []}, "FalsePositiveService.is_false_positive": {"executed_lines": [171, 172, 173], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [174, 175, 176], "excluded_lines": []}, "FalsePositiveService.get_false_positive_details": {"executed_lines": [188, 189, 190, 191, 192], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [193, 194, 195], "excluded_lines": []}, "FalsePositiveService.list_all_false_positives": {"executed_lines": [204, 205, 206], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [207, 208, 209], "excluded_lines": []}, "FalsePositiveService.get_false_positive_stats": {"executed_lines": [218, 219, 220, 222, 229, 230, 231, 234, 235, 238, 240, 241, 244], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [242, 246, 247, 248], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 12, 15, 16, 24, 34, 79, 114, 161, 178, 197, 211], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FalsePositiveService": {"executed_lines": [31, 32, 51, 53, 54, 57, 64, 66, 67, 71, 73, 75, 76, 77, 89, 91, 92, 95, 96, 97, 98, 101, 103, 104, 108, 110, 111, 112, 131, 133, 137, 138, 143, 146, 148, 149, 155, 171, 172, 173, 188, 189, 190, 191, 192, 204, 205, 206, 218, 219, 220, 222, 229, 230, 231, 234, 235, 238, 240, 241, 244], "summary": {"covered_lines": 61, "num_statements": 82, "percent_covered": 74.39024390243902, "percent_covered_display": "74", "missing_lines": 21, "excluded_lines": 0}, "missing_lines": [106, 134, 139, 140, 153, 157, 158, 159, 174, 175, 176, 193, 194, 195, 207, 208, 209, 242, 246, 247, 248], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 12, 15, 16, 24, 34, 79, 114, 161, 178, 197, 211], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/services/scan_application_service.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 39, 42, 43, 44, 47, 48, 49, 51, 52, 53, 56, 58, 92, 102, 108, 117, 118, 121, 123, 125, 154, 156, 168, 170, 176, 185, 186, 188, 190, 192, 219, 231, 235, 242, 248, 257, 258, 260, 262, 264, 266, 268, 278, 280, 282, 284, 286, 288, 290, 292], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ScanApplicationService.__init__": {"executed_lines": [42, 43, 44, 47, 48, 49, 51, 52, 53, 56], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService.scan_file": {"executed_lines": [92, 102, 108, 117, 118, 121, 123], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService.scan_directory": {"executed_lines": [154, 156, 168, 170, 176, 185, 186, 188, 190], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService.scan_code": {"executed_lines": [219, 231, 235, 242, 248, 257, 258, 260, 262], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService.get_scan_capabilities": {"executed_lines": [266, 268], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService.get_security_constraints": {"executed_lines": [280], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService.update_security_constraints": {"executed_lines": [284], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService._get_extension_for_language": {"executed_lines": [288], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanApplicationService._get_supported_languages": {"executed_lines": [292], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 39, 58, 125, 192, 264, 278, 282, 286, 290], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanApplicationService": {"executed_lines": [42, 43, 44, 47, 48, 49, 51, 52, 53, 56, 92, 102, 108, 117, 118, 121, 123, 154, 156, 168, 170, 176, 185, 186, 188, 190, 219, 231, 235, 242, 248, 257, 258, 260, 262, 266, 268, 280, 284, 288, 292], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 13, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 39, 58, 125, 192, 264, 278, 282, 286, 290], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/application/services/scan_persistence_service.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 12, 14, 17, 18, 20, 21, 22, 24, 25, 27, 30, 37, 38, 40, 44, 46, 49, 50, 61, 69, 72, 74, 97, 101, 102, 104, 107, 110, 112, 116, 118, 135, 137, 138, 141, 144, 145, 149, 150, 152, 154, 165, 166, 167, 169, 171, 172, 173, 179, 181, 182, 183, 185, 188, 189, 194, 197, 198, 199, 200, 203, 205, 207, 209, 210, 211, 212, 213, 214, 218, 230, 232, 235, 238, 241, 243, 262, 264, 266, 276, 277, 280, 281, 295, 305, 306, 308, 316, 317, 318, 319, 323, 325, 327, 332], "summary": {"covered_lines": 99, "num_statements": 131, "percent_covered": 75.57251908396947, "percent_covered_display": "76", "missing_lines": 32, "excluded_lines": 0}, "missing_lines": [98, 139, 146, 147, 176, 201, 202, 216, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 260, 286, 287, 288, 289, 290, 292, 293, 320, 321], "excluded_lines": [], "functions": {"OutputFormat.from_string": {"executed_lines": [27, 30, 37, 38, 40], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OutputFormat.get_file_extension": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultPersistenceService.__init__": {"executed_lines": [69, 72], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultPersistenceService.persist_scan_result": {"executed_lines": [97, 101, 102, 104, 107, 110, 112, 116], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [98], "excluded_lines": []}, "ScanResultPersistenceService.persist_multiple_formats": {"executed_lines": [135, 137, 138, 141, 144, 145, 149, 150, 152], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [139, 146, 147], "excluded_lines": []}, "ScanResultPersistenceService._determine_output_path": {"executed_lines": [165, 166, 167, 169, 171, 172, 173, 179, 181, 182, 183, 185, 188, 189, 194, 197, 198, 199, 200, 203, 205], "summary": {"covered_lines": 21, "num_statements": 24, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [176, 201, 202], "excluded_lines": []}, "ScanResultPersistenceService._format_content": {"executed_lines": [209, 210, 211, 212, 213, 214], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [216], "excluded_lines": []}, "ScanResultPersistenceService._write_file": {"executed_lines": [230, 232, 235, 238, 241, 243], "summary": {"covered_lines": 6, "num_statements": 21, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 260], "excluded_lines": []}, "ScanResultPersistenceService.get_supported_formats": {"executed_lines": [264], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultPersistenceService.validate_output_path": {"executed_lines": [276, 277, 280, 281], "summary": {"covered_lines": 4, "num_statements": 11, "percent_covered": 36.36363636363637, "percent_covered_display": "36", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [286, 287, 288, 289, 290, 292, 293], "excluded_lines": []}, "ScanResultPersistenceService.get_placement_info": {"executed_lines": [305, 306, 308, 316, 317, 318, 319, 323], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [320, 321], "excluded_lines": []}, "ScanResultPersistenceService._get_placement_strategy_description": {"executed_lines": [327, 332], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 12, 14, 17, 18, 20, 21, 22, 24, 25, 44, 49, 50, 61, 74, 118, 154, 207, 218, 262, 266, 295, 325], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"OutputFormat": {"executed_lines": [27, 30, 37, 38, 40, 46], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultPersistenceService": {"executed_lines": [69, 72, 97, 101, 102, 104, 107, 110, 112, 116, 135, 137, 138, 141, 144, 145, 149, 150, 152, 165, 166, 167, 169, 171, 172, 173, 179, 181, 182, 183, 185, 188, 189, 194, 197, 198, 199, 200, 203, 205, 209, 210, 211, 212, 213, 214, 230, 232, 235, 238, 241, 243, 264, 276, 277, 280, 281, 305, 306, 308, 316, 317, 318, 319, 323, 327, 332], "summary": {"covered_lines": 67, "num_statements": 99, "percent_covered": 67.67676767676768, "percent_covered_display": "68", "missing_lines": 32, "excluded_lines": 0}, "missing_lines": [98, 139, 146, 147, 176, 201, 202, 216, 245, 246, 247, 248, 249, 250, 251, 252, 254, 255, 256, 257, 258, 259, 260, 286, 287, 288, 289, 290, 292, 293, 320, 321], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 12, 14, 17, 18, 20, 21, 22, 24, 25, 44, 49, 50, 61, 74, 118, 154, 207, 218, 262, 266, 295, 325], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/batch/__init__.py": {"executed_lines": [1, 3, 4, 5, 13], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 13], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 13], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/batch/batch_processor.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 22, 27, 62, 74, 75, 76, 100, 101, 102, 105, 106, 108, 116, 117, 118, 119, 120, 123, 124, 127, 128, 132, 134, 144, 145, 147, 148, 150, 151, 153, 168, 169, 170, 172, 182, 192, 193, 195, 196, 197, 199, 203, 206, 207, 208, 209, 210, 211, 214, 222, 223, 225, 226, 228, 230, 233, 241, 242, 243, 244, 246, 247, 249, 250, 253, 277, 278, 279, 280, 282, 283, 286, 287, 288, 291, 292, 297, 299, 311, 312, 314, 315, 320, 323, 324, 325, 326, 327, 328, 329, 330, 331, 336, 339, 344, 345, 346, 347, 348, 349, 352, 353, 356, 357, 358, 359, 366, 373, 378, 385, 388, 391, 394, 398, 401, 403, 415, 417, 419, 428, 430, 444, 446, 447, 449, 451, 453, 465, 466, 467, 470, 473, 522, 523, 524, 525, 528, 547, 548, 553, 570, 574, 577, 580, 596, 600, 620, 621, 622, 623, 626, 630, 633, 643, 647, 649, 655, 657, 721, 736, 737, 836, 893, 928, 939, 940, 942, 943, 944, 946, 948, 959, 960, 961, 962, 964, 966, 967, 968, 974, 983, 989, 990, 991, 994, 995, 997, 999, 1011, 1012, 1013, 1016, 1019, 1021, 1023, 1024, 1027, 1033, 1034, 1035, 1037, 1038, 1041, 1047, 1048, 1050, 1052, 1064, 1066, 1067, 1069, 1072, 1073, 1074, 1077, 1079, 1080, 1081, 1084, 1087, 1088, 1089, 1091, 1093, 1108, 1111, 1112, 1117, 1118, 1125, 1126, 1127, 1129, 1135, 1139, 1144, 1145, 1146, 1149, 1150, 1151, 1152, 1153, 1154, 1157, 1158, 1160, 1162, 1165, 1180, 1185, 1189, 1197, 1200, 1205, 1208, 1224, 1234, 1235, 1238, 1239, 1243, 1246, 1247, 1248, 1249, 1250, 1255, 1273, 1274, 1277, 1278, 1279, 1280, 1289, 1295, 1297, 1313, 1314, 1317, 1318, 1319, 1321, 1322, 1324, 1326, 1327, 1328, 1329, 1340, 1342, 1348, 1351, 1352, 1354, 1359, 1361, 1362, 1364, 1365, 1370, 1375, 1376, 1377, 1380, 1381, 1384, 1386, 1393, 1394, 1398, 1401, 1404, 1407, 1412, 1413, 1414, 1416, 1419, 1424, 1425, 1426, 1428, 1430, 1431, 1432, 1434, 1436, 1437, 1439, 1442, 1501, 1502, 1503, 1508, 1511, 1514, 1519, 1521, 1524, 1527, 1528, 1531, 1532, 1533, 1534, 1537, 1542, 1545, 1546, 1547, 1550, 1555, 1566, 1569, 1573, 1580, 1581, 1586, 1592, 1597, 1599, 1605, 1607], "summary": {"covered_lines": 374, "num_statements": 537, "percent_covered": 69.6461824953445, "percent_covered_display": "70", "missing_lines": 163, "excluded_lines": 0}, "missing_lines": [78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 98, 200, 332, 549, 550, 597, 644, 650, 673, 674, 677, 679, 681, 682, 686, 689, 694, 698, 701, 705, 709, 712, 713, 719, 739, 742, 743, 745, 746, 747, 748, 750, 751, 753, 754, 756, 757, 760, 762, 763, 764, 767, 768, 769, 770, 771, 774, 775, 777, 780, 781, 782, 784, 787, 790, 793, 796, 797, 798, 801, 804, 807, 808, 813, 817, 818, 825, 826, 829, 834, 852, 855, 856, 859, 860, 863, 864, 867, 868, 869, 872, 874, 878, 881, 883, 885, 886, 891, 906, 907, 909, 910, 911, 912, 916, 920, 921, 922, 923, 924, 926, 984, 985, 986, 987, 1042, 1043, 1044, 1078, 1082, 1199, 1202, 1225, 1226, 1230, 1231, 1232, 1261, 1262, 1264, 1265, 1266, 1269, 1270, 1271, 1334, 1335, 1336, 1444, 1445, 1446, 1449, 1450, 1453, 1454, 1457, 1462, 1469, 1470, 1472, 1473, 1474, 1475, 1476, 1479, 1480, 1485, 1490, 1497, 1498, 1609, 1610, 1611], "excluded_lines": [], "functions": {"get_model_context_limit": {"executed_lines": [74, 75, 76, 100, 101, 102], "summary": {"covered_lines": 6, "num_statements": 17, "percent_covered": 35.294117647058826, "percent_covered_display": "35", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 98], "excluded_lines": []}, "BatchProcessor.__init__": {"executed_lines": [116, 117, 118, 119, 120, 123, 124, 127, 128, 132], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor._calculate_batch_hash": {"executed_lines": [144, 145, 147, 148, 150, 151], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor.create_file_context": {"executed_lines": [168, 169, 170, 172], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor._calculate_complexity_score": {"executed_lines": [192, 193, 195, 196, 197, 199, 203, 206, 207, 208, 209, 210, 211, 214, 222, 223, 225, 226, 228, 230, 233, 241, 242, 243, 244, 246, 247, 249, 250, 253, 277, 278, 279, 280, 282, 283, 286, 287, 288, 291, 292, 297], "summary": {"covered_lines": 42, "num_statements": 43, "percent_covered": 97.67441860465117, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [200], "excluded_lines": []}, "BatchProcessor.create_batches": {"executed_lines": [311, 312, 314, 315, 320, 323, 324, 325, 326, 327, 328, 329, 330, 331, 336, 339, 344, 345, 346, 347, 348, 349, 352, 353, 356, 357, 358, 359, 366, 373, 378, 385, 388, 391, 394, 398, 401], "summary": {"covered_lines": 37, "num_statements": 38, "percent_covered": 97.36842105263158, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [332], "excluded_lines": []}, "BatchProcessor._sort_contexts": {"executed_lines": [415, 417, 428], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor._sort_contexts.sort_key": {"executed_lines": [419], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor._apply_smart_prioritization": {"executed_lines": [444, 446, 447, 449, 451], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor._calculate_security_priority_score": {"executed_lines": [465, 466, 467, 470, 473, 522, 523, 524, 525, 528, 547, 548, 553, 570, 574, 577, 580, 596, 600, 620, 621, 622, 623, 626, 630, 633, 643, 647, 649, 655], "summary": {"covered_lines": 30, "num_statements": 35, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [549, 550, 597, 644, 650], "excluded_lines": []}, "BatchProcessor.should_continue_progressive_scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [673, 674, 677, 679, 681, 682, 686, 689, 694, 698, 701, 705, 709, 712, 713, 719], "excluded_lines": []}, "BatchProcessor.deduplicate_similar_content": {"executed_lines": [736, 737], "summary": {"covered_lines": 2, "num_statements": 48, "percent_covered": 4.166666666666667, "percent_covered_display": "4", "missing_lines": 46, "excluded_lines": 0}, "missing_lines": [739, 742, 743, 745, 746, 747, 748, 750, 751, 753, 754, 756, 757, 760, 762, 763, 764, 767, 768, 769, 770, 771, 774, 775, 777, 780, 781, 782, 784, 787, 790, 793, 796, 797, 798, 801, 804, 807, 808, 813, 817, 818, 825, 826, 829, 834], "excluded_lines": []}, "BatchProcessor._are_contents_similar": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 18, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 18, "excluded_lines": 0}, "missing_lines": [852, 855, 856, 859, 860, 863, 864, 867, 868, 869, 872, 874, 878, 881, 883, 885, 886, 891], "excluded_lines": []}, "BatchProcessor._calculate_character_similarity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [906, 907, 909, 910, 911, 912, 916, 920, 921, 922, 923, 924, 926], "excluded_lines": []}, "BatchProcessor._create_fixed_size_batches": {"executed_lines": [939, 940, 942, 943, 944, 946], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor._create_dynamic_size_batches": {"executed_lines": [959, 960, 961, 962, 964, 966, 967, 968, 974, 983, 989, 990, 991, 994, 995, 997], "summary": {"covered_lines": 16, "num_statements": 20, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [984, 985, 986, 987], "excluded_lines": []}, "BatchProcessor._create_token_based_batches": {"executed_lines": [1011, 1012, 1013, 1016, 1019, 1021, 1023, 1024, 1027, 1033, 1034, 1035, 1037, 1038, 1041, 1047, 1048, 1050], "summary": {"covered_lines": 18, "num_statements": 21, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1042, 1043, 1044], "excluded_lines": []}, "BatchProcessor._create_complexity_based_batches": {"executed_lines": [1064, 1066, 1067, 1069, 1072, 1073, 1074, 1077, 1079, 1080, 1081, 1084, 1087, 1088, 1089, 1091], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1078, 1082], "excluded_lines": []}, "BatchProcessor._create_adaptive_token_optimized_batches": {"executed_lines": [1108, 1111, 1112, 1117, 1118, 1125, 1126, 1127, 1129, 1135, 1139, 1144, 1145, 1146, 1149, 1150, 1151, 1152, 1153, 1154, 1157, 1158, 1160, 1162, 1165, 1180, 1185, 1189, 1197, 1200, 1205, 1208, 1224, 1234, 1235, 1238, 1239, 1243, 1246, 1247, 1248, 1249, 1250, 1255, 1273, 1274, 1277, 1278, 1279, 1280, 1289, 1295], "summary": {"covered_lines": 52, "num_statements": 67, "percent_covered": 77.61194029850746, "percent_covered_display": "78", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [1199, 1202, 1225, 1226, 1230, 1231, 1232, 1261, 1262, 1264, 1265, 1266, 1269, 1270, 1271], "excluded_lines": []}, "BatchProcessor.process_batches": {"executed_lines": [1313, 1314, 1317, 1318, 1319, 1321, 1322, 1324, 1326, 1327, 1328, 1329, 1340, 1342, 1348, 1351, 1352, 1354, 1501, 1502, 1503, 1508, 1511, 1514, 1519, 1521, 1524, 1527, 1528, 1531, 1532, 1533, 1534, 1537, 1542, 1545, 1546, 1547, 1550, 1555, 1566, 1569, 1573, 1580, 1581, 1586, 1592, 1597], "summary": {"covered_lines": 48, "num_statements": 51, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1334, 1335, 1336], "excluded_lines": []}, "BatchProcessor.process_batches.process_single_batch": {"executed_lines": [1359, 1361, 1362, 1364, 1365, 1370, 1375, 1376, 1377, 1380, 1381, 1384, 1386, 1393, 1394, 1398, 1401, 1404, 1407, 1412, 1413, 1414, 1416, 1419, 1424, 1425, 1426, 1428, 1430, 1431, 1432, 1434, 1436, 1437, 1439, 1442], "summary": {"covered_lines": 36, "num_statements": 58, "percent_covered": 62.06896551724138, "percent_covered_display": "62", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [1444, 1445, 1446, 1449, 1450, 1453, 1454, 1457, 1462, 1469, 1470, 1472, 1473, 1474, 1475, 1476, 1479, 1480, 1485, 1490, 1497, 1498], "excluded_lines": []}, "BatchProcessor.get_metrics": {"executed_lines": [1605], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor.reset_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1609, 1610, 1611], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 22, 27, 62, 105, 106, 108, 134, 153, 182, 299, 403, 430, 453, 657, 721, 836, 893, 928, 948, 999, 1052, 1093, 1297, 1599, 1607], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BatchProcessor": {"executed_lines": [116, 117, 118, 119, 120, 123, 124, 127, 128, 132, 144, 145, 147, 148, 150, 151, 168, 169, 170, 172, 192, 193, 195, 196, 197, 199, 203, 206, 207, 208, 209, 210, 211, 214, 222, 223, 225, 226, 228, 230, 233, 241, 242, 243, 244, 246, 247, 249, 250, 253, 277, 278, 279, 280, 282, 283, 286, 287, 288, 291, 292, 297, 311, 312, 314, 315, 320, 323, 324, 325, 326, 327, 328, 329, 330, 331, 336, 339, 344, 345, 346, 347, 348, 349, 352, 353, 356, 357, 358, 359, 366, 373, 378, 385, 388, 391, 394, 398, 401, 415, 417, 419, 428, 444, 446, 447, 449, 451, 465, 466, 467, 470, 473, 522, 523, 524, 525, 528, 547, 548, 553, 570, 574, 577, 580, 596, 600, 620, 621, 622, 623, 626, 630, 633, 643, 647, 649, 655, 736, 737, 939, 940, 942, 943, 944, 946, 959, 960, 961, 962, 964, 966, 967, 968, 974, 983, 989, 990, 991, 994, 995, 997, 1011, 1012, 1013, 1016, 1019, 1021, 1023, 1024, 1027, 1033, 1034, 1035, 1037, 1038, 1041, 1047, 1048, 1050, 1064, 1066, 1067, 1069, 1072, 1073, 1074, 1077, 1079, 1080, 1081, 1084, 1087, 1088, 1089, 1091, 1108, 1111, 1112, 1117, 1118, 1125, 1126, 1127, 1129, 1135, 1139, 1144, 1145, 1146, 1149, 1150, 1151, 1152, 1153, 1154, 1157, 1158, 1160, 1162, 1165, 1180, 1185, 1189, 1197, 1200, 1205, 1208, 1224, 1234, 1235, 1238, 1239, 1243, 1246, 1247, 1248, 1249, 1250, 1255, 1273, 1274, 1277, 1278, 1279, 1280, 1289, 1295, 1313, 1314, 1317, 1318, 1319, 1321, 1322, 1324, 1326, 1327, 1328, 1329, 1340, 1342, 1348, 1351, 1352, 1354, 1359, 1361, 1362, 1364, 1365, 1370, 1375, 1376, 1377, 1380, 1381, 1384, 1386, 1393, 1394, 1398, 1401, 1404, 1407, 1412, 1413, 1414, 1416, 1419, 1424, 1425, 1426, 1428, 1430, 1431, 1432, 1434, 1436, 1437, 1439, 1442, 1501, 1502, 1503, 1508, 1511, 1514, 1519, 1521, 1524, 1527, 1528, 1531, 1532, 1533, 1534, 1537, 1542, 1545, 1546, 1547, 1550, 1555, 1566, 1569, 1573, 1580, 1581, 1586, 1592, 1597, 1605], "summary": {"covered_lines": 333, "num_statements": 485, "percent_covered": 68.65979381443299, "percent_covered_display": "69", "missing_lines": 152, "excluded_lines": 0}, "missing_lines": [200, 332, 549, 550, 597, 644, 650, 673, 674, 677, 679, 681, 682, 686, 689, 694, 698, 701, 705, 709, 712, 713, 719, 739, 742, 743, 745, 746, 747, 748, 750, 751, 753, 754, 756, 757, 760, 762, 763, 764, 767, 768, 769, 770, 771, 774, 775, 777, 780, 781, 782, 784, 787, 790, 793, 796, 797, 798, 801, 804, 807, 808, 813, 817, 818, 825, 826, 829, 834, 852, 855, 856, 859, 860, 863, 864, 867, 868, 869, 872, 874, 878, 881, 883, 885, 886, 891, 906, 907, 909, 910, 911, 912, 916, 920, 921, 922, 923, 924, 926, 984, 985, 986, 987, 1042, 1043, 1044, 1078, 1082, 1199, 1202, 1225, 1226, 1230, 1231, 1232, 1261, 1262, 1264, 1265, 1266, 1269, 1270, 1271, 1334, 1335, 1336, 1444, 1445, 1446, 1449, 1450, 1453, 1454, 1457, 1462, 1469, 1470, 1472, 1473, 1474, 1475, 1476, 1479, 1480, 1485, 1490, 1497, 1498, 1609, 1610, 1611], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 22, 27, 62, 74, 75, 76, 100, 101, 102, 105, 106, 108, 134, 153, 182, 299, 403, 430, 453, 657, 721, 836, 893, 928, 948, 999, 1052, 1093, 1297, 1599, 1607], "summary": {"covered_lines": 41, "num_statements": 52, "percent_covered": 78.84615384615384, "percent_covered_display": "79", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [78, 79, 80, 83, 86, 87, 88, 91, 94, 95, 98], "excluded_lines": []}}}, "src/adversary_mcp_server/batch/token_estimator.py": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 15, 33, 43, 45, 46, 48, 64, 65, 68, 69, 70, 73, 76, 79, 82, 83, 84, 87, 90, 92, 94, 110, 113, 116, 119, 122, 125, 128, 129, 132, 135, 138, 140, 142, 152, 154, 156, 157, 168, 183, 184, 189, 190, 193, 195, 205, 208, 210, 218, 220, 221, 222, 223, 225, 227, 238, 319, 320, 321, 323, 324, 326, 327, 328, 330, 332, 345, 346, 349, 351, 353, 366, 368, 372, 375, 378, 380, 386, 388, 411, 414, 415, 420, 422, 424, 426, 427, 429, 435], "summary": {"covered_lines": 94, "num_statements": 104, "percent_covered": 90.38461538461539, "percent_covered_display": "90", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [158, 160, 161, 162, 165, 166, 185, 186, 191, 369], "excluded_lines": [], "functions": {"TokenEstimator.__init__": {"executed_lines": [45, 46], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator.estimate_tokens": {"executed_lines": [64, 65, 68, 69, 70, 73, 76, 79, 82, 83, 84, 87, 90, 92], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator._apply_code_adjustments": {"executed_lines": [110, 113, 116, 119, 122, 125, 128, 129, 132, 135, 138, 140], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator._count_comments": {"executed_lines": [152, 154, 156, 157, 168, 183, 184, 189, 190, 193], "summary": {"covered_lines": 10, "num_statements": 19, "percent_covered": 52.63157894736842, "percent_covered_display": "53", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [158, 160, 161, 162, 165, 166, 185, 186, 191], "excluded_lines": []}, "TokenEstimator._count_strings": {"executed_lines": [205, 208, 210, 218, 220, 221, 222, 223, 225], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator._count_keywords": {"executed_lines": [238, 319, 320, 321, 323, 324, 326, 327, 328, 330], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator.estimate_prompt_tokens": {"executed_lines": [345, 346, 349, 351], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator.estimate_response_tokens": {"executed_lines": [366, 368, 372, 375, 378, 380, 386], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [369], "excluded_lines": []}, "TokenEstimator.estimate_total_request_tokens": {"executed_lines": [411, 414, 415, 420, 422], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator.clear_cache": {"executed_lines": [426, 427], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenEstimator.get_cache_stats": {"executed_lines": [435], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 15, 33, 43, 48, 94, 142, 195, 227, 332, 353, 388, 424, 429], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TokenEstimator": {"executed_lines": [45, 46, 64, 65, 68, 69, 70, 73, 76, 79, 82, 83, 84, 87, 90, 92, 110, 113, 116, 119, 122, 125, 128, 129, 132, 135, 138, 140, 152, 154, 156, 157, 168, 183, 184, 189, 190, 193, 205, 208, 210, 218, 220, 221, 222, 223, 225, 238, 319, 320, 321, 323, 324, 326, 327, 328, 330, 345, 346, 349, 351, 366, 368, 372, 375, 378, 380, 386, 411, 414, 415, 420, 422, 426, 427, 435], "summary": {"covered_lines": 76, "num_statements": 86, "percent_covered": 88.37209302325581, "percent_covered_display": "88", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [158, 160, 161, 162, 165, 166, 185, 186, 191, 369], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 8, 11, 12, 15, 33, 43, 48, 94, 142, 195, 227, 332, 353, 388, 424, 429], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/batch/types.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 47, 50, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66, 67, 68, 71, 72, 73, 74, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 95, 96, 97, 99, 100, 102, 105, 106, 107, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 127, 128, 129, 132, 133, 134, 135, 137, 139, 140, 141, 142, 145, 147, 148, 150, 152, 154, 155, 157, 158, 160, 161, 163, 164, 166, 168, 170], "summary": {"covered_lines": 108, "num_statements": 111, "percent_covered": 97.29729729729729, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [98, 151, 165], "excluded_lines": [], "functions": {"FileAnalysisContext.complexity_level": {"executed_lines": [95, 96, 97, 99, 100, 102], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [98], "excluded_lines": []}, "BatchMetrics.mark_completed": {"executed_lines": [139, 140, 141, 142, 145], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchMetrics.success_rate": {"executed_lines": [150, 152], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [151], "excluded_lines": []}, "BatchMetrics.total_duration": {"executed_lines": [157, 158], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchMetrics.files_per_second": {"executed_lines": [163, 164, 166], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [165], "excluded_lines": []}, "BatchMetrics.to_dict": {"executed_lines": [170], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 47, 50, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66, 67, 68, 71, 72, 73, 74, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 105, 106, 107, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 127, 128, 129, 132, 133, 134, 135, 137, 147, 148, 154, 155, 160, 161, 168], "summary": {"covered_lines": 89, "num_statements": 89, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BatchStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Language": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FileAnalysisContext": {"executed_lines": [95, 96, 97, 99, 100, 102], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [98], "excluded_lines": []}, "BatchMetrics": {"executed_lines": [139, 140, 141, 142, 145, 150, 152, 157, 158, 163, 164, 166, 170], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [151, 165], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 17, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39, 40, 41, 44, 45, 46, 47, 50, 51, 52, 55, 56, 57, 60, 61, 62, 65, 66, 67, 68, 71, 72, 73, 74, 79, 80, 81, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 105, 106, 107, 110, 111, 112, 113, 116, 117, 118, 119, 122, 123, 124, 127, 128, 129, 132, 133, 134, 135, 137, 147, 148, 154, 155, 160, 161, 168], "summary": {"covered_lines": 89, "num_statements": 89, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/benchmarks/__init__.py": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/benchmarks/benchmark_runner.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 18, 21, 22, 24, 30, 31, 32, 34, 36, 37, 47, 49, 52, 54, 55, 57, 58, 60, 65, 69, 70, 84, 86, 91, 92, 93, 96, 99, 100, 103, 105, 106, 108, 109, 112, 113, 115, 116, 118, 119, 120, 121, 123, 124, 127, 128, 129, 132, 133, 134, 137, 138, 140, 157, 161, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 176, 178, 179, 180, 181, 184, 190, 191, 193, 194, 195, 198, 199, 200, 201, 202, 204, 222, 224, 225, 226, 228, 230, 231, 233, 235, 239, 241, 242, 244, 246, 247, 251, 252, 254, 255, 256, 263, 264, 266, 267, 268, 270], "summary": {"covered_lines": 119, "num_statements": 134, "percent_covered": 88.80597014925372, "percent_covered_display": "89", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [43, 44, 45, 74, 75, 76, 82, 186, 187, 188, 248, 258, 259, 260, 261], "excluded_lines": [], "functions": {"BenchmarkRunner.__init__": {"executed_lines": [30, 31, 32], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkRunner.get_system_info": {"executed_lines": [36, 37], "summary": {"covered_lines": 2, "num_statements": 5, "percent_covered": 40.0, "percent_covered_display": "40", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [43, 44, 45], "excluded_lines": []}, "BenchmarkRunner.run_all_benchmarks": {"executed_lines": [49, 52, 54, 55, 57, 58, 60, 65, 69, 70, 84], "summary": {"covered_lines": 11, "num_statements": 15, "percent_covered": 73.33333333333333, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [74, 75, 76, 82], "excluded_lines": []}, "BenchmarkRunner._run_standard_benchmark": {"executed_lines": [91, 92, 93, 96, 99, 100, 103, 105, 106, 108, 109, 112, 113, 115, 116, 118, 119, 120, 121, 123, 124, 127, 128, 129, 132, 133, 134, 137, 138, 140], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkRunner._run_cache_benchmark": {"executed_lines": [161, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 176, 178, 179, 180, 181, 184, 190, 191, 193, 194, 195, 198, 199, 200, 201, 202, 204], "summary": {"covered_lines": 28, "num_statements": 31, "percent_covered": 90.3225806451613, "percent_covered_display": "90", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [186, 187, 188], "excluded_lines": []}, "BenchmarkRunner.run_single_benchmark": {"executed_lines": [224, 225, 226, 228, 230, 231, 233], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkRunner.run_custom_benchmark": {"executed_lines": [239, 241, 242, 244, 246, 247, 251, 252, 254, 255, 256, 263, 264, 266, 267, 268, 270], "summary": {"covered_lines": 17, "num_statements": 22, "percent_covered": 77.27272727272727, "percent_covered_display": "77", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [248, 258, 259, 260, 261], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 18, 21, 22, 24, 34, 47, 86, 157, 222, 235], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BenchmarkRunner": {"executed_lines": [30, 31, 32, 36, 37, 49, 52, 54, 55, 57, 58, 60, 65, 69, 70, 84, 91, 92, 93, 96, 99, 100, 103, 105, 106, 108, 109, 112, 113, 115, 116, 118, 119, 120, 121, 123, 124, 127, 128, 129, 132, 133, 134, 137, 138, 140, 161, 162, 163, 165, 166, 168, 169, 171, 172, 173, 174, 176, 178, 179, 180, 181, 184, 190, 191, 193, 194, 195, 198, 199, 200, 201, 202, 204, 224, 225, 226, 228, 230, 231, 233, 239, 241, 242, 244, 246, 247, 251, 252, 254, 255, 256, 263, 264, 266, 267, 268, 270], "summary": {"covered_lines": 98, "num_statements": 113, "percent_covered": 86.72566371681415, "percent_covered_display": "87", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [43, 44, 45, 74, 75, 76, 82, 186, 187, 188, 248, 258, 259, 260, 261], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 12, 13, 14, 15, 16, 18, 21, 22, 24, 34, 47, 86, 157, 222, 235], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/benchmarks/results.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 39, 40, 41, 42, 44, 46, 62, 63, 64, 66, 67, 68, 69, 71, 73, 74, 76, 77, 79, 81, 82, 84, 86, 87, 89, 90, 91, 93, 95, 96, 97, 98, 100, 102, 103, 104, 105, 107, 109, 132, 134, 135, 137, 140, 151, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 172, 173, 178, 179, 180, 183, 185, 187, 188, 190, 191, 192, 193, 194, 196, 197], "summary": {"covered_lines": 103, "num_statements": 105, "percent_covered": 98.0952380952381, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [184, 186], "excluded_lines": [], "functions": {"BenchmarkResult.files_per_second": {"executed_lines": [32, 33, 34], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkResult.cache_hit_rate": {"executed_lines": [39, 40, 41, 42], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkResult.to_dict": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.add_result": {"executed_lines": [73, 74], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.success_count": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.total_files_processed": {"executed_lines": [84], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.average_files_per_second": {"executed_lines": [89, 90, 91], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.get_fastest_result": {"executed_lines": [95, 96, 97, 98], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.get_slowest_result": {"executed_lines": [102, 103, 104, 105], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.to_dict": {"executed_lines": [109], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.save_to_file": {"executed_lines": [134, 135], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary.print_summary": {"executed_lines": [140, 151, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 172, 173, 178, 179, 180, 183, 185, 187, 188, 190, 191, 192, 193, 194, 196, 197], "summary": {"covered_lines": 35, "num_statements": 37, "percent_covered": 94.5945945945946, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [184, 186], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36, 37, 44, 62, 63, 64, 66, 67, 68, 69, 71, 76, 77, 81, 82, 86, 87, 93, 100, 107, 132, 137], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BenchmarkResult": {"executed_lines": [32, 33, 34, 39, 40, 41, 42, 46], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BenchmarkSummary": {"executed_lines": [73, 74, 79, 84, 89, 90, 91, 95, 96, 97, 98, 102, 103, 104, 105, 109, 134, 135, 140, 151, 152, 153, 155, 156, 158, 159, 160, 161, 162, 163, 164, 165, 167, 168, 169, 170, 171, 172, 173, 178, 179, 180, 183, 185, 187, 188, 190, 191, 192, 193, 194, 196, 197], "summary": {"covered_lines": 53, "num_statements": 55, "percent_covered": 96.36363636363636, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [184, 186], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 36, 37, 44, 62, 63, 64, 66, 67, 68, 69, 71, 76, 77, 81, 82, 86, 87, 93, 100, 107, 132, 137], "summary": {"covered_lines": 42, "num_statements": 42, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/benchmarks/test_scenarios.py": {"executed_lines": [1, 3, 6, 7, 9, 10, 14, 26, 39, 41, 61, 62, 63, 71, 73, 75, 76, 80, 100, 101, 121, 122, 123, 132, 134, 136, 137, 139, 141, 143, 144, 145, 153, 154, 158, 159, 160, 161, 163, 165, 166, 168, 203, 204, 206, 207, 208, 210, 211, 212, 214, 215, 216, 217, 218, 222, 223, 227, 228, 229, 230, 232], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"TestScenarios.create_sample_python_file": {"executed_lines": [14, 26, 39, 41, 61, 62, 63, 71, 73], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestScenarios.create_sample_javascript_file": {"executed_lines": [80, 100, 101, 121, 122, 123, 132, 134], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestScenarios.create_test_files": {"executed_lines": [139, 141, 143, 144, 145, 153, 154, 158, 159, 160, 161, 163], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestScenarios.get_benchmark_scenarios": {"executed_lines": [168], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TestScenarios.create_scenario_files": {"executed_lines": [206, 207, 208, 210, 211, 212, 214, 215, 216, 217, 218, 222, 223, 227, 228, 229, 230, 232], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 9, 10, 75, 76, 136, 137, 165, 166, 203, 204], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TestScenarios": {"executed_lines": [14, 26, 39, 41, 61, 62, 63, 71, 73, 80, 100, 101, 121, 122, 123, 132, 134, 139, 141, 143, 144, 145, 153, 154, 158, 159, 160, 161, 163, 168, 206, 207, 208, 210, 211, 212, 214, 215, 216, 217, 218, 222, 223, 227, 228, 229, 230, 232], "summary": {"covered_lines": 48, "num_statements": 48, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 9, 10, 75, 76, 136, 137, 165, 166, 203, 204], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/cache/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 11, 13], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6, 11, 13], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 11, 13], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/cache/cache_manager.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 43, 44, 46, 47, 48, 49, 52, 53, 54, 60, 61, 62, 63, 64, 67, 73, 74, 75, 78, 79, 80, 85, 86, 88, 92, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 111, 118, 119, 120, 121, 122, 124, 135, 136, 137, 143, 145, 149, 150, 152, 154, 155, 157, 159, 160, 161, 164, 165, 167, 170, 172, 173, 174, 175, 176, 177, 178, 179, 184, 195, 196, 197, 200, 201, 202, 204, 206, 207, 209, 211, 212, 215, 216, 217, 220, 221, 222, 223, 230, 232, 233, 234, 235, 237, 239, 241, 242, 247, 249, 253, 255, 256, 258, 259, 260, 263, 264, 266, 267, 270, 279, 280, 292, 294, 295, 299, 301, 302, 304, 305, 306, 308, 309, 310, 311, 313, 314, 316, 325, 327, 328, 330, 333, 334, 344, 345, 347, 350, 351, 352, 353, 355, 358, 359, 369, 370, 373, 374, 376, 379, 380, 389, 391, 393, 403, 404, 407, 408, 409, 410, 411, 414, 417, 418, 419, 420, 423, 432, 435, 438, 439, 450, 452, 461, 463, 464, 465, 467, 468, 469, 471, 472, 476, 478, 487, 489, 490, 491, 493, 494, 495, 497, 498, 502, 504, 506, 509, 510, 513, 515, 517, 519, 522, 525, 526, 531, 532, 535, 539, 541, 548, 549, 553, 555, 561], "summary": {"covered_lines": 234, "num_statements": 261, "percent_covered": 89.65517241379311, "percent_covered_display": "90", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [55, 56, 57, 68, 69, 70, 81, 82, 138, 139, 141, 146, 198, 224, 225, 227, 228, 243, 245, 250, 271, 274, 331, 356, 377, 536, 537], "excluded_lines": [], "functions": {"CacheManager.__init__": {"executed_lines": [43, 44, 46, 47, 48, 49, 52, 53, 54, 60, 61, 62, 63, 64, 67, 73, 74, 75, 78, 79, 80, 85, 86, 88], "summary": {"covered_lines": 24, "num_statements": 32, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [55, 56, 57, 68, 69, 70, 81, 82], "excluded_lines": []}, "CacheManager._load_cache": {"executed_lines": [94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 111, 118, 119, 120, 121, 122, 124, 135, 136, 137, 143, 145, 149, 150], "summary": {"covered_lines": 28, "num_statements": 32, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [138, 139, 141, 146], "excluded_lines": []}, "CacheManager._save_entry_to_disk": {"executed_lines": [154, 155, 157, 159, 160, 161, 164, 165, 167, 170, 172, 173, 174, 175, 176, 177, 178, 179, 184, 195, 196, 197, 200, 201, 202], "summary": {"covered_lines": 25, "num_statements": 26, "percent_covered": 96.15384615384616, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [198], "excluded_lines": []}, "CacheManager._remove_entry_from_disk": {"executed_lines": [206, 207, 209, 211, 212, 215, 216, 217, 220, 221, 222, 223], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [224, 225, 227, 228], "excluded_lines": []}, "CacheManager._json_serializer": {"executed_lines": [232, 233, 234, 235, 237], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheManager._estimate_size": {"executed_lines": [241, 242], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [243, 245], "excluded_lines": []}, "CacheManager._evict_lru_entries": {"executed_lines": [249, 253, 255, 256, 258, 259, 260, 263, 264, 266, 267, 270, 279, 280, 292, 294, 295], "summary": {"covered_lines": 17, "num_statements": 20, "percent_covered": 85.0, "percent_covered_display": "85", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [250, 271, 274], "excluded_lines": []}, "CacheManager._cleanup_expired_entries": {"executed_lines": [301, 302, 304, 305, 306, 308, 309, 310, 311, 313, 314], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheManager.get": {"executed_lines": [325, 327, 328, 330, 333, 334, 344, 345, 347, 350, 351, 352, 353, 355, 358, 359, 369, 370, 373, 374, 376, 379, 380, 389, 391], "summary": {"covered_lines": 25, "num_statements": 28, "percent_covered": 89.28571428571429, "percent_covered_display": "89", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [331, 356, 377], "excluded_lines": []}, "CacheManager.put": {"executed_lines": [403, 404, 407, 408, 409, 410, 411, 414, 417, 418, 419, 420, 423, 432, 435, 438, 439, 450], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheManager.invalidate_by_content_hash": {"executed_lines": [461, 463, 464, 465, 467, 468, 469, 471, 472, 476], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheManager.invalidate_by_type": {"executed_lines": [487, 489, 490, 491, 493, 494, 495, 497, 498, 502], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheManager.clear": {"executed_lines": [506, 509, 510, 513, 515], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheManager.cleanup": {"executed_lines": [519, 522, 525, 526, 531, 532, 535, 539], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [536, 537], "excluded_lines": []}, "CacheManager.get_stats": {"executed_lines": [548, 549, 553], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheManager.get_hasher": {"executed_lines": [561], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 92, 152, 204, 230, 239, 247, 299, 316, 393, 452, 478, 504, 517, 541, 555], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CacheManager": {"executed_lines": [43, 44, 46, 47, 48, 49, 52, 53, 54, 60, 61, 62, 63, 64, 67, 73, 74, 75, 78, 79, 80, 85, 86, 88, 94, 95, 96, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 111, 118, 119, 120, 121, 122, 124, 135, 136, 137, 143, 145, 149, 150, 154, 155, 157, 159, 160, 161, 164, 165, 167, 170, 172, 173, 174, 175, 176, 177, 178, 179, 184, 195, 196, 197, 200, 201, 202, 206, 207, 209, 211, 212, 215, 216, 217, 220, 221, 222, 223, 232, 233, 234, 235, 237, 241, 242, 249, 253, 255, 256, 258, 259, 260, 263, 264, 266, 267, 270, 279, 280, 292, 294, 295, 301, 302, 304, 305, 306, 308, 309, 310, 311, 313, 314, 325, 327, 328, 330, 333, 334, 344, 345, 347, 350, 351, 352, 353, 355, 358, 359, 369, 370, 373, 374, 376, 379, 380, 389, 391, 403, 404, 407, 408, 409, 410, 411, 414, 417, 418, 419, 420, 423, 432, 435, 438, 439, 450, 461, 463, 464, 465, 467, 468, 469, 471, 472, 476, 487, 489, 490, 491, 493, 494, 495, 497, 498, 502, 506, 509, 510, 513, 515, 519, 522, 525, 526, 531, 532, 535, 539, 548, 549, 553, 561], "summary": {"covered_lines": 204, "num_statements": 231, "percent_covered": 88.31168831168831, "percent_covered_display": "88", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [55, 56, 57, 68, 69, 70, 81, 82, 138, 139, 141, 146, 198, 224, 225, 227, 228, 243, 245, 250, 271, 274, 331, 356, 377, 536, 537], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 92, 152, 204, 230, 239, 247, 299, 316, 393, 452, 478, 504, 517, 541, 555], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/cache/config_tracker.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 14, 16, 23, 24, 27, 29, 31, 32, 33, 38, 40, 41, 42, 46, 48, 50, 52, 54, 56, 58, 70, 72, 90, 96, 98, 107, 109, 110, 111, 112, 114, 115, 117, 119, 121, 123, 124, 125, 126, 127], "summary": {"covered_lines": 46, "num_statements": 65, "percent_covered": 70.76923076923077, "percent_covered_display": "71", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [34, 35, 36, 43, 44, 74, 76, 77, 78, 79, 81, 86, 87, 88, 92, 93, 94, 128, 129], "excluded_lines": [], "functions": {"ConfigurationTracker.__init__": {"executed_lines": [23, 24, 27], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigurationTracker._load_last_config_hash": {"executed_lines": [31, 32, 33], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [34, 35, 36], "excluded_lines": []}, "ConfigurationTracker._save_config_hash": {"executed_lines": [40, 41, 42], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [43, 44], "excluded_lines": []}, "ConfigurationTracker._hash_config": {"executed_lines": [48, 50, 52, 54, 56], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigurationTracker.check_and_invalidate_on_config_change": {"executed_lines": [70, 72, 90, 96], "summary": {"covered_lines": 4, "num_statements": 16, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [74, 76, 77, 78, 79, 81, 86, 87, 88, 92, 93, 94], "excluded_lines": []}, "ConfigurationTracker.force_invalidate": {"executed_lines": [107, 109, 110, 111, 112, 114, 115], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigurationTracker.get_current_config_hash": {"executed_lines": [119], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigurationTracker.reset_tracking": {"executed_lines": [123, 124, 125, 126, 127], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [128, 129], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 14, 16, 29, 38, 46, 58, 98, 117, 121], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ConfigurationTracker": {"executed_lines": [23, 24, 27, 31, 32, 33, 40, 41, 42, 48, 50, 52, 54, 56, 70, 72, 90, 96, 107, 109, 110, 111, 112, 114, 115, 119, 123, 124, 125, 126, 127], "summary": {"covered_lines": 31, "num_statements": 50, "percent_covered": 62.0, "percent_covered_display": "62", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [34, 35, 36, 43, 44, 74, 76, 77, 78, 79, 81, 86, 87, 88, 92, 93, 94, 128, 129], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 14, 16, 29, 38, 46, 58, 98, 117, 121], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/cache/content_hasher.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 16, 22, 24, 33, 34, 35, 37, 50, 51, 52, 54, 55, 56, 57, 58, 59, 61, 71, 72, 74, 96, 104, 106, 124, 130, 132, 151, 152, 153, 154, 156, 157, 158, 160, 162, 168, 170, 180, 181, 184, 191, 192, 194, 196, 209, 210, 211, 212, 215, 216], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ContentHasher.__init__": {"executed_lines": [22], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.hash_content": {"executed_lines": [33, 34, 35], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.hash_file": {"executed_lines": [50, 51, 52, 54, 55, 56, 57, 58, 59], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.hash_metadata": {"executed_lines": [71, 72], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.hash_llm_context": {"executed_lines": [96, 104], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.hash_semgrep_context": {"executed_lines": [124, 130], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.hash_validation_context": {"executed_lines": [151, 152, 153, 154, 156, 157, 158, 160, 162, 168], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.compute_git_hash": {"executed_lines": [180, 181, 184, 191, 192, 194], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContentHasher.compute_hybrid_hash": {"executed_lines": [209, 210, 211, 212, 215, 216], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 16, 24, 37, 61, 74, 106, 132, 170, 196], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ContentHasher": {"executed_lines": [22, 33, 34, 35, 50, 51, 52, 54, 55, 56, 57, 58, 59, 71, 72, 96, 104, 124, 130, 151, 152, 153, 154, 156, 157, 158, 160, 162, 168, 180, 181, 184, 191, 192, 194, 209, 210, 211, 212, 215, 216], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 16, 24, 37, 61, 74, 106, 132, 170, 196], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/cache/serializable_types.py": {"executed_lines": [1, 3, 4, 6, 9, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 63, 64, 88, 89, 119, 146, 150, 184, 185, 190, 191, 192, 194, 195, 196, 197, 199, 203, 204, 209, 210, 211, 213, 214, 215, 216, 218, 227, 228], "summary": {"covered_lines": 53, "num_statements": 87, "percent_covered": 60.91954022988506, "percent_covered_display": "61", "missing_lines": 34, "excluded_lines": 0}, "missing_lines": [12, 13, 16, 17, 20, 21, 23, 24, 25, 26, 27, 30, 58, 59, 60, 61, 66, 91, 121, 122, 123, 125, 148, 152, 153, 156, 162, 164, 187, 201, 206, 220, 230, 234], "excluded_lines": [], "functions": {"_safe_confidence_to_float": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [12, 13, 16, 17, 20, 21, 23, 24, 25, 26, 27, 30], "excluded_lines": []}, "SerializableThreatMatch.__post_init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [58, 59, 60, 61], "excluded_lines": []}, "SerializableThreatMatch.from_threat_match": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [66], "excluded_lines": []}, "SerializableThreatMatch.from_infrastructure_threat_match": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [91], "excluded_lines": []}, "SerializableThreatMatch.to_threat_match": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [121, 122, 123, 125], "excluded_lines": []}, "SerializableThreatMatch.to_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [148], "excluded_lines": []}, "SerializableThreatMatch.to_infrastructure_threat_match": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [152, 153, 156, 162, 164], "excluded_lines": []}, "SerializableThreatMatch.from_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [187], "excluded_lines": []}, "SerializableLLMResponse.to_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [201], "excluded_lines": []}, "SerializableLLMResponse.from_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [206], "excluded_lines": []}, "SerializableScanResult.to_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [220], "excluded_lines": []}, "SerializableScanResult.from_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [230, 234], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 9, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 63, 64, 88, 89, 119, 146, 150, 184, 185, 190, 191, 192, 194, 195, 196, 197, 199, 203, 204, 209, 210, 211, 213, 214, 215, 216, 218, 227, 228], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SerializableThreatMatch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [58, 59, 60, 61, 66, 91, 121, 122, 123, 125, 148, 152, 153, 156, 162, 164, 187], "excluded_lines": []}, "SerializableLLMResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [201, 206], "excluded_lines": []}, "SerializableScanResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [220, 230, 234], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 9, 33, 34, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 57, 63, 64, 88, 89, 119, 146, 150, 184, 185, 190, 191, 192, 194, 195, 196, 197, 199, 203, 204, 209, 210, 211, 213, 214, 215, 216, 218, 227, 228], "summary": {"covered_lines": 53, "num_statements": 65, "percent_covered": 81.53846153846153, "percent_covered_display": "82", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [12, 13, 16, 17, 20, 21, 23, 24, 25, 26, 27, 30], "excluded_lines": []}}}, "src/adversary_mcp_server/cache/types.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 26, 27, 28, 30, 31, 32, 33, 34, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 49, 50, 51, 53, 54, 56, 58, 60, 61, 63, 65, 67, 68, 71, 72, 73, 75, 76, 77, 78, 79, 80, 82, 83, 90, 91, 97], "summary": {"covered_lines": 58, "num_statements": 67, "percent_covered": 86.56716417910448, "percent_covered_display": "87", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [57, 85, 86, 87, 88, 93, 94, 95, 99], "excluded_lines": [], "functions": {"CacheKey.__str__": {"executed_lines": [31, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheEntry.__post_init__": {"executed_lines": [50, 51], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheEntry.is_expired": {"executed_lines": [56, 58], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [57], "excluded_lines": []}, "CacheEntry.age_seconds": {"executed_lines": [63], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheEntry.mark_accessed": {"executed_lines": [67, 68], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheStats.hit_rate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [85, 86, 87, 88], "excluded_lines": []}, "CacheStats.average_entry_size": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [93, 94, 95], "excluded_lines": []}, "CacheStats.to_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [99], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 26, 27, 28, 30, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 49, 53, 54, 60, 61, 65, 71, 72, 73, 75, 76, 77, 78, 79, 80, 82, 83, 90, 91, 97], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CacheType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheKey": {"executed_lines": [31, 32, 33, 34], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheEntry": {"executed_lines": [50, 51, 56, 58, 63, 67, 68], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [57], "excluded_lines": []}, "CacheStats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [85, 86, 87, 88, 93, 94, 95, 99], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 26, 27, 28, 30, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 49, 53, 54, 60, 61, 65, 71, 72, 73, 75, 76, 77, 78, 79, 80, 82, 83, 90, 91, 97], "summary": {"covered_lines": 47, "num_statements": 47, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/config.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 17, 18, 19, 34, 38, 42, 49, 53, 56, 59, 62, 65, 66, 67, 74, 77, 78, 79, 85, 89, 95, 96, 97, 98, 107, 113, 117, 119, 125, 127, 129, 130, 135, 136, 138, 139, 141, 143, 149, 150, 152, 158, 159, 179, 185, 188, 194, 197, 203], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"SecurityConfig.validate_llm_configuration": {"executed_lines": [125, 127, 129, 130, 135, 136, 138, 139, 141], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SecurityConfig.is_llm_analysis_available": {"executed_lines": [149, 150], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SecurityConfig.get_configuration_summary": {"executed_lines": [158, 159], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_app_data_dir": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_app_cache_dir": {"executed_lines": [194], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_app_metrics_dir": {"executed_lines": [203], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 17, 18, 19, 34, 38, 42, 49, 53, 56, 59, 62, 65, 66, 67, 74, 77, 78, 79, 85, 89, 95, 96, 97, 98, 107, 113, 117, 119, 143, 152, 179, 188, 197], "summary": {"covered_lines": 40, "num_statements": 40, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ValidationFallbackMode": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SecurityConfig": {"executed_lines": [125, 127, 129, 130, 135, 136, 138, 139, 141, 149, 150, 158, 159], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 17, 18, 19, 34, 38, 42, 49, 53, 56, 59, 62, 65, 66, 67, 74, 77, 78, 79, 85, 89, 95, 96, 97, 98, 107, 113, 117, 119, 143, 152, 179, 185, 188, 194, 197, 203], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/config_manager.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 14, 17, 18, 25, 26, 29, 30, 37, 38, 41, 42, 43, 55, 56, 59, 63, 64, 65, 66, 70, 71, 72, 73, 77, 78, 79, 80, 81, 85, 86, 87, 91, 92, 93, 94, 95, 98, 99, 101, 107, 108, 109, 110, 112, 116, 123, 125, 129, 132, 134, 141, 142, 143, 145, 146, 154, 156, 159, 161, 162, 163, 164, 165, 176, 179, 181, 183, 189, 191, 192, 193, 194, 197, 200, 205, 208, 213, 216, 221, 224, 227, 230, 235, 238, 241, 246, 250, 255, 257, 258, 259, 264, 266, 267, 268, 273, 283, 346, 388, 391, 395, 398, 400, 403, 406], "summary": {"covered_lines": 109, "num_statements": 159, "percent_covered": 68.55345911949685, "percent_covered_display": "69", "missing_lines": 50, "excluded_lines": 0}, "missing_lines": [126, 130, 148, 150, 151, 152, 167, 169, 170, 171, 172, 173, 260, 261, 262, 269, 270, 271, 275, 276, 277, 278, 279, 281, 285, 288, 291, 294, 295, 296, 297, 300, 303, 308, 313, 316, 322, 323, 324, 325, 328, 331, 332, 333, 334, 336, 340, 344, 348, 350], "excluded_lines": [], "functions": {"ConfigManager.__init__": {"executed_lines": [107, 108, 109, 110, 112], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigManager._detect_profile": {"executed_lines": [123, 125, 129, 132], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [126, 130], "excluded_lines": []}, "ConfigManager._detect_resource_tier": {"executed_lines": [141, 142, 143, 145, 146], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [148, 150, 151, 152], "excluded_lines": []}, "ConfigManager._create_dynamic_limits": {"executed_lines": [156, 159, 161, 162, 163, 164, 165, 176, 179, 181], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [167, 169, 170, 171, 172, 173], "excluded_lines": []}, "ConfigManager._apply_resource_scaling": {"executed_lines": [189, 191, 192, 193, 194], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigManager._apply_env_overrides": {"executed_lines": [200, 205, 208, 213, 216, 221, 224, 227, 230, 235, 238, 241, 246, 250], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigManager._get_env_int": {"executed_lines": [257, 258, 259], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [260, 261, 262], "excluded_lines": []}, "ConfigManager._get_env_float": {"executed_lines": [266, 267, 268], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [269, 270, 271], "excluded_lines": []}, "ConfigManager._get_env_bool": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [275, 276, 277, 278, 279, 281], "excluded_lines": []}, "ConfigManager.get_security_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0}, "missing_lines": [285, 288, 291, 294, 295, 296, 297, 300, 303, 308, 313, 316, 322, 323, 324, 325, 328, 331, 332, 333, 334, 336, 340, 344], "excluded_lines": []}, "ConfigManager.get_configuration_summary": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [348, 350], "excluded_lines": []}, "get_config_manager": {"executed_lines": [395, 398, 400], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "reset_config_manager": {"executed_lines": [406], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 14, 17, 18, 25, 26, 29, 30, 37, 38, 41, 42, 43, 55, 56, 59, 63, 64, 65, 66, 70, 71, 72, 73, 77, 78, 79, 80, 81, 85, 86, 87, 91, 92, 93, 94, 95, 98, 99, 101, 116, 134, 154, 183, 197, 255, 264, 273, 283, 346, 388, 391, 403], "summary": {"covered_lines": 56, "num_statements": 56, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ConfigProfile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ResourceTier": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DynamicLimits": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigManager": {"executed_lines": [107, 108, 109, 110, 112, 123, 125, 129, 132, 141, 142, 143, 145, 146, 156, 159, 161, 162, 163, 164, 165, 176, 179, 181, 189, 191, 192, 193, 194, 200, 205, 208, 213, 216, 221, 224, 227, 230, 235, 238, 241, 246, 250, 257, 258, 259, 266, 267, 268], "summary": {"covered_lines": 49, "num_statements": 99, "percent_covered": 49.494949494949495, "percent_covered_display": "49", "missing_lines": 50, "excluded_lines": 0}, "missing_lines": [126, 130, 148, 150, 151, 152, 167, 169, 170, 171, 172, 173, 260, 261, 262, 269, 270, 271, 275, 276, 277, 278, 279, 281, 285, 288, 291, 294, 295, 296, 297, 300, 303, 308, 313, 316, 322, 323, 324, 325, 328, 331, 332, 333, 334, 336, 340, 344, 348, 350], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 14, 17, 18, 25, 26, 29, 30, 37, 38, 41, 42, 43, 55, 56, 59, 63, 64, 65, 66, 70, 71, 72, 73, 77, 78, 79, 80, 81, 85, 86, 87, 91, 92, 93, 94, 95, 98, 99, 101, 116, 134, 154, 183, 197, 255, 264, 273, 283, 346, 388, 391, 395, 398, 400, 403, 406], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/container.py": {"executed_lines": [1, 7, 8, 9, 10, 11, 13, 15, 17, 20, 21, 23, 24, 25, 28, 29, 31, 38, 39, 40, 41, 44, 45, 56, 58, 59, 60, 61, 62, 64, 74, 79, 83, 93, 98, 102, 112, 117, 121, 131, 132, 138, 140, 149, 150, 155, 157, 171, 172, 175, 176, 181, 182, 183, 185, 188, 189, 190, 193, 194, 195, 198, 200, 212, 214, 216, 217, 220, 222, 225, 227, 237, 238, 240, 241, 242, 243, 244, 245, 247, 248, 251, 253, 255, 257, 267, 270, 271, 273, 274, 275, 277, 279, 288, 289, 291, 304, 305, 309, 311, 313, 314, 319, 320, 323, 326, 329, 331, 341, 342, 344, 345, 348, 349, 351, 352, 353, 355, 356, 359, 362, 364, 373, 375, 384, 386, 395, 397, 402, 403, 405, 411, 413, 419, 421, 422, 423, 424, 425, 430, 431, 432, 433, 435, 436, 437, 438, 442, 443, 445, 447], "summary": {"covered_lines": 147, "num_statements": 152, "percent_covered": 96.71052631578948, "percent_covered_display": "97", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [346, 361, 367, 426, 427], "excluded_lines": [], "functions": {"ServiceRegistration.__init__": {"executed_lines": [38, 39, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.__init__": {"executed_lines": [58, 59, 60, 61, 62], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.register_singleton": {"executed_lines": [74, 79], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.register_scoped": {"executed_lines": [93, 98], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.register_transient": {"executed_lines": [112, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.register_factory": {"executed_lines": [131, 132, 138], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.register_instance": {"executed_lines": [149, 150, 155], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.resolve": {"executed_lines": [171, 172, 175, 176, 181, 182, 183, 185, 188, 189, 190, 193, 194, 195, 198], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer._create_instance": {"executed_lines": [212, 214, 216, 217, 220, 222, 225], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer._create_from_factory": {"executed_lines": [237, 238, 240, 241, 242, 243, 244, 245, 247, 248, 251, 253, 255], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer._is_optional_type": {"executed_lines": [267, 270, 271, 273, 274, 275, 277], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer._is_primitive_type": {"executed_lines": [288, 289], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer._resolve_optional_dependency": {"executed_lines": [304, 305, 309, 311, 313, 314, 319, 320, 323, 326, 329], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer._create_from_class": {"executed_lines": [341, 342, 344, 345, 348, 349, 351, 352, 353, 355, 356, 359, 362, 364, 373], "summary": {"covered_lines": 15, "num_statements": 18, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [346, 361, 367], "excluded_lines": []}, "ServiceContainer.is_registered": {"executed_lines": [384], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.get_registration": {"executed_lines": [395], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.clear_singletons": {"executed_lines": [402, 403], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.get_registered_services": {"executed_lines": [411], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer.dispose_async": {"executed_lines": [419, 421, 422, 423, 424, 425, 430, 431, 432, 433, 435, 436, 437, 438, 442, 443], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [426, 427], "excluded_lines": []}, "ServiceContainer.__str__": {"executed_lines": [447], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 13, 15, 17, 20, 21, 23, 24, 25, 28, 29, 31, 44, 45, 56, 64, 83, 102, 121, 140, 157, 200, 227, 257, 279, 291, 331, 375, 386, 397, 405, 413, 445], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ServiceLifetime": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceRegistration": {"executed_lines": [38, 39, 40, 41], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ServiceContainer": {"executed_lines": [58, 59, 60, 61, 62, 74, 79, 93, 98, 112, 117, 131, 132, 138, 149, 150, 155, 171, 172, 175, 176, 181, 182, 183, 185, 188, 189, 190, 193, 194, 195, 198, 212, 214, 216, 217, 220, 222, 225, 237, 238, 240, 241, 242, 243, 244, 245, 247, 248, 251, 253, 255, 267, 270, 271, 273, 274, 275, 277, 288, 289, 304, 305, 309, 311, 313, 314, 319, 320, 323, 326, 329, 341, 342, 344, 345, 348, 349, 351, 352, 353, 355, 356, 359, 362, 364, 373, 384, 395, 402, 403, 411, 419, 421, 422, 423, 424, 425, 430, 431, 432, 433, 435, 436, 437, 438, 442, 443, 447], "summary": {"covered_lines": 109, "num_statements": 114, "percent_covered": 95.6140350877193, "percent_covered_display": "96", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [346, 361, 367, 426, 427], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 13, 15, 17, 20, 21, 23, 24, 25, 28, 29, 31, 44, 45, 56, 64, 83, 102, 121, 140, 157, 200, 227, 257, 279, 291, 331, 375, 386, 397, 405, 413, 445], "summary": {"covered_lines": 34, "num_statements": 34, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/credentials.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 22, 25, 28, 41, 42, 43, 46, 53, 55, 56, 58, 59, 60, 63, 64, 66, 69, 70, 72, 75, 76, 78, 81, 82, 84, 87, 88, 93, 94, 96, 98, 99, 100, 102, 103, 105, 112, 113, 114, 116, 117, 119, 120, 121, 123, 125, 126, 127, 128, 129, 132, 133, 134, 137, 138, 140, 142, 144, 145, 146, 148, 151, 152, 153, 154, 156, 160, 162, 168, 170, 180, 181, 182, 184, 186, 191, 205, 206, 207, 208, 210, 211, 213, 214, 215, 217, 220, 223, 224, 225, 226, 227, 228, 231, 232, 233, 234, 235, 236, 239, 240, 242, 244, 253, 254, 255, 260, 261, 262, 263, 264, 268, 271, 272, 275, 276, 277, 280, 294, 295, 296, 297, 298, 299, 300, 301, 303, 309, 310, 311, 315, 316, 317, 318, 321, 322, 323, 327, 348, 349, 350, 351, 355, 356, 362, 363, 365, 368, 370, 371, 378, 380, 386, 387, 388, 389, 390, 391, 392, 393, 395, 404, 405, 406, 407, 408, 410, 411, 413, 414, 415, 418, 419, 420, 426, 432, 434, 435, 436, 438, 439, 440, 441, 444, 445, 447, 448, 453, 454, 456, 460, 463, 484, 485, 486, 487, 491, 492, 493, 505, 511, 512, 513, 514, 515, 517, 518, 523, 532, 533, 534, 543, 544, 547, 548, 549, 557, 567, 569, 575, 582, 583, 585, 586, 587, 588, 591, 594, 595, 597, 598, 599, 600, 604, 613, 614, 617, 618, 619, 624, 627, 628, 629, 683, 686, 687, 739, 740, 741, 742, 743, 745, 765, 774, 775, 776, 777, 778, 783, 789, 790, 791, 792, 793, 794, 795, 799, 802, 807, 813, 814, 815, 816, 817, 822, 833, 834, 836, 837, 838, 839, 842, 843, 844, 845, 847, 856, 858, 859, 860, 862, 863, 864, 865, 866, 867, 871, 874, 879, 888, 890, 891, 892, 894, 895, 896, 897, 902, 908, 909, 910, 911, 912, 915, 917, 919, 922, 923, 924, 929, 930, 931, 932, 933, 934, 935, 938, 939, 940, 942, 948, 951, 952, 953, 956, 957, 958, 961, 962, 963, 965, 966, 968, 974, 976, 987, 988, 989, 990, 991, 1012, 1013, 1014, 1017, 1025, 1026, 1027, 1035, 1050, 1053, 1054, 1055, 1056, 1059, 1062, 1063, 1064, 1068], "summary": {"covered_lines": 379, "num_statements": 489, "percent_covered": 77.50511247443762, "percent_covered_display": "78", "missing_lines": 110, "excluded_lines": 0}, "missing_lines": [285, 288, 290, 369, 374, 375, 376, 377, 422, 423, 424, 495, 502, 503, 519, 520, 521, 552, 553, 558, 559, 560, 561, 562, 563, 630, 631, 638, 639, 642, 643, 644, 645, 649, 652, 653, 654, 655, 658, 659, 660, 661, 662, 663, 665, 666, 667, 670, 677, 678, 679, 680, 688, 689, 696, 697, 700, 701, 702, 703, 707, 710, 711, 714, 715, 716, 717, 718, 719, 721, 722, 723, 726, 733, 734, 735, 736, 747, 750, 753, 756, 757, 758, 760, 761, 763, 779, 780, 781, 803, 804, 805, 818, 819, 820, 875, 876, 877, 898, 899, 900, 914, 1007, 1008, 1009, 1021, 1022, 1031, 1032, 1036], "excluded_lines": [], "functions": {"get_credential_manager": {"executed_lines": [41, 42, 43], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "reset_credential_manager": {"executed_lines": [53, 55, 56, 58, 59, 60], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager.__new__": {"executed_lines": [98, 99, 100, 102, 103], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager.__init__": {"executed_lines": [112, 113, 114, 116, 117, 119, 120, 121, 123, 125, 126, 127, 128, 129, 132, 133, 134, 137, 138], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager._ensure_config_dir": {"executed_lines": [142, 144, 145, 146, 148, 151, 152, 153, 154, 156], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager._derive_key": {"executed_lines": [162, 168], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager._encrypt_data": {"executed_lines": [180, 181, 182, 184, 186], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager._decrypt_data": {"executed_lines": [205, 206, 207, 208, 210, 211, 213, 214, 215], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager._get_machine_id": {"executed_lines": [220, 223, 224, 225, 226, 227, 228, 231, 232, 233, 234, 235, 236, 239, 240, 242], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager._try_keyring_storage": {"executed_lines": [253, 254, 255, 260, 261, 262, 263, 264, 268, 271, 272, 275, 276, 277, 280, 294, 295, 296, 297, 298, 299, 300, 301], "summary": {"covered_lines": 23, "num_statements": 26, "percent_covered": 88.46153846153847, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [285, 288, 290], "excluded_lines": []}, "CredentialManager._try_keyring_retrieval": {"executed_lines": [309, 310, 311, 315, 316, 317, 318, 321, 322, 323, 327, 348, 349, 350, 351, 355, 356, 362, 363, 365, 368, 370, 371, 378], "summary": {"covered_lines": 24, "num_statements": 29, "percent_covered": 82.75862068965517, "percent_covered_display": "83", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [369, 374, 375, 376, 377], "excluded_lines": []}, "CredentialManager._try_keyring_deletion": {"executed_lines": [386, 387, 388, 389, 390, 391, 392, 393], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager._store_file_config": {"executed_lines": [404, 405, 406, 407, 408, 410, 411, 413, 414, 415, 418, 419, 420], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [422, 423, 424], "excluded_lines": []}, "CredentialManager._load_file_config": {"executed_lines": [432, 434, 435, 436, 438, 439, 440, 441, 444, 445, 447, 448, 453, 454, 456, 460, 463, 484, 485, 486, 487, 491, 492, 493], "summary": {"covered_lines": 24, "num_statements": 27, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [495, 502, 503], "excluded_lines": []}, "CredentialManager._delete_file_config": {"executed_lines": [511, 512, 513, 514, 515, 517, 518], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [519, 520, 521], "excluded_lines": []}, "CredentialManager.store_config": {"executed_lines": [532, 533, 534, 543, 544, 547, 548, 549, 557, 567, 569, 575, 582, 583, 585, 586, 587, 588, 591, 594, 595, 597, 598, 599, 600], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "76", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [552, 553, 558, 559, 560, 561, 562, 563], "excluded_lines": []}, "CredentialManager.load_config": {"executed_lines": [613, 614, 617, 618, 619, 624, 627, 628, 629, 683, 686, 687, 739, 740, 741, 742, 743], "summary": {"covered_lines": 17, "num_statements": 69, "percent_covered": 24.63768115942029, "percent_covered_display": "25", "missing_lines": 52, "excluded_lines": 0}, "missing_lines": [630, 631, 638, 639, 642, 643, 644, 645, 649, 652, 653, 654, 655, 658, 659, 660, 661, 662, 663, 665, 666, 667, 670, 677, 678, 679, 680, 688, 689, 696, 697, 700, 701, 702, 703, 707, 710, 711, 714, 715, 716, 717, 718, 719, 721, 722, 723, 726, 733, 734, 735, 736], "excluded_lines": []}, "CredentialManager.delete_config": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [747, 750, 753, 756, 757, 758, 760, 761, 763], "excluded_lines": []}, "CredentialManager.store_semgrep_api_key": {"executed_lines": [774, 775, 776, 777, 778], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [779, 780, 781], "excluded_lines": []}, "CredentialManager.get_semgrep_api_key": {"executed_lines": [789, 790, 791, 792, 793, 794, 795, 799, 802], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [803, 804, 805], "excluded_lines": []}, "CredentialManager.delete_semgrep_api_key": {"executed_lines": [813, 814, 815, 816, 817], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [818, 819, 820], "excluded_lines": []}, "CredentialManager.store_llm_api_key": {"executed_lines": [833, 834, 836, 837, 838, 839, 842, 843, 844, 845], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager.get_llm_api_key": {"executed_lines": [856, 858, 859, 860, 862, 863, 864, 865, 866, 867, 871, 874], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [875, 876, 877], "excluded_lines": []}, "CredentialManager.delete_llm_api_key": {"executed_lines": [888, 890, 891, 892, 894, 895, 896, 897], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [898, 899, 900], "excluded_lines": []}, "CredentialManager.get_configured_llm_provider": {"executed_lines": [908, 909, 910, 911, 912, 915], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [914], "excluded_lines": []}, "CredentialManager.clear_llm_configuration": {"executed_lines": [919, 922, 923, 924, 929, 930, 931, 932, 933, 934, 935, 938, 939, 940], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager.has_config": {"executed_lines": [948, 951, 952, 953, 956, 957, 958, 961, 962, 963, 965, 966], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager.debug_keyring_state": {"executed_lines": [974, 976, 987, 988, 989, 990, 991, 1012, 1013, 1014, 1017, 1025, 1026, 1027, 1035, 1050, 1053, 1054, 1055, 1056, 1059, 1062, 1063, 1064, 1068], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "76", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [1007, 1008, 1009, 1021, 1022, 1031, 1032, 1036], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 22, 25, 28, 46, 63, 64, 66, 69, 70, 72, 75, 76, 78, 81, 82, 84, 87, 88, 93, 94, 96, 105, 140, 160, 170, 191, 217, 244, 303, 380, 395, 426, 505, 523, 604, 745, 765, 783, 807, 822, 847, 879, 902, 917, 942, 968], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CredentialError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialNotFoundError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialStorageError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialDecryptionError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CredentialManager": {"executed_lines": [98, 99, 100, 102, 103, 112, 113, 114, 116, 117, 119, 120, 121, 123, 125, 126, 127, 128, 129, 132, 133, 134, 137, 138, 142, 144, 145, 146, 148, 151, 152, 153, 154, 156, 162, 168, 180, 181, 182, 184, 186, 205, 206, 207, 208, 210, 211, 213, 214, 215, 220, 223, 224, 225, 226, 227, 228, 231, 232, 233, 234, 235, 236, 239, 240, 242, 253, 254, 255, 260, 261, 262, 263, 264, 268, 271, 272, 275, 276, 277, 280, 294, 295, 296, 297, 298, 299, 300, 301, 309, 310, 311, 315, 316, 317, 318, 321, 322, 323, 327, 348, 349, 350, 351, 355, 356, 362, 363, 365, 368, 370, 371, 378, 386, 387, 388, 389, 390, 391, 392, 393, 404, 405, 406, 407, 408, 410, 411, 413, 414, 415, 418, 419, 420, 432, 434, 435, 436, 438, 439, 440, 441, 444, 445, 447, 448, 453, 454, 456, 460, 463, 484, 485, 486, 487, 491, 492, 493, 511, 512, 513, 514, 515, 517, 518, 532, 533, 534, 543, 544, 547, 548, 549, 557, 567, 569, 575, 582, 583, 585, 586, 587, 588, 591, 594, 595, 597, 598, 599, 600, 613, 614, 617, 618, 619, 624, 627, 628, 629, 683, 686, 687, 739, 740, 741, 742, 743, 774, 775, 776, 777, 778, 789, 790, 791, 792, 793, 794, 795, 799, 802, 813, 814, 815, 816, 817, 833, 834, 836, 837, 838, 839, 842, 843, 844, 845, 856, 858, 859, 860, 862, 863, 864, 865, 866, 867, 871, 874, 888, 890, 891, 892, 894, 895, 896, 897, 908, 909, 910, 911, 912, 915, 919, 922, 923, 924, 929, 930, 931, 932, 933, 934, 935, 938, 939, 940, 948, 951, 952, 953, 956, 957, 958, 961, 962, 963, 965, 966, 974, 976, 987, 988, 989, 990, 991, 1012, 1013, 1014, 1017, 1025, 1026, 1027, 1035, 1050, 1053, 1054, 1055, 1056, 1059, 1062, 1063, 1064, 1068], "summary": {"covered_lines": 313, "num_statements": 423, "percent_covered": 73.99527186761229, "percent_covered_display": "74", "missing_lines": 110, "excluded_lines": 0}, "missing_lines": [285, 288, 290, 369, 374, 375, 376, 377, 422, 423, 424, 495, 502, 503, 519, 520, 521, 552, 553, 558, 559, 560, 561, 562, 563, 630, 631, 638, 639, 642, 643, 644, 645, 649, 652, 653, 654, 655, 658, 659, 660, 661, 662, 663, 665, 666, 667, 670, 677, 678, 679, 680, 688, 689, 696, 697, 700, 701, 702, 703, 707, 710, 711, 714, 715, 716, 717, 718, 719, 721, 722, 723, 726, 733, 734, 735, 736, 747, 750, 753, 756, 757, 758, 760, 761, 763, 779, 780, 781, 803, 804, 805, 818, 819, 820, 875, 876, 877, 898, 899, 900, 914, 1007, 1008, 1009, 1021, 1022, 1031, 1032, 1036], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 19, 20, 22, 25, 28, 41, 42, 43, 46, 53, 55, 56, 58, 59, 60, 63, 64, 66, 69, 70, 72, 75, 76, 78, 81, 82, 84, 87, 88, 93, 94, 96, 105, 140, 160, 170, 191, 217, 244, 303, 380, 395, 426, 505, 523, 604, 745, 765, 783, 807, 822, 847, 879, 902, 917, 942, 968], "summary": {"covered_lines": 66, "num_statements": 66, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/dashboard/__init__.py": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/dashboard/html_dashboard.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 15, 18, 19, 21, 22, 23, 26, 27, 28, 29, 34, 37, 45, 46, 47, 48, 49, 51, 56, 59, 60, 61, 63, 72, 75, 80, 81, 83, 86, 89, 90, 93, 94, 95, 98, 101, 102, 104, 106, 108, 109, 110, 112, 113, 114, 115, 117, 119, 120, 121, 128, 130, 132, 133, 135, 137, 140, 141, 142, 143, 145, 146, 147, 149, 151, 154, 155, 156, 157, 160, 162, 163, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 183, 184, 185, 186, 187, 189, 195, 196, 198, 199, 200, 202, 206, 208, 209, 212, 213, 214, 217, 218, 219, 221, 235, 237, 238, 241, 243, 254, 262, 264, 265, 278, 279, 297, 298, 301, 302, 304, 305, 306, 307, 309, 312, 313, 316, 319, 322, 324, 326, 512, 513, 515, 517, 1072, 1073, 1075, 1077, 1162, 1163, 1167, 1169, 1170, 1172, 1177], "summary": {"covered_lines": 153, "num_statements": 165, "percent_covered": 92.72727272727273, "percent_covered_display": "93", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [122, 123, 124, 131, 138, 152, 158, 169, 192, 232, 233, 1173], "excluded_lines": [], "functions": {"ComprehensiveHTMLDashboard.__init__": {"executed_lines": [22, 23, 26, 27, 28, 29, 34, 37, 45, 46, 47, 48, 49], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveHTMLDashboard.generate_and_launch_dashboard": {"executed_lines": [56, 59, 60, 61, 63, 72, 75, 80, 81, 83, 86, 89, 90, 93, 94, 95, 98, 101, 102, 104], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveHTMLDashboard._copy_static_assets": {"executed_lines": [108, 109, 110, 112, 113, 114, 115], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveHTMLDashboard._launch_in_browser": {"executed_lines": [119, 120, 121], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [122, 123, 124], "excluded_lines": []}, "ComprehensiveHTMLDashboard._timestamp_to_datetime": {"executed_lines": [130, 132, 133], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [131], "excluded_lines": []}, "ComprehensiveHTMLDashboard._format_duration": {"executed_lines": [137, 140, 141, 142, 143, 145, 146, 147], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [138], "excluded_lines": []}, "ComprehensiveHTMLDashboard._format_size": {"executed_lines": [151, 154, 155, 156, 157], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [152, 158], "excluded_lines": []}, "ComprehensiveHTMLDashboard._format_percentage": {"executed_lines": [162, 163, 164], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveHTMLDashboard._basename": {"executed_lines": [168, 170, 172], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [169], "excluded_lines": []}, "ComprehensiveHTMLDashboard._sanitize_dashboard_data": {"executed_lines": [176, 178, 195, 196, 198, 199, 200, 202], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveHTMLDashboard._sanitize_dashboard_data.sanitize_value": {"executed_lines": [180, 182, 183, 184, 185, 186, 187, 189], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [192], "excluded_lines": []}, "ComprehensiveHTMLDashboard.get_current_system_status": {"executed_lines": [208, 209, 212, 213, 214, 217, 218, 219, 221], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [232, 233], "excluded_lines": []}, "ComprehensiveHTMLDashboard.get_recent_activity": {"executed_lines": [237, 238, 241, 243, 254, 262, 264, 265, 278, 279, 297, 298], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DashboardAssetManager.__init__": {"executed_lines": [305, 306, 307], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DashboardAssetManager.create_default_assets": {"executed_lines": [312, 313, 316, 319, 322], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DashboardAssetManager._create_main_template": {"executed_lines": [326, 512, 513], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DashboardAssetManager._create_css_styles": {"executed_lines": [517, 1072, 1073], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DashboardAssetManager._create_javascript": {"executed_lines": [1077, 1162, 1163], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ensure_dashboard_assets": {"executed_lines": [1169, 1170, 1172], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1173], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 15, 18, 19, 21, 51, 106, 117, 128, 135, 149, 160, 166, 174, 206, 235, 301, 302, 304, 309, 324, 515, 1075, 1167, 1177], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ComprehensiveHTMLDashboard": {"executed_lines": [22, 23, 26, 27, 28, 29, 34, 37, 45, 46, 47, 48, 49, 56, 59, 60, 61, 63, 72, 75, 80, 81, 83, 86, 89, 90, 93, 94, 95, 98, 101, 102, 104, 108, 109, 110, 112, 113, 114, 115, 119, 120, 121, 130, 132, 133, 137, 140, 141, 142, 143, 145, 146, 147, 151, 154, 155, 156, 157, 162, 163, 164, 168, 170, 172, 176, 178, 180, 182, 183, 184, 185, 186, 187, 189, 195, 196, 198, 199, 200, 202, 208, 209, 212, 213, 214, 217, 218, 219, 221, 237, 238, 241, 243, 254, 262, 264, 265, 278, 279, 297, 298], "summary": {"covered_lines": 102, "num_statements": 113, "percent_covered": 90.26548672566372, "percent_covered_display": "90", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [122, 123, 124, 131, 138, 152, 158, 169, 192, 232, 233], "excluded_lines": []}, "DashboardAssetManager": {"executed_lines": [305, 306, 307, 312, 313, 316, 319, 322, 326, 512, 513, 517, 1072, 1073, 1077, 1162, 1163], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 15, 18, 19, 21, 51, 106, 117, 128, 135, 149, 160, 166, 174, 206, 235, 301, 302, 304, 309, 324, 515, 1075, 1167, 1169, 1170, 1172, 1177], "summary": {"covered_lines": 34, "num_statements": 35, "percent_covered": 97.14285714285714, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1173], "excluded_lines": []}}}, "src/adversary_mcp_server/database/__init__.py": {"executed_lines": [1, 3, 15], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 15], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 15], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/database/constraints.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 18, 21, 22, 24, 25, 27, 33, 35, 42, 43, 45, 48, 51, 54, 56, 59, 68, 72, 78, 86, 87, 89, 90, 91, 98, 100, 105, 126, 127, 130, 131, 138, 140, 142, 144, 146, 147, 155, 156, 163, 164, 172, 215, 238, 320, 368, 371, 372, 374, 377, 380, 386, 391, 392, 393, 396, 406, 415, 416, 417, 420, 430, 439, 442, 445, 446, 448, 450, 453, 459, 461, 468, 469, 471, 472, 497, 500, 520, 540], "summary": {"covered_lines": 84, "num_statements": 182, "percent_covered": 46.15384615384615, "percent_covered_display": "46", "missing_lines": 98, "excluded_lines": 0}, "missing_lines": [61, 62, 63, 64, 65, 66, 92, 93, 96, 132, 133, 136, 168, 169, 170, 178, 180, 188, 189, 191, 192, 197, 202, 204, 207, 209, 210, 211, 212, 213, 217, 224, 227, 230, 233, 234, 236, 244, 251, 257, 258, 266, 267, 276, 287, 298, 308, 311, 312, 326, 328, 334, 335, 337, 342, 343, 344, 345, 346, 347, 348, 349, 352, 354, 357, 359, 360, 361, 362, 363, 364, 387, 401, 413, 425, 437, 474, 476, 479, 485, 487, 494, 495, 510, 511, 513, 516, 517, 530, 531, 533, 536, 537, 550, 551, 553, 556, 557], "excluded_lines": [], "functions": {"DatabaseConstraintManager.__init__": {"executed_lines": [25], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseConstraintManager.install_data_consistency_constraints": {"executed_lines": [33, 35, 42, 43, 45, 48, 51, 54, 56, 59], "summary": {"covered_lines": 10, "num_statements": 16, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [61, 62, 63, 64, 65, 66], "excluded_lines": []}, "DatabaseConstraintManager._install_foreign_key_constraints": {"executed_lines": [72, 78, 86, 87, 89, 90, 91], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [92, 93, 96], "excluded_lines": []}, "DatabaseConstraintManager._install_check_constraints": {"executed_lines": [100, 105, 126, 127, 130, 131], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [132, 133, 136], "excluded_lines": []}, "DatabaseConstraintManager._setup_orm_event_listeners": {"executed_lines": [140, 142, 144, 146, 147, 155, 156, 163, 164], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [168, 169, 170], "excluded_lines": []}, "DatabaseConstraintManager.validate_constraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [178, 180, 188, 189, 191, 192, 197, 202, 204, 207, 209, 210, 211, 212, 213], "excluded_lines": []}, "DatabaseConstraintManager._check_event_listeners_registered": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [217, 224, 227, 230, 233, 234, 236], "excluded_lines": []}, "DatabaseConstraintManager._check_constraint_violations": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [244, 251, 257, 258, 266, 267, 276, 287, 298, 308, 311, 312], "excluded_lines": []}, "DatabaseConstraintManager.remove_constraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [326, 328, 334, 335, 337, 342, 343, 344, 345, 346, 347, 348, 349, 352, 354, 357, 359, 360, 361, 362, 363, 364], "excluded_lines": []}, "setup_application_level_constraints": {"executed_lines": [371, 372, 391, 392, 393, 415, 416, 417, 439], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "setup_application_level_constraints.validate_threat_finding_insert": {"executed_lines": [374, 377, 380, 386], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [387], "excluded_lines": []}, "setup_application_level_constraints.validate_mcp_execution_constraints": {"executed_lines": [396, 406], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [401, 413], "excluded_lines": []}, "setup_application_level_constraints.validate_scan_execution_constraints": {"executed_lines": [420, 430], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [425, 437], "excluded_lines": []}, "setup_automatic_count_maintenance": {"executed_lines": [445, 446, 471, 472, 497], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "setup_automatic_count_maintenance.update_threats_count_on_insert": {"executed_lines": [448, 450, 453, 459, 461, 468, 469], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "setup_automatic_count_maintenance.update_threats_count_on_delete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [474, 476, 479, 485, 487, 494, 495], "excluded_lines": []}, "install_database_constraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [510, 511, 513, 516, 517], "excluded_lines": []}, "validate_database_constraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [530, 531, 533, 536, 537], "excluded_lines": []}, "remove_database_constraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [550, 551, 553, 556, 557], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 18, 21, 22, 24, 27, 68, 98, 138, 172, 215, 238, 320, 368, 442, 500, 520, 540], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DatabaseConstraintManager": {"executed_lines": [25, 33, 35, 42, 43, 45, 48, 51, 54, 56, 59, 72, 78, 86, 87, 89, 90, 91, 100, 105, 126, 127, 130, 131, 140, 142, 144, 146, 147, 155, 156, 163, 164], "summary": {"covered_lines": 33, "num_statements": 104, "percent_covered": 31.73076923076923, "percent_covered_display": "32", "missing_lines": 71, "excluded_lines": 0}, "missing_lines": [61, 62, 63, 64, 65, 66, 92, 93, 96, 132, 133, 136, 168, 169, 170, 178, 180, 188, 189, 191, 192, 197, 202, 204, 207, 209, 210, 211, 212, 213, 217, 224, 227, 230, 233, 234, 236, 244, 251, 257, 258, 266, 267, 276, 287, 298, 308, 311, 312, 326, 328, 334, 335, 337, 342, 343, 344, 345, 346, 347, 348, 349, 352, 354, 357, 359, 360, 361, 362, 363, 364], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 18, 21, 22, 24, 27, 68, 98, 138, 172, 215, 238, 320, 368, 371, 372, 374, 377, 380, 386, 391, 392, 393, 396, 406, 415, 416, 417, 420, 430, 439, 442, 445, 446, 448, 450, 453, 459, 461, 468, 469, 471, 472, 497, 500, 520, 540], "summary": {"covered_lines": 51, "num_statements": 78, "percent_covered": 65.38461538461539, "percent_covered_display": "65", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [387, 401, 413, 425, 437, 474, 476, 479, 485, 487, 494, 495, 510, 511, 513, 516, 517, 530, 531, 533, 536, 537, 550, 551, 553, 556, 557], "excluded_lines": []}}}, "src/adversary_mcp_server/database/health_checks.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 22, 25, 26, 28, 29, 31, 37, 39, 51, 52, 54, 59, 64, 69, 74, 79, 84, 86, 89, 99, 101, 103, 106, 121, 122, 133, 144, 145, 156, 162, 168, 178, 192, 194, 196, 197, 199, 201, 202, 203, 205, 216, 217, 219, 230, 236, 242, 248, 256, 257, 277, 292, 294, 296, 298, 300, 310, 321, 331, 342, 349, 350, 356, 376, 382, 384, 386, 387, 389, 391, 410, 413, 419, 420, 434, 436, 442, 444, 464, 471, 473, 475, 476, 478, 480, 482, 502, 503, 535, 547, 554, 556, 558, 559, 561, 563, 564, 570, 581, 582, 588, 599, 601, 610, 630, 637, 639, 640, 641, 643, 644, 645, 646, 647, 648, 649, 653, 654, 655, 656, 659, 660, 661, 664, 669, 670, 671, 675, 676, 681, 682, 685, 690], "summary": {"covered_lines": 140, "num_statements": 185, "percent_covered": 75.67567567567568, "percent_covered_display": "76", "missing_lines": 45, "excluded_lines": 0}, "missing_lines": [91, 92, 93, 94, 95, 96, 97, 169, 206, 220, 258, 267, 268, 311, 332, 357, 366, 367, 424, 445, 454, 455, 504, 505, 507, 514, 515, 525, 526, 537, 538, 571, 589, 611, 620, 621, 650, 651, 665, 666, 700, 701, 703, 706, 707], "excluded_lines": [], "functions": {"DatabaseHealthChecker.__init__": {"executed_lines": [29], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseHealthChecker.run_comprehensive_health_check": {"executed_lines": [37, 39, 51, 52, 54, 59, 64, 69, 74, 79, 84, 86, 89], "summary": {"covered_lines": 13, "num_statements": 20, "percent_covered": 65.0, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [91, 92, 93, 94, 95, 96, 97], "excluded_lines": []}, "DatabaseHealthChecker._check_data_consistency": {"executed_lines": [101, 103, 106, 121, 122, 133, 144, 145, 156, 162, 168, 178], "summary": {"covered_lines": 12, "num_statements": 13, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [169], "excluded_lines": []}, "DatabaseHealthChecker._check_database_performance": {"executed_lines": [194, 196, 197, 199, 201, 202, 203, 205, 216, 217, 219, 230, 236, 242, 248, 256, 257, 277], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [206, 220, 258, 267, 268], "excluded_lines": []}, "DatabaseHealthChecker._check_table_integrity": {"executed_lines": [294, 296, 298, 300, 310, 321, 331, 342, 349, 350, 356, 376], "summary": {"covered_lines": 12, "num_statements": 17, "percent_covered": 70.58823529411765, "percent_covered_display": "71", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [311, 332, 357, 366, 367], "excluded_lines": []}, "DatabaseHealthChecker._check_data_volume": {"executed_lines": [384, 386, 387, 389, 391, 410, 413, 419, 420, 434, 436, 442, 444, 464], "summary": {"covered_lines": 14, "num_statements": 18, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [424, 445, 454, 455], "excluded_lines": []}, "DatabaseHealthChecker._check_cache_health": {"executed_lines": [473, 475, 476, 478, 480, 482, 502, 503, 535, 547], "summary": {"covered_lines": 10, "num_statements": 19, "percent_covered": 52.63157894736842, "percent_covered_display": "53", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [504, 505, 507, 514, 515, 525, 526, 537, 538], "excluded_lines": []}, "DatabaseHealthChecker._check_orphaned_records": {"executed_lines": [556, 558, 559, 561, 563, 564, 570, 581, 582, 588, 599, 601, 610, 630], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [571, 589, 611, 620, 621], "excluded_lines": []}, "DatabaseHealthChecker._calculate_overall_health": {"executed_lines": [639, 640, 641, 643, 644, 645, 646, 647, 648, 649, 653, 654, 655, 656, 659, 660, 661, 664, 669, 670, 671, 675, 676, 681, 682, 685], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [650, 651, 665, 666], "excluded_lines": []}, "run_health_check": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [700, 701, 703, 706, 707], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 22, 25, 26, 28, 31, 99, 192, 292, 382, 471, 554, 637, 690], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DatabaseHealthChecker": {"executed_lines": [29, 37, 39, 51, 52, 54, 59, 64, 69, 74, 79, 84, 86, 89, 101, 103, 106, 121, 122, 133, 144, 145, 156, 162, 168, 178, 194, 196, 197, 199, 201, 202, 203, 205, 216, 217, 219, 230, 236, 242, 248, 256, 257, 277, 294, 296, 298, 300, 310, 321, 331, 342, 349, 350, 356, 376, 384, 386, 387, 389, 391, 410, 413, 419, 420, 434, 436, 442, 444, 464, 473, 475, 476, 478, 480, 482, 502, 503, 535, 547, 556, 558, 559, 561, 563, 564, 570, 581, 582, 588, 599, 601, 610, 630, 639, 640, 641, 643, 644, 645, 646, 647, 648, 649, 653, 654, 655, 656, 659, 660, 661, 664, 669, 670, 671, 675, 676, 681, 682, 685], "summary": {"covered_lines": 120, "num_statements": 160, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 40, "excluded_lines": 0}, "missing_lines": [91, 92, 93, 94, 95, 96, 97, 169, 206, 220, 258, 267, 268, 311, 332, 357, 366, 367, 424, 445, 454, 455, 504, 505, 507, 514, 515, 525, 526, 537, 538, 571, 589, 611, 620, 621, 650, 651, 665, 666], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 12, 22, 25, 26, 28, 31, 99, 192, 292, 382, 471, 554, 637, 690], "summary": {"covered_lines": 20, "num_statements": 25, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [700, 701, 703, 706, 707], "excluded_lines": []}}}, "src/adversary_mcp_server/database/migrations.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 19, 22, 23, 25, 26, 28, 34, 36, 37, 39, 42, 45, 48, 50, 60, 63, 65, 66, 67, 68, 74, 76, 80, 98, 99, 100, 102, 104, 107, 108, 109, 112, 113, 115, 122, 124, 129, 152, 153, 154, 156, 158, 161, 162, 163, 166, 167, 169, 176, 178, 181, 193, 194, 195, 197, 199, 202, 203, 204, 207, 208, 210, 217, 223, 225, 226, 228, 231, 234, 236, 242, 259, 261, 276, 290, 296, 300, 306, 313, 315, 326, 340, 346, 348, 349, 350, 358, 364, 365, 366, 367, 368, 371, 373, 377, 380, 391, 397, 400, 402, 403, 404, 413, 418, 419, 433, 438, 439, 452, 457, 458, 459, 462, 469, 472, 474, 480, 483, 495, 517, 537, 557], "summary": {"covered_lines": 128, "num_statements": 166, "percent_covered": 77.10843373493977, "percent_covered_display": "77", "missing_lines": 38, "excluded_lines": 0}, "missing_lines": [251, 252, 253, 382, 383, 384, 385, 420, 423, 430, 440, 443, 449, 485, 486, 487, 488, 504, 507, 508, 510, 513, 514, 527, 528, 530, 533, 534, 547, 548, 550, 553, 554, 567, 568, 570, 573, 574], "excluded_lines": [], "functions": {"DataMigrationManager.__init__": {"executed_lines": [26], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager.fix_summary_field_inconsistencies": {"executed_lines": [34, 36, 37, 39, 42, 45, 48, 50, 60, 63, 65, 66, 67, 68], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager._fix_mcp_tool_findings_count": {"executed_lines": [76, 80, 98, 99, 100, 102, 104, 107, 108, 109, 112, 113, 115], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager._fix_cli_command_findings_count": {"executed_lines": [124, 129, 152, 153, 154, 156, 158, 161, 162, 163, 166, 167, 169], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager._fix_scan_engine_threats_found": {"executed_lines": [178, 181, 193, 194, 195, 197, 199, 202, 203, 204, 207, 208, 210], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager.validate_data_consistency": {"executed_lines": [223, 225, 226, 228, 231, 234, 236, 242], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [251, 252, 253], "excluded_lines": []}, "DataMigrationManager._validate_mcp_tool_consistency": {"executed_lines": [261, 276], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager._validate_cli_command_consistency": {"executed_lines": [296, 300, 306], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager._validate_scan_engine_consistency": {"executed_lines": [315, 326], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DataMigrationManager.cleanup_orphaned_records": {"executed_lines": [346, 348, 349, 350, 358, 364, 365, 366, 367, 368, 371, 373, 377, 380], "summary": {"covered_lines": 14, "num_statements": 18, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [382, 383, 384, 385], "excluded_lines": []}, "DataMigrationManager.mark_stale_executions_as_failed": {"executed_lines": [397, 400, 402, 403, 404, 413, 418, 419, 433, 438, 439, 452, 457, 458, 459, 462, 469, 472, 474, 480, 483], "summary": {"covered_lines": 21, "num_statements": 31, "percent_covered": 67.74193548387096, "percent_covered_display": "68", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [420, 423, 430, 440, 443, 449, 485, 486, 487, 488], "excluded_lines": []}, "run_data_migration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [504, 507, 508, 510, 513, 514], "excluded_lines": []}, "validate_data_consistency": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [527, 528, 530, 533, 534], "excluded_lines": []}, "cleanup_orphaned_records": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [547, 548, 550, 553, 554], "excluded_lines": []}, "mark_stale_executions_as_failed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [567, 568, 570, 573, 574], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 19, 22, 23, 25, 28, 74, 122, 176, 217, 259, 290, 313, 340, 391, 495, 517, 537, 557], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DataMigrationManager": {"executed_lines": [26, 34, 36, 37, 39, 42, 45, 48, 50, 60, 63, 65, 66, 67, 68, 76, 80, 98, 99, 100, 102, 104, 107, 108, 109, 112, 113, 115, 124, 129, 152, 153, 154, 156, 158, 161, 162, 163, 166, 167, 169, 178, 181, 193, 194, 195, 197, 199, 202, 203, 204, 207, 208, 210, 223, 225, 226, 228, 231, 234, 236, 242, 261, 276, 296, 300, 306, 315, 326, 346, 348, 349, 350, 358, 364, 365, 366, 367, 368, 371, 373, 377, 380, 397, 400, 402, 403, 404, 413, 418, 419, 433, 438, 439, 452, 457, 458, 459, 462, 469, 472, 474, 480, 483], "summary": {"covered_lines": 104, "num_statements": 121, "percent_covered": 85.9504132231405, "percent_covered_display": "86", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [251, 252, 253, 382, 383, 384, 385, 420, 423, 430, 440, 443, 449, 485, 486, 487, 488], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 19, 22, 23, 25, 28, 74, 122, 176, 217, 259, 290, 313, 340, 391, 495, 517, 537, 557], "summary": {"covered_lines": 24, "num_statements": 45, "percent_covered": 53.333333333333336, "percent_covered_display": "53", "missing_lines": 21, "excluded_lines": 0}, "missing_lines": [504, 507, 508, 510, 513, 514, 527, 528, 530, 533, 534, 547, 548, 550, 553, 554, 567, 568, 570, 573, 574], "excluded_lines": []}}}, "src/adversary_mcp_server/database/models.py": {"executed_lines": [1, 3, 4, 5, 7, 19, 20, 23, 24, 26, 29, 30, 32, 34, 35, 36, 37, 39, 40, 41, 42, 48, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 66, 71, 75, 76, 78, 80, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 100, 104, 105, 107, 109, 110, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 131, 135, 136, 138, 140, 141, 144, 147, 148, 149, 150, 151, 152, 155, 156, 158, 163, 169, 170, 172, 174, 175, 176, 179, 182, 183, 184, 185, 188, 189, 190, 191, 192, 195, 196, 197, 198, 201, 202, 203, 205, 206, 207, 208, 209, 211, 217, 221, 222, 224, 226, 227, 230, 233, 234, 235, 238, 241, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 258, 259, 260, 261, 263, 264, 267, 269, 275, 279, 280, 282, 284, 285, 288, 289, 290, 291, 294, 295, 298, 299, 300, 303, 304, 305, 307, 309, 311, 315, 316, 318, 320, 321, 324, 325, 326, 329, 332, 338, 345, 346, 348, 352, 353, 356, 368, 373, 376, 377, 379, 381, 383, 385, 387], "summary": {"covered_lines": 180, "num_statements": 188, "percent_covered": 95.74468085106383, "percent_covered_display": "96", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [72, 101, 132, 164, 218, 276, 312, 339], "excluded_lines": [], "functions": {"JSONType.process_bind_param": {"executed_lines": [35, 36, 37], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JSONType.process_result_value": {"executed_lines": [40, 41, 42], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheEntry.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [72], "excluded_lines": []}, "MCPToolExecution.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [101], "excluded_lines": []}, "CLICommandExecution.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [132], "excluded_lines": []}, "CacheOperationMetric.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [164], "excluded_lines": []}, "ScanEngineExecution.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [218], "excluded_lines": []}, "ThreatFinding.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [276], "excluded_lines": []}, "SystemHealth.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [312], "excluded_lines": []}, "LLMAnalysisSession.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [339], "excluded_lines": []}, "AdversaryDatabase.__init__": {"executed_lines": [352, 353, 356, 368, 373, 376, 377, 379], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdversaryDatabase.get_session": {"executed_lines": [383], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdversaryDatabase.close": {"executed_lines": [387], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 19, 20, 23, 24, 26, 29, 30, 32, 34, 39, 48, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 66, 71, 75, 76, 78, 80, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 100, 104, 105, 107, 109, 110, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 131, 135, 136, 138, 140, 141, 144, 147, 148, 149, 150, 151, 152, 155, 156, 158, 163, 169, 170, 172, 174, 175, 176, 179, 182, 183, 184, 185, 188, 189, 190, 191, 192, 195, 196, 197, 198, 201, 202, 203, 205, 206, 207, 208, 209, 211, 217, 221, 222, 224, 226, 227, 230, 233, 234, 235, 238, 241, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 258, 259, 260, 261, 263, 264, 267, 269, 275, 279, 280, 282, 284, 285, 288, 289, 290, 291, 294, 295, 298, 299, 300, 303, 304, 305, 307, 309, 311, 315, 316, 318, 320, 321, 324, 325, 326, 329, 332, 338, 345, 346, 348, 381, 385], "summary": {"covered_lines": 164, "num_statements": 164, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Base": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "JSONType": {"executed_lines": [35, 36, 37, 40, 41, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CacheEntry": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [72], "excluded_lines": []}, "MCPToolExecution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [101], "excluded_lines": []}, "CLICommandExecution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [132], "excluded_lines": []}, "CacheOperationMetric": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [164], "excluded_lines": []}, "ScanEngineExecution": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [218], "excluded_lines": []}, "ThreatFinding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [276], "excluded_lines": []}, "SystemHealth": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [312], "excluded_lines": []}, "LLMAnalysisSession": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [339], "excluded_lines": []}, "AdversaryDatabase": {"executed_lines": [352, 353, 356, 368, 373, 376, 377, 379, 383, 387], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 19, 20, 23, 24, 26, 29, 30, 32, 34, 39, 48, 49, 51, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 66, 71, 75, 76, 78, 80, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 95, 100, 104, 105, 107, 109, 110, 113, 116, 117, 118, 119, 120, 121, 122, 123, 124, 126, 131, 135, 136, 138, 140, 141, 144, 147, 148, 149, 150, 151, 152, 155, 156, 158, 163, 169, 170, 172, 174, 175, 176, 179, 182, 183, 184, 185, 188, 189, 190, 191, 192, 195, 196, 197, 198, 201, 202, 203, 205, 206, 207, 208, 209, 211, 217, 221, 222, 224, 226, 227, 230, 233, 234, 235, 238, 241, 244, 245, 246, 247, 248, 249, 252, 253, 254, 255, 258, 259, 260, 261, 263, 264, 267, 269, 275, 279, 280, 282, 284, 285, 288, 289, 290, 291, 294, 295, 298, 299, 300, 303, 304, 305, 307, 309, 311, 315, 316, 318, 320, 321, 324, 325, 326, 329, 332, 338, 345, 346, 348, 381, 385], "summary": {"covered_lines": 164, "num_statements": 164, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/__init__.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/aggregation/__init__.py": {"executed_lines": [1, 7, 9], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 7, 9], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 7, 9], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/aggregation/threat_aggregator.py": {"executed_lines": [1, 7, 8, 10, 13, 14, 28, 34, 35, 41, 60, 61, 63, 69, 70, 73, 74, 77, 78, 81, 82, 83, 86, 89, 90, 91, 93, 98, 100, 112, 114, 115, 116, 117, 119, 121, 138, 139, 140, 144, 146, 148, 164, 165, 166, 169, 171, 177, 178, 181, 182, 185, 187, 189, 191, 200, 209, 215, 217, 223, 224, 226, 227, 228, 230, 241, 242, 243, 245, 247, 248, 251, 252, 255, 256, 257, 258, 259, 260, 261, 263, 265], "summary": {"covered_lines": 80, "num_statements": 80, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ThreatAggregator.__init__": {"executed_lines": [34, 35], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.aggregate_threats": {"executed_lines": [60, 61, 63, 69, 70, 73, 74, 77, 78, 81, 82, 83, 86, 89, 90, 91, 93, 98], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator._merge_threats": {"executed_lines": [112, 114, 115, 116, 117, 119], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator._is_duplicate": {"executed_lines": [138, 139, 140, 144, 146], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator._are_threats_similar": {"executed_lines": [164, 165, 166, 169, 171, 177, 178, 181, 182, 185, 187, 189], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator._sort_threats": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.get_aggregation_stats": {"executed_lines": [215], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.configure_proximity_threshold": {"executed_lines": [223, 224, 226, 227, 228], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.analyze_threat_distribution": {"executed_lines": [241, 242, 243, 245, 247, 248, 251, 252, 255, 256, 257, 258, 259, 260, 261, 263, 265], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 13, 14, 28, 41, 100, 121, 148, 191, 209, 217, 230], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ThreatAggregator": {"executed_lines": [34, 35, 60, 61, 63, 69, 70, 73, 74, 77, 78, 81, 82, 83, 86, 89, 90, 91, 93, 98, 112, 114, 115, 116, 117, 119, 138, 139, 140, 144, 146, 164, 165, 166, 169, 171, 177, 178, 181, 182, 185, 187, 189, 200, 215, 223, 224, 226, 227, 228, 241, 242, 243, 245, 247, 248, 251, 252, 255, 256, 257, 258, 259, 260, 261, 263, 265], "summary": {"covered_lines": 67, "num_statements": 67, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 10, 13, 14, 28, 41, 100, 121, 148, 191, 209, 217, 230], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/entities/__init__.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/entities/scan_request.py": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 20, 21, 22, 23, 24, 26, 28, 30, 31, 42, 46, 47, 48, 50, 58, 59, 70, 74, 75, 76, 78, 86, 87, 99, 103, 104, 105, 107, 115, 116, 130, 135, 146, 147, 150, 158, 161, 162, 165, 167, 170, 172, 174, 175, 176, 178, 180, 185, 187, 189, 190, 191, 192, 193, 194, 196, 198, 200, 202, 204, 206, 208, 209, 210, 211, 212, 221, 223, 238, 264, 266, 270, 282, 290, 292, 303, 304, 305, 306, 307, 315, 316, 317, 319, 320, 326, 328, 330, 332], "summary": {"covered_lines": 95, "num_statements": 117, "percent_covered": 81.19658119658119, "percent_covered_display": "81", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [148, 195, 213, 214, 217, 219, 246, 267, 293, 296, 297, 298, 299, 301, 308, 309, 311, 312, 313, 318, 322, 324], "excluded_lines": [], "functions": {"ScanRequest.__post_init__": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.for_file_scan": {"executed_lines": [42, 46, 47, 48, 50], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.for_directory_scan": {"executed_lines": [70, 74, 75, 76, 78], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.for_code_scan": {"executed_lines": [99, 103, 104, 105, 107], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.for_diff_scan": {"executed_lines": [130, 135, 146, 147, 150], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [148], "excluded_lines": []}, "ScanRequest._validate_request": {"executed_lines": [161, 162, 165, 167, 170], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.get_effective_severity_threshold": {"executed_lines": [174, 175, 176], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.is_scanner_enabled": {"executed_lines": [180, 185], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.get_enabled_scanners": {"executed_lines": [189, 190, 191, 192, 193, 194, 196], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [195], "excluded_lines": []}, "ScanRequest.should_use_hybrid_scanning": {"executed_lines": [200], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.requires_file_system_access": {"executed_lines": [204], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.get_scan_scope_description": {"executed_lines": [208, 209, 210, 211, 212], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [213, 214, 217, 219], "excluded_lines": []}, "ScanRequest.get_configuration_summary": {"executed_lines": [223], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.with_updated_configuration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [246], "excluded_lines": []}, "ScanRequest.create_child_request_for_file": {"executed_lines": [266, 270, 282], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [267], "excluded_lines": []}, "ScanRequest.estimate_scan_complexity": {"executed_lines": [292, 303, 304, 305, 306, 307, 315, 316, 317, 319, 320], "summary": {"covered_lines": 11, "num_statements": 25, "percent_covered": 44.0, "percent_covered_display": "44", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [293, 296, 297, 298, 299, 301, 308, 309, 311, 312, 313, 318, 322, 324], "excluded_lines": []}, "ScanRequest.is_comprehensive_scan": {"executed_lines": [328], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanRequest.requires_network_access": {"executed_lines": [332], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 20, 21, 22, 23, 24, 26, 30, 31, 58, 59, 86, 87, 115, 116, 158, 172, 178, 187, 198, 202, 206, 221, 238, 264, 290, 326, 330], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanRequest": {"executed_lines": [28, 42, 46, 47, 48, 50, 70, 74, 75, 76, 78, 99, 103, 104, 105, 107, 130, 135, 146, 147, 150, 161, 162, 165, 167, 170, 174, 175, 176, 180, 185, 189, 190, 191, 192, 193, 194, 196, 200, 204, 208, 209, 210, 211, 212, 223, 266, 270, 282, 292, 303, 304, 305, 306, 307, 315, 316, 317, 319, 320, 328, 332], "summary": {"covered_lines": 62, "num_statements": 84, "percent_covered": 73.80952380952381, "percent_covered_display": "74", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [148, 195, 213, 214, 217, 219, 246, 267, 293, 296, 297, 298, 299, 301, 308, 309, 311, 312, 313, 318, 322, 324], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 10, 11, 12, 20, 21, 22, 23, 24, 26, 30, 31, 58, 59, 86, 87, 115, 116, 158, 172, 178, 187, 198, 202, 206, 221, 238, 264, 290, 326, 330], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/entities/scan_result.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, 31, 32, 37, 42, 43, 47, 53, 54, 55, 63, 64, 65, 66, 67, 70, 71, 74, 76, 77, 79, 86, 87, 95, 96, 98, 105, 107, 108, 110, 118, 120, 121, 123, 124, 126, 134, 150, 166, 180, 182, 186, 194, 196, 197, 199, 200, 203, 204, 207, 210, 217, 222, 233, 235, 237, 238, 240, 241, 242, 243, 244, 246, 248, 250, 252, 253, 261, 262, 264, 266, 268, 270, 272, 273, 274, 275, 277, 280, 287, 288, 290, 291, 293, 295, 297, 299, 301, 303, 311, 322, 324, 325, 328, 329, 334, 335, 337, 339, 341, 342, 343, 345, 346, 347, 349, 351, 354, 356, 360, 364, 366, 372, 377, 380, 381, 382, 383, 384, 389, 397, 399, 403, 406, 407, 409, 410, 411, 412, 413, 416, 417, 419, 427, 450, 466, 468, 470, 472, 474, 476, 480, 488, 490, 491, 492], "summary": {"covered_lines": 163, "num_statements": 194, "percent_covered": 84.02061855670104, "percent_covered_display": "84", "missing_lines": 31, "excluded_lines": 0}, "missing_lines": [49, 50, 136, 142, 152, 158, 168, 172, 211, 212, 281, 282, 283, 284, 305, 313, 314, 315, 316, 319, 320, 348, 350, 352, 358, 362, 387, 429, 431, 452, 454], "excluded_lines": [], "functions": {"ScanStatistics.add_threat": {"executed_lines": [28, 31, 32, 37, 42, 43], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanStatistics.mark_false_positive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [49, 50], "excluded_lines": []}, "ScanResult.create_empty": {"executed_lines": [79], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.create_from_threats": {"executed_lines": [95, 96, 98], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.add_threat": {"executed_lines": [107, 108, 110], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.add_threats": {"executed_lines": [120, 121, 123, 124, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.filter_by_severity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [136, 142], "excluded_lines": []}, "ScanResult.filter_by_confidence": {"executed_lines": [476, 480], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.exclude_false_positives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [168, 172], "excluded_lines": []}, "ScanResult.filter_actionable_threats": {"executed_lines": [182, 186], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_statistics": {"executed_lines": [196, 197, 199, 200, 203, 204, 207, 210, 217, 222, 233], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [211, 212], "excluded_lines": []}, "ScanResult.get_threats_by_file": {"executed_lines": [237, 238, 240, 241, 242, 243, 244, 246, 248], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_high_priority_threats": {"executed_lines": [252, 253, 261, 262, 264], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_affected_files": {"executed_lines": [268], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_threat_categories": {"executed_lines": [272, 273, 274, 275], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_active_scanners": {"executed_lines": [280, 287, 288, 290, 291, 293], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [281, 282, 283, 284], "excluded_lines": []}, "ScanResult.has_critical_threats": {"executed_lines": [297], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.is_empty": {"executed_lines": [301], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_most_common_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [313, 314, 315, 316, 319, 320], "excluded_lines": []}, "ScanResult.get_overall_risk_score": {"executed_lines": [324, 325, 328, 329, 334, 335, 337], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_security_posture": {"executed_lines": [341, 342, 343, 345, 346, 347, 349, 351, 354], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [348, 350, 352], "excluded_lines": []}, "ScanResult.has_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [358], "excluded_lines": []}, "ScanResult.has_actionable_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [362], "excluded_lines": []}, "ScanResult.needs_immediate_attention": {"executed_lines": [366], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.apply_validation_results": {"executed_lines": [377, 380, 381, 382, 383, 384, 389], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [387], "excluded_lines": []}, "ScanResult.merge_with": {"executed_lines": [399, 403, 406, 407, 409, 410, 411, 412, 413, 416, 417, 419], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.to_summary_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [429, 431], "excluded_lines": []}, "ScanResult.to_detailed_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [452, 454], "excluded_lines": []}, "ScanResult.get_threats_by_severity": {"executed_lines": [468], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.get_threats_by_category": {"executed_lines": [472], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResult.clear_caches": {"executed_lines": [490, 491, 492], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 26, 47, 53, 54, 55, 63, 64, 65, 66, 67, 70, 71, 74, 76, 77, 86, 87, 105, 118, 134, 150, 166, 180, 194, 235, 250, 266, 270, 277, 295, 299, 303, 311, 322, 339, 356, 360, 364, 372, 397, 427, 450, 466, 470, 474, 488], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanStatistics": {"executed_lines": [28, 31, 32, 37, 42, 43], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [49, 50], "excluded_lines": []}, "ScanResult": {"executed_lines": [79, 95, 96, 98, 107, 108, 110, 120, 121, 123, 124, 126, 182, 186, 196, 197, 199, 200, 203, 204, 207, 210, 217, 222, 233, 237, 238, 240, 241, 242, 243, 244, 246, 248, 252, 253, 261, 262, 264, 268, 272, 273, 274, 275, 280, 287, 288, 290, 291, 293, 297, 301, 324, 325, 328, 329, 334, 335, 337, 341, 342, 343, 345, 346, 347, 349, 351, 354, 366, 377, 380, 381, 382, 383, 384, 389, 399, 403, 406, 407, 409, 410, 411, 412, 413, 416, 417, 419, 468, 472, 476, 480, 490, 491, 492], "summary": {"covered_lines": 95, "num_statements": 124, "percent_covered": 76.61290322580645, "percent_covered_display": "77", "missing_lines": 29, "excluded_lines": 0}, "missing_lines": [136, 142, 152, 158, 168, 172, 211, 212, 281, 282, 283, 284, 305, 313, 314, 315, 316, 319, 320, 348, 350, 352, 358, 362, 387, 429, 431, 452, 454], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 26, 47, 53, 54, 55, 63, 64, 65, 66, 67, 70, 71, 74, 76, 77, 86, 87, 105, 118, 134, 150, 166, 180, 194, 235, 250, 266, 270, 277, 295, 299, 303, 311, 322, 339, 356, 360, 364, 372, 397, 427, 450, 466, 470, 474, 488], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/entities/threat_match.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 56, 58, 60, 61, 75, 90, 91, 105, 119, 120, 145, 147, 150, 153, 156, 157, 159, 160, 163, 165, 166, 167, 168, 173, 183, 188, 190, 192, 193, 197, 204, 206, 208, 210, 211, 212, 214, 218, 220, 224, 225, 227, 228, 230, 232, 235, 238, 241, 247, 250, 252, 254, 256, 258, 260, 262, 263, 264, 265, 267, 269, 272, 293, 295, 297, 319, 351, 353, 356, 357, 359, 381, 383, 387, 391, 392, 395, 396, 398, 400, 404, 407, 410, 413, 416, 423, 424, 425, 427, 451, 453, 467, 469, 471, 473, 474, 497, 499], "summary": {"covered_lines": 128, "num_statements": 145, "percent_covered": 88.27586206896552, "percent_covered_display": "88", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [132, 148, 151, 154, 169, 195, 199, 200, 202, 259, 261, 324, 328, 354, 384, 388, 401], "excluded_lines": [], "functions": {"ThreatMatch.__post_init__": {"executed_lines": [58], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.create_semgrep_threat": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.create_llm_threat": {"executed_lines": [105], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.create_rules_threat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [132], "excluded_lines": []}, "ThreatMatch._validate_threat": {"executed_lines": [147, 150, 153, 156, 157, 159, 160, 163, 165, 166, 167, 168], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [148, 151, 154, 169], "excluded_lines": []}, "ThreatMatch.get_fingerprint": {"executed_lines": [183, 188], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.get_display_location": {"executed_lines": [192, 193], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [195], "excluded_lines": []}, "ThreatMatch.get_full_location": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [199, 200, 202], "excluded_lines": []}, "ThreatMatch.is_high_severity": {"executed_lines": [206], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.is_confident": {"executed_lines": [210, 211, 212], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.is_actionable": {"executed_lines": [218], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.should_be_reported": {"executed_lines": [224, 225, 227, 228, 230], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.get_risk_score": {"executed_lines": [235, 238, 241, 247, 250, 252], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.get_priority_category": {"executed_lines": [256, 258, 260, 262, 263, 264, 265, 267], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [259, 261], "excluded_lines": []}, "ThreatMatch.mark_as_false_positive": {"executed_lines": [272, 293], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.update_confidence": {"executed_lines": [297], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.enhance_with_validation_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [324, 328], "excluded_lines": []}, "ThreatMatch.add_exploit_example": {"executed_lines": [353, 356, 357, 359], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [354], "excluded_lines": []}, "ThreatMatch.is_similar_to": {"executed_lines": [383, 387, 391, 392, 395, 396], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [384, 388], "excluded_lines": []}, "ThreatMatch.merge_with": {"executed_lines": [400, 404, 407, 410, 413, 416, 423, 424, 425, 427], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [401], "excluded_lines": []}, "ThreatMatch.to_summary_dict": {"executed_lines": [453], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.mark_false_positive": {"executed_lines": [469], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.add_metadata": {"executed_lines": [473, 474], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch.to_detailed_dict": {"executed_lines": [499], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 56, 60, 61, 90, 91, 119, 120, 145, 173, 190, 197, 204, 208, 214, 220, 232, 254, 269, 295, 319, 351, 381, 398, 451, 467, 471, 497], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ThreatMatch": {"executed_lines": [58, 75, 105, 147, 150, 153, 156, 157, 159, 160, 163, 165, 166, 167, 168, 183, 188, 192, 193, 206, 210, 211, 212, 218, 224, 225, 227, 228, 230, 235, 238, 241, 247, 250, 252, 256, 258, 260, 262, 263, 264, 265, 267, 272, 293, 297, 353, 356, 357, 359, 383, 387, 391, 392, 395, 396, 400, 404, 407, 410, 413, 416, 423, 424, 425, 427, 453, 469, 473, 474, 499], "summary": {"covered_lines": 71, "num_statements": 88, "percent_covered": 80.68181818181819, "percent_covered_display": "81", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [132, 148, 151, 154, 169, 195, 199, 200, 202, 259, 261, 324, 328, 354, 384, 388, 401], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 10, 11, 14, 15, 16, 25, 26, 27, 28, 29, 32, 33, 34, 37, 38, 41, 42, 43, 44, 45, 48, 49, 50, 51, 54, 56, 60, 61, 90, 91, 119, 120, 145, 173, 190, 197, 204, 208, 214, 220, 232, 254, 269, 295, 319, 351, 381, 398, 451, 467, 471, 497], "summary": {"covered_lines": 57, "num_statements": 57, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/exceptions.py": {"executed_lines": [1, 4, 5, 7, 10, 11, 13, 16, 17, 19, 22, 23, 25, 28, 29, 31, 34, 35, 37], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 4, 5, 7, 10, 11, 13, 16, 17, 19, 22, 23, 25, 28, 29, 31, 34, 35, 37], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DomainError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AggregationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SecurityError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfigurationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 4, 5, 7, 10, 11, 13, 16, 17, 19, 22, 23, 25, 28, 29, 31, 34, 35, 37], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/interfaces.py": {"executed_lines": [1, 3, 4, 6, 14, 22, 23, 24, 32, 44, 59, 63, 68, 69, 70, 77, 89, 107, 111, 116, 117, 118, 126, 143, 157, 162, 163, 164, 171, 186, 195, 204, 214, 215, 223, 224, 236, 237, 249, 250, 262, 263, 276, 277, 278, 285, 297, 309, 321, 333, 334, 335, 336, 339], "summary": {"covered_lines": 47, "num_statements": 56, "percent_covered": 83.92857142857143, "percent_covered_display": "84", "missing_lines": 9, "excluded_lines": 44}, "missing_lines": [15, 16, 17, 18, 19, 234, 247, 260, 273], "excluded_lines": [42, 43, 57, 58, 61, 62, 65, 66, 67, 87, 88, 105, 106, 109, 110, 113, 114, 115, 141, 142, 155, 156, 159, 160, 161, 184, 185, 193, 194, 202, 203, 211, 212, 213, 295, 296, 307, 308, 319, 320, 328, 329, 330, 331], "functions": {"IScanStrategy.can_scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [42]}, "IScanStrategy.execute_scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [57]}, "IScanStrategy.get_strategy_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [61]}, "IScanStrategy.get_supported_languages": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [65]}, "IValidationStrategy.can_validate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [87]}, "IValidationStrategy.validate_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [105]}, "IValidationStrategy.get_strategy_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [109]}, "IValidationStrategy.get_confidence_threshold": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [113]}, "IThreatAggregator.aggregate_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [141]}, "IThreatAggregator.merge_similar_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [155]}, "IThreatAggregator.get_aggregation_strategy_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [159]}, "IScanOrchestrator.execute_scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [184]}, "IScanOrchestrator.register_scan_strategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [193]}, "IScanOrchestrator.register_validation_strategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [202]}, "IScanOrchestrator.set_threat_aggregator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [211]}, "IValidationService.validate_scan_request": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [234], "excluded_lines": []}, "IValidationService.validate_threat_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [247], "excluded_lines": []}, "IValidationService.validate_scan_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [260], "excluded_lines": []}, "IValidationService.enforce_security_constraints": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [273], "excluded_lines": []}, "IFalsePositiveRepository.get_false_positive_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [295]}, "IFalsePositiveRepository.save_false_positive_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [307]}, "IFalsePositiveRepository.remove_false_positive_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [319]}, "IFalsePositiveRepository.list_false_positives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 1}, "missing_lines": [], "excluded_lines": [328]}, "": {"executed_lines": [1, 3, 4, 6, 14, 22, 23, 24, 32, 44, 59, 63, 68, 69, 70, 77, 89, 107, 111, 116, 117, 118, 126, 143, 157, 162, 163, 164, 171, 186, 195, 204, 214, 215, 223, 224, 236, 237, 249, 250, 262, 263, 276, 277, 278, 285, 297, 309, 321, 333, 334, 335, 336, 339], "summary": {"covered_lines": 47, "num_statements": 52, "percent_covered": 90.38461538461539, "percent_covered_display": "90", "missing_lines": 5, "excluded_lines": 25}, "missing_lines": [15, 16, 17, 18, 19], "excluded_lines": [43, 58, 62, 66, 67, 88, 106, 110, 114, 115, 142, 156, 160, 161, 185, 194, 203, 212, 213, 296, 308, 320, 329, 330, 331]}}, "classes": {"IScanStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [42, 57, 61, 65]}, "IValidationStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [87, 105, 109, 113]}, "IThreatAggregator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 3}, "missing_lines": [], "excluded_lines": [141, 155, 159]}, "IScanOrchestrator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [184, 193, 202, 211]}, "IValidationService": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [234, 247, 260, 273], "excluded_lines": []}, "IFalsePositiveRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 4}, "missing_lines": [], "excluded_lines": [295, 307, 319, 328]}, "": {"executed_lines": [1, 3, 4, 6, 14, 22, 23, 24, 32, 44, 59, 63, 68, 69, 70, 77, 89, 107, 111, 116, 117, 118, 126, 143, 157, 162, 163, 164, 171, 186, 195, 204, 214, 215, 223, 224, 236, 237, 249, 250, 262, 263, 276, 277, 278, 285, 297, 309, 321, 333, 334, 335, 336, 339], "summary": {"covered_lines": 47, "num_statements": 52, "percent_covered": 90.38461538461539, "percent_covered_display": "90", "missing_lines": 5, "excluded_lines": 25}, "missing_lines": [15, 16, 17, 18, 19], "excluded_lines": [43, 58, 62, 66, 67, 88, 106, 110, 114, 115, 142, 156, 160, 161, 185, 194, 203, 212, 213, 296, 308, 320, 329, 330, 331]}}}, "src/adversary_mcp_server/domain/repositories/__init__.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/repositories/scan_repository.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 20, 21, 36, 37, 52, 53, 68, 69, 84, 85, 100, 101, 116, 117, 135, 136, 151, 152, 170, 171], "summary": {"covered_lines": 26, "num_statements": 36, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [34, 50, 66, 82, 98, 114, 133, 149, 168, 184], "excluded_lines": [], "functions": {"IScanRepository.save_scan_request": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [34], "excluded_lines": []}, "IScanRepository.get_scan_request": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [50], "excluded_lines": []}, "IScanRepository.save_scan_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [66], "excluded_lines": []}, "IScanRepository.get_scan_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [82], "excluded_lines": []}, "IScanRepository.get_scan_results_by_target": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [98], "excluded_lines": []}, "IScanRepository.get_scan_results_by_requester": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [114], "excluded_lines": []}, "IScanRepository.get_scan_results_in_date_range": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [133], "excluded_lines": []}, "IScanRepository.delete_scan_data": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [149], "excluded_lines": []}, "IScanRepository.get_scan_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [168], "excluded_lines": []}, "IScanRepository.cleanup_old_scans": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [184], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 20, 21, 36, 37, 52, 53, 68, 69, 84, 85, 100, 101, 116, 117, 135, 136, 151, 152, 170, 171], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"IScanRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [34, 50, 66, 82, 98, 114, 133, 149, 168, 184], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 20, 21, 36, 37, 52, 53, 68, 69, 84, 85, 100, 101, 116, 117, 135, 136, 151, 152, 170, 171], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/repositories/threat_repository.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 20, 21, 37, 38, 53, 54, 69, 70, 85, 86, 101, 102, 120, 121, 140, 141, 156, 157, 169, 170, 188, 189, 207, 208, 230, 231, 248, 249, 264, 265, 287, 288, 290, 293, 294, 296, 299, 300, 302, 305, 306, 308], "summary": {"covered_lines": 44, "num_statements": 59, "percent_covered": 74.57627118644068, "percent_covered_display": "75", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [35, 51, 67, 83, 99, 118, 138, 154, 167, 186, 205, 228, 246, 262, 281], "excluded_lines": [], "functions": {"IThreatRepository.save_threat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [35], "excluded_lines": []}, "IThreatRepository.get_threat": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [51], "excluded_lines": []}, "IThreatRepository.get_threats_by_scan": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [67], "excluded_lines": []}, "IThreatRepository.get_threats_by_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [83], "excluded_lines": []}, "IThreatRepository.get_threats_by_rule": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [99], "excluded_lines": []}, "IThreatRepository.get_threats_by_severity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [118], "excluded_lines": []}, "IThreatRepository.mark_false_positive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [138], "excluded_lines": []}, "IThreatRepository.unmark_false_positive": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [154], "excluded_lines": []}, "IThreatRepository.get_false_positives": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [167], "excluded_lines": []}, "IThreatRepository.get_threat_by_fingerprint": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [186], "excluded_lines": []}, "IThreatRepository.get_threat_analytics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [205], "excluded_lines": []}, "IThreatRepository.get_top_threat_categories": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [228], "excluded_lines": []}, "IThreatRepository.get_threat_trends": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [246], "excluded_lines": []}, "IThreatRepository.cleanup_old_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [262], "excluded_lines": []}, "IThreatRepository.bulk_save_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [281], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 20, 21, 37, 38, 53, 54, 69, 70, 85, 86, 101, 102, 120, 121, 140, 141, 156, 157, 169, 170, 188, 189, 207, 208, 230, 231, 248, 249, 264, 265, 287, 288, 290, 293, 294, 296, 299, 300, 302, 305, 306, 308], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"IThreatRepository": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [35, 51, 67, 83, 99, 118, 138, 154, 167, 186, 205, 228, 246, 262, 281], "excluded_lines": []}, "RepositoryError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatNotFoundError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanNotFoundError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DuplicateThreatError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 11, 12, 20, 21, 37, 38, 53, 54, 69, 70, 85, 86, 101, 102, 120, 121, 140, 141, 156, 157, 169, 170, 188, 189, 207, 208, 230, 231, 248, 249, 264, 265, 287, 288, 290, 293, 294, 296, 299, 300, 302, 305, 306, 308], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/services/__init__.py": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/services/scan_orchestrator.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 20, 23, 24, 32, 33, 34, 35, 37, 39, 40, 41, 43, 45, 46, 47, 51, 53, 54, 58, 72, 74, 76, 79, 81, 86, 89, 94, 97, 98, 99, 104, 109, 112, 120, 121, 123, 124, 125, 126, 129, 134, 135, 140, 143, 147, 149, 151, 152, 154, 156, 158, 161, 163, 165, 170, 171, 172, 173, 174, 177, 178, 179, 181, 184, 190, 191, 192, 197, 198, 200, 202, 204, 208, 209, 210, 212, 213, 216, 235, 236, 238, 239, 240, 241, 242, 244, 247, 249, 253, 256, 258, 259, 260, 261, 264, 267, 277, 279, 283, 284, 286, 288, 294, 295, 300, 302, 306, 307, 310, 311, 313, 315, 316, 318, 319, 320, 322, 328, 329, 330, 334, 335, 337, 364, 371, 387, 390, 392, 394, 406, 408, 409, 410], "summary": {"covered_lines": 140, "num_statements": 182, "percent_covered": 76.92307692307692, "percent_covered_display": "77", "missing_lines": 42, "excluded_lines": 0}, "missing_lines": [82, 127, 157, 159, 193, 194, 205, 217, 219, 220, 221, 222, 224, 225, 228, 230, 231, 233, 254, 270, 271, 275, 338, 339, 342, 343, 344, 346, 348, 352, 353, 354, 357, 358, 359, 362, 367, 368, 369, 388, 411, 412], "excluded_lines": [], "functions": {"ScanOrchestrator.__init__": {"executed_lines": [33, 34, 35], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator.register_scan_strategy": {"executed_lines": [39, 40, 41], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator.register_validation_strategy": {"executed_lines": [45, 46, 47], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator.set_threat_aggregator": {"executed_lines": [53, 54], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator.execute_scan": {"executed_lines": [72, 74, 76, 79, 81, 86, 89, 94, 97, 98, 99, 104, 109, 112, 120, 121, 123, 124, 125, 126], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [82, 127], "excluded_lines": []}, "ScanOrchestrator._validate_request": {"executed_lines": [134, 135, 140, 143], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator._get_applicable_strategies": {"executed_lines": [149, 151, 152, 154, 156, 158, 161, 163], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [157, 159], "excluded_lines": []}, "ScanOrchestrator._execute_scan_strategies": {"executed_lines": [170, 184, 190, 191, 192, 197, 198, 200], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [193, 194], "excluded_lines": []}, "ScanOrchestrator._execute_scan_strategies.execute_strategy": {"executed_lines": [171, 172, 173, 174, 177, 178, 179, 181], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator._aggregate_threats": {"executed_lines": [204, 208, 209, 210, 212, 213, 216, 235, 236, 238, 239, 240, 241, 242, 244, 247], "summary": {"covered_lines": 16, "num_statements": 28, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [205, 217, 219, 220, 221, 222, 224, 225, 228, 230, 231, 233], "excluded_lines": []}, "ScanOrchestrator._apply_validation": {"executed_lines": [253, 256, 258, 259, 260, 261, 264, 267, 277], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [254, 270, 271, 275], "excluded_lines": []}, "ScanOrchestrator._apply_severity_filtering": {"executed_lines": [283, 284, 286, 288, 294, 295, 300], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator._build_scan_metadata": {"executed_lines": [306, 307, 310, 311, 313, 315, 316, 318, 319, 320, 322, 328, 329, 330, 334, 335, 337, 364, 371, 387, 390], "summary": {"covered_lines": 21, "num_statements": 39, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 18, "excluded_lines": 0}, "missing_lines": [338, 339, 342, 343, 344, 346, 348, 352, 353, 354, 357, 358, 359, 362, 367, 368, 369, 388], "excluded_lines": []}, "ScanOrchestrator.get_registered_strategies": {"executed_lines": [394], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanOrchestrator.can_execute_scan": {"executed_lines": [408, 409, 410], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [411, 412], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 20, 23, 24, 32, 37, 43, 51, 58, 129, 147, 165, 202, 249, 279, 302, 392, 406], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanOrchestrator": {"executed_lines": [33, 34, 35, 39, 40, 41, 45, 46, 47, 53, 54, 72, 74, 76, 79, 81, 86, 89, 94, 97, 98, 99, 104, 109, 112, 120, 121, 123, 124, 125, 126, 134, 135, 140, 143, 149, 151, 152, 154, 156, 158, 161, 163, 170, 171, 172, 173, 174, 177, 178, 179, 181, 184, 190, 191, 192, 197, 198, 200, 204, 208, 209, 210, 212, 213, 216, 235, 236, 238, 239, 240, 241, 242, 244, 247, 253, 256, 258, 259, 260, 261, 264, 267, 277, 283, 284, 286, 288, 294, 295, 300, 306, 307, 310, 311, 313, 315, 316, 318, 319, 320, 322, 328, 329, 330, 334, 335, 337, 364, 371, 387, 390, 394, 408, 409, 410], "summary": {"covered_lines": 116, "num_statements": 158, "percent_covered": 73.41772151898734, "percent_covered_display": "73", "missing_lines": 42, "excluded_lines": 0}, "missing_lines": [82, 127, 157, 159, 193, 194, 205, 217, 219, 220, 221, 222, 224, 225, 228, 230, 231, 233, 254, 270, 271, 275, 338, 339, 342, 343, 344, 346, 348, 352, 353, 354, 357, 358, 359, 362, 367, 368, 369, 388, 411, 412], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 20, 23, 24, 32, 37, 43, 51, 58, 129, 147, 165, 202, 249, 279, 302, 392, 406], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/services/threat_aggregator.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 14, 16, 17, 23, 24, 28, 29, 34, 35, 42, 43, 45, 46, 48, 66, 68, 72, 74, 76, 78, 81, 82, 84, 87, 89, 93, 95, 97, 98, 99, 100, 102, 104, 106, 109, 110, 112, 114, 118, 121, 122, 123, 126, 127, 128, 130, 132, 134, 135, 138, 140, 143, 144, 150, 152, 208, 209, 216, 217, 219, 223, 227, 228, 229, 231, 235, 237, 240, 242, 244, 248, 249, 250, 251, 252, 253, 256, 257, 258, 259, 261, 263, 266, 268, 270, 274, 276, 279, 281, 286, 314, 317, 318, 325, 326, 327, 329, 330, 332, 336, 340, 343, 347, 350, 352, 355, 358, 361, 362, 369, 371, 373, 375, 376, 378, 393, 394, 398, 400, 403, 407, 409, 412, 418, 450, 452, 454, 456, 462], "summary": {"covered_lines": 131, "num_statements": 178, "percent_covered": 73.59550561797752, "percent_covered_display": "74", "missing_lines": 47, "excluded_lines": 0}, "missing_lines": [21, 26, 31, 52, 53, 56, 57, 58, 60, 61, 64, 69, 107, 148, 157, 160, 163, 166, 167, 168, 171, 172, 173, 176, 224, 232, 245, 271, 282, 283, 288, 337, 395, 401, 414, 415, 416, 431, 432, 433, 435, 439, 441, 444, 446, 447, 448], "excluded_lines": [], "functions": {"BaseThreatAggregationStrategy.aggregate_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [21], "excluded_lines": []}, "BaseThreatAggregationStrategy.merge_similar_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [26], "excluded_lines": []}, "BaseThreatAggregationStrategy.get_strategy_name": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [31], "excluded_lines": []}, "ProximityBasedAggregationStrategy.__init__": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProximityBasedAggregationStrategy.get_strategy_name": {"executed_lines": [46], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProximityBasedAggregationStrategy.aggregate_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [52, 53, 56, 57, 58, 60, 61, 64], "excluded_lines": []}, "ProximityBasedAggregationStrategy.merge_similar_threats": {"executed_lines": [68, 72, 74, 76, 78, 81, 82, 84, 87], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [69], "excluded_lines": []}, "ProximityBasedAggregationStrategy._group_threats_by_file_and_rule": {"executed_lines": [93, 95, 97, 98, 99, 100, 102], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProximityBasedAggregationStrategy._merge_proximate_threats": {"executed_lines": [106, 109, 110, 112, 114, 118, 121, 122, 123, 126, 127, 128, 130], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [107], "excluded_lines": []}, "ProximityBasedAggregationStrategy._merge_threat_group": {"executed_lines": [134, 135, 138, 140, 143, 144, 150], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [148], "excluded_lines": []}, "ProximityBasedAggregationStrategy._force_merge_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [157, 160, 163, 166, 167, 168, 171, 172, 173, 176], "excluded_lines": []}, "FingerprintBasedAggregationStrategy.get_strategy_name": {"executed_lines": [217], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FingerprintBasedAggregationStrategy.aggregate_threats": {"executed_lines": [223, 227, 228, 229, 231, 235, 237, 240], "summary": {"covered_lines": 8, "num_statements": 10, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [224, 232], "excluded_lines": []}, "FingerprintBasedAggregationStrategy.merge_similar_threats": {"executed_lines": [244, 248, 249, 250, 251, 252, 253, 256, 257, 258, 259, 261, 263, 266], "summary": {"covered_lines": 14, "num_statements": 15, "percent_covered": 93.33333333333333, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [245], "excluded_lines": []}, "FingerprintBasedAggregationStrategy._merge_identical_threats": {"executed_lines": [270, 274, 276, 279, 281, 286, 314], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [271, 282, 283, 288], "excluded_lines": []}, "HybridAggregationStrategy.__init__": {"executed_lines": [326, 327], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "HybridAggregationStrategy.get_strategy_name": {"executed_lines": [330], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "HybridAggregationStrategy.aggregate_threats": {"executed_lines": [336, 340, 343, 347, 350], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [337], "excluded_lines": []}, "HybridAggregationStrategy.merge_similar_threats": {"executed_lines": [355, 358], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.__init__": {"executed_lines": [371], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.set_strategy": {"executed_lines": [375, 376], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.aggregate_threats": {"executed_lines": [393, 394, 398, 400, 403, 407, 409, 412], "summary": {"covered_lines": 8, "num_statements": 13, "percent_covered": 61.53846153846154, "percent_covered_display": "62", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [395, 401, 414, 415, 416], "excluded_lines": []}, "ThreatAggregator.merge_similar_threats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [431, 432, 433, 435, 439, 441, 444, 446, 447, 448], "excluded_lines": []}, "ThreatAggregator.get_aggregation_strategy_name": {"executed_lines": [452], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatAggregator.get_statistics": {"executed_lines": [456, 462], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 14, 16, 17, 23, 24, 28, 29, 34, 35, 42, 45, 48, 66, 89, 104, 132, 152, 208, 209, 216, 219, 242, 268, 317, 318, 325, 329, 332, 352, 361, 362, 369, 373, 378, 418, 450, 454], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BaseThreatAggregationStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [21, 26, 31], "excluded_lines": []}, "ProximityBasedAggregationStrategy": {"executed_lines": [43, 46, 68, 72, 74, 76, 78, 81, 82, 84, 87, 93, 95, 97, 98, 99, 100, 102, 106, 109, 110, 112, 114, 118, 121, 122, 123, 126, 127, 128, 130, 134, 135, 138, 140, 143, 144, 150], "summary": {"covered_lines": 38, "num_statements": 59, "percent_covered": 64.40677966101696, "percent_covered_display": "64", "missing_lines": 21, "excluded_lines": 0}, "missing_lines": [52, 53, 56, 57, 58, 60, 61, 64, 69, 107, 148, 157, 160, 163, 166, 167, 168, 171, 172, 173, 176], "excluded_lines": []}, "FingerprintBasedAggregationStrategy": {"executed_lines": [217, 223, 227, 228, 229, 231, 235, 237, 240, 244, 248, 249, 250, 251, 252, 253, 256, 257, 258, 259, 261, 263, 266, 270, 274, 276, 279, 281, 286, 314], "summary": {"covered_lines": 30, "num_statements": 37, "percent_covered": 81.08108108108108, "percent_covered_display": "81", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [224, 232, 245, 271, 282, 283, 288], "excluded_lines": []}, "HybridAggregationStrategy": {"executed_lines": [326, 327, 330, 336, 340, 343, 347, 350, 355, 358], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [337], "excluded_lines": []}, "ThreatAggregator": {"executed_lines": [371, 375, 376, 393, 394, 398, 400, 403, 407, 409, 412, 452, 456, 462], "summary": {"covered_lines": 14, "num_statements": 29, "percent_covered": 48.275862068965516, "percent_covered_display": "48", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [395, 401, 414, 415, 416, 431, 432, 433, 435, 439, 441, 444, 446, 447, 448], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 10, 13, 14, 16, 17, 23, 24, 28, 29, 34, 35, 42, 45, 48, 66, 89, 104, 132, 152, 208, 209, 216, 219, 242, 268, 317, 318, 325, 329, 332, 352, 361, 362, 369, 373, 378, 418, 450, 454], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/services/validation_service.py": {"executed_lines": [1, 3, 4, 6, 10, 11, 12, 13, 14, 16, 19, 20, 28, 30, 31, 32, 35, 38, 41, 51, 62, 64, 67, 70, 73, 75, 84, 94, 96, 99, 102, 105, 107, 114, 124, 126, 127, 130, 133, 136, 138, 147, 157, 159, 162, 165, 168, 171, 173, 175, 176, 180, 182, 185, 188, 192, 195, 198, 201, 204, 208, 209, 212, 215, 218, 222, 229, 231, 233, 236, 239, 242, 245, 248, 251, 254, 257, 261, 265, 269, 272, 275, 276, 278, 283, 287, 290, 293, 300, 302, 303, 304, 305, 311, 314, 316, 318, 319, 320, 321, 325, 327, 331, 332, 333, 339, 342, 345, 346, 353, 356, 358, 360, 361, 362, 364, 366, 367, 368, 369, 377, 379, 390, 392, 393, 394, 395, 399, 401, 402, 403, 408, 416, 417, 419, 422, 425, 426, 428, 430, 432], "summary": {"covered_lines": 139, "num_statements": 201, "percent_covered": 69.1542288557214, "percent_covered_display": "69", "missing_lines": 62, "excluded_lines": 0}, "missing_lines": [79, 80, 81, 82, 109, 110, 111, 112, 142, 143, 144, 145, 177, 178, 183, 186, 189, 193, 196, 199, 205, 210, 213, 219, 223, 224, 225, 234, 237, 240, 243, 246, 249, 255, 258, 262, 266, 270, 279, 280, 284, 288, 306, 309, 328, 334, 340, 347, 348, 354, 370, 373, 375, 380, 381, 382, 383, 386, 388, 404, 420, 423], "excluded_lines": [], "functions": {"ValidationService.__init__": {"executed_lines": [30, 31, 32, 35, 38, 41], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationService.validate_scan_request": {"executed_lines": [62, 64, 67, 70, 73, 75], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [79, 80, 81, 82], "excluded_lines": []}, "ValidationService.validate_threat_data": {"executed_lines": [94, 96, 99, 102, 105, 107], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [109, 110, 111, 112], "excluded_lines": []}, "ValidationService.validate_scan_result": {"executed_lines": [124, 126, 127, 130, 133, 136, 138], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [142, 143, 144, 145], "excluded_lines": []}, "ValidationService.enforce_security_constraints": {"executed_lines": [157, 159, 162, 165, 168, 171, 173, 175, 176], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [177, 178], "excluded_lines": []}, "ValidationService._validate_scan_context": {"executed_lines": [182, 185, 188, 192, 195, 198], "summary": {"covered_lines": 6, "num_statements": 12, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [183, 186, 189, 193, 196, 199], "excluded_lines": []}, "ValidationService._validate_scan_configuration": {"executed_lines": [204, 208, 209, 212], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [205, 210, 213], "excluded_lines": []}, "ValidationService._validate_scanner_configuration": {"executed_lines": [218, 222], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [219, 223, 224, 225], "excluded_lines": []}, "ValidationService._validate_required_threat_fields": {"executed_lines": [231, 233, 236, 239, 242, 245, 248], "summary": {"covered_lines": 7, "num_statements": 13, "percent_covered": 53.84615384615385, "percent_covered_display": "54", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [234, 237, 240, 243, 246, 249], "excluded_lines": []}, "ValidationService._validate_threat_data_types": {"executed_lines": [254, 257, 261, 265, 269], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [255, 258, 262, 266, 270], "excluded_lines": []}, "ValidationService._validate_threat_consistency": {"executed_lines": [275, 276, 278, 283, 287], "summary": {"covered_lines": 5, "num_statements": 9, "percent_covered": 55.55555555555556, "percent_covered_display": "56", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [279, 280, 284, 288], "excluded_lines": []}, "ValidationService._validate_threat_security_fields": {"executed_lines": [293, 300, 302, 303, 304, 305], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [306, 309], "excluded_lines": []}, "ValidationService._validate_result_consistency": {"executed_lines": [314, 316, 318, 319, 320, 321], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationService._validate_result_metadata": {"executed_lines": [327, 331, 332, 333, 339], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [328, 334, 340], "excluded_lines": []}, "ValidationService._validate_threat_relationships": {"executed_lines": [345, 346, 353], "summary": {"covered_lines": 3, "num_statements": 6, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [347, 348, 354], "excluded_lines": []}, "ValidationService._check_blocked_paths": {"executed_lines": [358, 360, 361, 362], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationService._check_file_size_constraints": {"executed_lines": [366, 367, 368, 369], "summary": {"covered_lines": 4, "num_statements": 7, "percent_covered": 57.142857142857146, "percent_covered_display": "57", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [370, 373, 375], "excluded_lines": []}, "ValidationService._check_directory_constraints": {"executed_lines": [379], "summary": {"covered_lines": 1, "num_statements": 7, "percent_covered": 14.285714285714286, "percent_covered_display": "14", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [380, 381, 382, 383, 386, 388], "excluded_lines": []}, "ValidationService._check_code_snippet_constraints": {"executed_lines": [392, 393, 394, 395], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationService._check_file_extensions": {"executed_lines": [401, 402, 403], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [404], "excluded_lines": []}, "ValidationService.update_security_constraints": {"executed_lines": [416, 417, 419, 422, 425, 426, 428], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [420, 423], "excluded_lines": []}, "ValidationService.get_security_constraints": {"executed_lines": [432], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 10, 11, 12, 13, 14, 16, 19, 20, 28, 51, 84, 114, 147, 180, 201, 215, 229, 251, 272, 290, 311, 325, 342, 356, 364, 377, 390, 399, 408, 430], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ValidationService": {"executed_lines": [30, 31, 32, 35, 38, 41, 62, 64, 67, 70, 73, 75, 94, 96, 99, 102, 105, 107, 124, 126, 127, 130, 133, 136, 138, 157, 159, 162, 165, 168, 171, 173, 175, 176, 182, 185, 188, 192, 195, 198, 204, 208, 209, 212, 218, 222, 231, 233, 236, 239, 242, 245, 248, 254, 257, 261, 265, 269, 275, 276, 278, 283, 287, 293, 300, 302, 303, 304, 305, 314, 316, 318, 319, 320, 321, 327, 331, 332, 333, 339, 345, 346, 353, 358, 360, 361, 362, 366, 367, 368, 369, 379, 392, 393, 394, 395, 401, 402, 403, 416, 417, 419, 422, 425, 426, 428, 432], "summary": {"covered_lines": 107, "num_statements": 169, "percent_covered": 63.31360946745562, "percent_covered_display": "63", "missing_lines": 62, "excluded_lines": 0}, "missing_lines": [79, 80, 81, 82, 109, 110, 111, 112, 142, 143, 144, 145, 177, 178, 183, 186, 189, 193, 196, 199, 205, 210, 213, 219, 223, 224, 225, 234, 237, 240, 243, 246, 249, 255, 258, 262, 266, 270, 279, 280, 284, 288, 306, 309, 328, 334, 340, 347, 348, 354, 370, 373, 375, 380, 381, 382, 383, 386, 388, 404, 420, 423], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 10, 11, 12, 13, 14, 16, 19, 20, 28, 51, 84, 114, 147, 180, 201, 215, 229, 251, 272, 290, 311, 325, 342, 356, 364, 377, 390, 399, 408, 430], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/utils.py": {"executed_lines": [1, 4, 15, 16, 19, 20, 23, 25], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"merge_scanner_names": {"executed_lines": [15, 16, 19, 20, 23, 25], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 4], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 4, 15, 16, 19, 20, 23, 25], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/__init__.py": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 15], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 15], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 15], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/confidence_score.py": {"executed_lines": [1, 3, 6, 7, 8, 16, 19, 20, 21, 22, 23, 24, 26, 28, 29, 31, 32, 36, 37, 39, 40, 42, 43, 45, 47, 48, 50, 51, 53, 54, 56, 57, 59, 61, 62, 64, 66, 67, 69, 71, 72, 74, 76, 78, 80, 82, 84, 86, 87, 88, 90, 92, 93, 94, 96, 98, 99, 100, 102, 104, 105, 106, 108, 110, 111, 112, 114, 116, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 183, 185, 187, 189, 190, 192, 193, 195, 196, 198, 200, 201, 203, 204, 206, 208, 209, 211, 212, 214, 215, 217, 221, 222, 224, 225, 227, 228, 230, 231, 233, 234, 238, 239, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 260, 262, 266, 267, 268, 269, 270, 271], "summary": {"covered_lines": 158, "num_statements": 159, "percent_covered": 99.37106918238993, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [181], "excluded_lines": [], "functions": {"ConfidenceScore.__post_init__": {"executed_lines": [28, 29, 31, 32], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.from_percentage": {"executed_lines": [39, 40, 42, 43, 45], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.from_ratio": {"executed_lines": [50, 51, 53, 54, 56, 57, 59], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.certain": {"executed_lines": [64], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.uncertain": {"executed_lines": [69], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.default_threshold": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__str__": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__repr__": {"executed_lines": [82], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__eq__": {"executed_lines": [86, 87, 88], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__lt__": {"executed_lines": [92, 93, 94], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__le__": {"executed_lines": [98, 99, 100], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__gt__": {"executed_lines": [104, 105, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__ge__": {"executed_lines": [110, 111, 112], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.__hash__": {"executed_lines": [116], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.meets_threshold": {"executed_lines": [122], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.fails_threshold": {"executed_lines": [126], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_very_low": {"executed_lines": [130], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_low": {"executed_lines": [134], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_medium": {"executed_lines": [138], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_high": {"executed_lines": [142], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_very_high": {"executed_lines": [146], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_actionable": {"executed_lines": [150], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_certain": {"executed_lines": [154], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.is_uncertain": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.get_percentage": {"executed_lines": [162], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.get_decimal": {"executed_lines": [166], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.get_quality_level": {"executed_lines": [170, 171, 172, 173, 174, 175, 176, 177, 178, 179], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [181], "excluded_lines": []}, "ConfidenceScore.invert": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.adjust": {"executed_lines": [189, 190, 192, 193, 195, 196], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.boost": {"executed_lines": [200, 201, 203, 204], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.penalize": {"executed_lines": [208, 209, 211, 212, 214, 215], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.combine_with": {"executed_lines": [221, 222, 224, 225, 227, 228, 230, 231], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConfidenceScore.aggregate": {"executed_lines": [238, 239, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 260, 262], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 8, 16, 19, 20, 21, 22, 23, 24, 26, 36, 37, 47, 48, 61, 62, 66, 67, 71, 72, 76, 80, 84, 90, 96, 102, 108, 114, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 183, 187, 198, 206, 217, 233, 234, 266, 267, 268, 269, 270, 271], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ConfidenceScore": {"executed_lines": [28, 29, 31, 32, 39, 40, 42, 43, 45, 50, 51, 53, 54, 56, 57, 59, 64, 69, 74, 78, 82, 86, 87, 88, 92, 93, 94, 98, 99, 100, 104, 105, 106, 110, 111, 112, 116, 122, 126, 130, 134, 138, 142, 146, 150, 154, 158, 162, 166, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 185, 189, 190, 192, 193, 195, 196, 200, 201, 203, 204, 208, 209, 211, 212, 214, 215, 221, 222, 224, 225, 227, 228, 230, 231, 238, 239, 241, 242, 244, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 258, 260, 262], "summary": {"covered_lines": 103, "num_statements": 104, "percent_covered": 99.03846153846153, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [181], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 8, 16, 19, 20, 21, 22, 23, 24, 26, 36, 37, 47, 48, 61, 62, 66, 67, 71, 72, 76, 80, 84, 90, 96, 102, 108, 114, 120, 124, 128, 132, 136, 140, 144, 148, 152, 156, 160, 164, 168, 183, 187, 198, 206, 217, 233, 234, 266, 267, 268, 269, 270, 271], "summary": {"covered_lines": 55, "num_statements": 55, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/false_positive_info.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 17, 18, 19, 20, 21, 22, 24, 26, 29, 32, 33, 52, 53, 55, 64, 65, 75, 80, 94, 97, 106, 113, 118, 120, 125, 126, 139, 141, 142, 152, 153, 155, 156, 159, 160, 161, 163, 164, 165, 167, 176], "summary": {"covered_lines": 46, "num_statements": 52, "percent_covered": 88.46153846153847, "percent_covered_display": "88", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [27, 30, 95, 178, 179, 181], "excluded_lines": [], "functions": {"FalsePositiveInfo.__post_init__": {"executed_lines": [26, 29], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [27, 30], "excluded_lines": []}, "FalsePositiveInfo.create_false_positive": {"executed_lines": [52, 53, 55], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveInfo.create_legitimate": {"executed_lines": [75], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveInfo.update_reason": {"executed_lines": [94, 97], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [95], "excluded_lines": []}, "FalsePositiveInfo.remove_false_positive_marking": {"executed_lines": [113], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveInfo.to_dict": {"executed_lines": [120, 125, 126, 139], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveInfo.from_dict": {"executed_lines": [152, 153, 155, 156, 159, 160, 161, 163, 164, 165, 167], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveInfo.__str__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [178, 179, 181], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 17, 18, 19, 20, 21, 22, 24, 32, 33, 64, 65, 80, 106, 118, 141, 142, 176], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FalsePositiveInfo": {"executed_lines": [26, 29, 52, 53, 55, 75, 94, 97, 113, 120, 125, 126, 139, 152, 153, 155, 156, 159, 160, 161, 163, 164, 165, 167], "summary": {"covered_lines": 24, "num_statements": 30, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [27, 30, 95, 178, 179, 181], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 17, 18, 19, 20, 21, 22, 24, 32, 33, 64, 65, 80, 106, 118, 141, 142, 176], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/file_path.py": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 17, 18, 20, 21, 24, 27, 28, 31, 32, 33, 36, 38, 39, 41, 45, 46, 48, 49, 51, 53, 54, 56, 58, 59, 61, 63, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 85, 86, 88, 90, 91, 92, 94, 96, 97, 98, 100, 102, 105, 109, 148, 152, 155, 157, 159, 162, 163, 164, 165, 166, 167, 168, 173, 175, 177, 178, 180, 191, 192, 193, 194, 195, 196, 198, 199, 203, 205, 215, 217, 220, 221, 233, 235, 236, 238, 239], "summary": {"covered_lines": 92, "num_statements": 122, "percent_covered": 75.40983606557377, "percent_covered_display": "75", "missing_lines": 30, "excluded_lines": 0}, "missing_lines": [25, 34, 42, 79, 103, 106, 149, 153, 160, 169, 171, 197, 200, 201, 207, 208, 210, 211, 212, 213, 218, 222, 224, 225, 226, 227, 228, 229, 240, 241], "excluded_lines": [], "functions": {"FilePath.from_string": {"executed_lines": [24, 27, 28, 31, 32, 33, 36], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [25, 34], "excluded_lines": []}, "FilePath.from_virtual": {"executed_lines": [41, 45, 46], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [42], "excluded_lines": []}, "FilePath.path": {"executed_lines": [51], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.name": {"executed_lines": [56], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.suffix": {"executed_lines": [61], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.parent": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.__str__": {"executed_lines": [70], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.__fspath__": {"executed_lines": [74], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.exists": {"executed_lines": [78, 80], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [79], "excluded_lines": []}, "FilePath.is_file": {"executed_lines": [84, 85, 86], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.is_directory": {"executed_lines": [90, 91, 92], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.is_readable": {"executed_lines": [96, 97, 98], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FilePath.is_scannable_file": {"executed_lines": [102, 105, 109, 148, 152, 155], "summary": {"covered_lines": 6, "num_statements": 10, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [103, 106, 149, 153], "excluded_lines": []}, "FilePath.get_scannable_files": {"executed_lines": [159, 162, 163, 164, 165, 166, 167, 168, 173], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [160, 169, 171], "excluded_lines": []}, "FilePath.is_sensitive_system_path": {"executed_lines": [177, 178, 180, 191, 192, 193, 194, 195, 196, 198, 199, 203], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [197, 200, 201], "excluded_lines": []}, "FilePath.relative_to_project_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [207, 208, 210, 211, 212, 213], "excluded_lines": []}, "FilePath.read_text": {"executed_lines": [217, 220, 221], "summary": {"covered_lines": 3, "num_statements": 11, "percent_covered": 27.272727272727273, "percent_covered_display": "27", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [218, 222, 224, 225, 226, 227, 228, 229], "excluded_lines": []}, "FilePath.get_size_bytes": {"executed_lines": [235, 236, 238, 239], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [240, 241], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 17, 18, 20, 21, 38, 39, 48, 49, 53, 54, 58, 59, 63, 64, 68, 72, 76, 82, 88, 94, 100, 157, 175, 205, 215, 233], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FilePath": {"executed_lines": [24, 27, 28, 31, 32, 33, 36, 41, 45, 46, 51, 56, 61, 66, 70, 74, 78, 80, 84, 85, 86, 90, 91, 92, 96, 97, 98, 102, 105, 109, 148, 152, 155, 159, 162, 163, 164, 165, 166, 167, 168, 173, 177, 178, 180, 191, 192, 193, 194, 195, 196, 198, 199, 203, 217, 220, 221, 235, 236, 238, 239], "summary": {"covered_lines": 61, "num_statements": 91, "percent_covered": 67.03296703296704, "percent_covered_display": "67", "missing_lines": 30, "excluded_lines": 0}, "missing_lines": [25, 34, 42, 79, 103, 106, 149, 153, 160, 169, 171, 197, 200, 201, 207, 208, 210, 211, 212, 213, 218, 222, 224, 225, 226, 227, 228, 229, 240, 241], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 8, 9, 10, 17, 18, 20, 21, 38, 39, 48, 49, 53, 54, 58, 59, 63, 64, 68, 72, 76, 82, 88, 94, 100, 157, 175, 205, 215, 233], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/scan_context.py": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 19, 20, 21, 22, 24, 25, 27, 28, 30, 33, 34, 37, 38, 39, 40, 41, 49, 53, 54, 56, 57, 59, 62, 64, 70, 71, 75, 77, 81, 82, 84, 88, 90, 96, 98, 100, 102, 104, 106, 108, 109, 113, 115, 116, 119, 123, 126, 127, 129, 162], "summary": {"covered_lines": 55, "num_statements": 69, "percent_covered": 79.71014492753623, "percent_covered_display": "80", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [29, 31, 42, 44, 46, 47, 58, 60, 76, 78, 107, 111, 120, 124], "excluded_lines": [], "functions": {"ScanContext.for_file": {"executed_lines": [27, 28, 30, 33, 34, 37, 38, 39, 40, 41, 49], "summary": {"covered_lines": 11, "num_statements": 17, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [29, 31, 42, 44, 46, 47], "excluded_lines": []}, "ScanContext.for_directory": {"executed_lines": [56, 57, 59, 62, 64], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [58, 60], "excluded_lines": []}, "ScanContext.for_code_snippet": {"executed_lines": [75, 77, 81, 82, 84], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [76, 78], "excluded_lines": []}, "ScanContext.is_file_scan": {"executed_lines": [90], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanContext.is_directory_scan": {"executed_lines": [98], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanContext.is_code_scan": {"executed_lines": [102], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanContext.get_scannable_files": {"executed_lines": [106, 108, 109], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [107, 111], "excluded_lines": []}, "ScanContext.validate_scan_permissions": {"executed_lines": [115, 116, 119, 123], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [120, 124], "excluded_lines": []}, "ScanContext._detect_language": {"executed_lines": [129, 162], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 19, 20, 21, 22, 24, 25, 53, 54, 70, 71, 88, 96, 100, 104, 113, 126, 127], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanContext": {"executed_lines": [27, 28, 30, 33, 34, 37, 38, 39, 40, 41, 49, 56, 57, 59, 62, 64, 75, 77, 81, 82, 84, 90, 98, 102, 106, 108, 109, 115, 116, 119, 123, 129, 162], "summary": {"covered_lines": 33, "num_statements": 47, "percent_covered": 70.2127659574468, "percent_covered_display": "70", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [29, 31, 42, 44, 46, 47, 58, 60, 76, 78, 107, 111, 120, 124], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 9, 10, 11, 19, 20, 21, 22, 24, 25, 53, 54, 70, 71, 88, 96, 100, 104, 113, 126, 127], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/scan_metadata.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 11, 18, 19, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33, 36, 37, 40, 41, 43, 44, 52, 62, 63, 67, 76, 77, 81, 90, 91, 100, 114, 135, 178, 180, 199, 201, 206, 208, 211, 213, 215, 216, 220, 222, 224], "summary": {"covered_lines": 49, "num_statements": 52, "percent_covered": 94.23076923076923, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [116, 144, 218], "excluded_lines": [], "functions": {"ScanMetadata.for_file_scan": {"executed_lines": [52], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetadata.for_directory_scan": {"executed_lines": [67], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetadata.for_code_scan": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetadata.for_diff_scan": {"executed_lines": [100], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetadata.with_git_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [116], "excluded_lines": []}, "ScanMetadata.with_configuration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [144], "excluded_lines": []}, "ScanMetadata.with_tags": {"executed_lines": [180], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetadata.is_scanner_enabled": {"executed_lines": [201, 206], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetadata.get_effective_timeout": {"executed_lines": [211, 213, 215, 216, 220], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [218], "excluded_lines": []}, "ScanMetadata.to_dict": {"executed_lines": [224], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 11, 18, 19, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33, 36, 37, 40, 41, 43, 44, 62, 63, 76, 77, 90, 91, 114, 135, 178, 199, 208, 222], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanMetadata": {"executed_lines": [52, 67, 81, 100, 180, 201, 206, 211, 213, 215, 216, 220, 224], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [116, 144, 218], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 11, 18, 19, 20, 21, 24, 25, 26, 27, 30, 31, 32, 33, 36, 37, 40, 41, 43, 44, 62, 63, 76, 77, 90, 91, 114, 135, 178, 199, 208, 222], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/scan_type.py": {"executed_lines": [1, 3, 6, 7, 9, 10, 11, 12, 14, 16, 18, 19, 21, 22, 23, 24, 26, 28, 30, 32, 34, 36], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ScanType.__str__": {"executed_lines": [16], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanType.from_string": {"executed_lines": [21, 22, 23, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanType.is_file_based": {"executed_lines": [28], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanType.is_content_based": {"executed_lines": [32], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanType.requires_file_system": {"executed_lines": [36], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 9, 10, 11, 12, 14, 18, 19, 26, 30, 34], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanType": {"executed_lines": [16, 21, 22, 23, 24, 28, 32, 36], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 6, 7, 9, 10, 11, 12, 14, 18, 19, 26, 30, 34], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/domain/value_objects/severity_level.py": {"executed_lines": [1, 3, 4, 7, 8, 10, 11, 12, 13, 16, 17, 18, 25, 28, 29, 30, 31, 33, 34, 36, 39, 46, 47, 48, 52, 54, 55, 57, 58, 59, 60, 64, 66, 68, 72, 74, 75, 76, 78, 80, 82, 84, 90, 92, 94, 96, 99, 108, 110, 114, 116, 118, 122, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 154, 156, 164, 172, 173, 182, 183, 185, 189, 190, 191, 192], "summary": {"covered_lines": 74, "num_statements": 94, "percent_covered": 78.72340425531915, "percent_covered_display": "79", "missing_lines": 20, "excluded_lines": 0}, "missing_lines": [37, 70, 81, 86, 87, 88, 93, 103, 112, 120, 124, 158, 159, 161, 162, 166, 167, 169, 170, 175], "excluded_lines": [], "functions": {"SeverityLevel.from_string": {"executed_lines": [36, 39, 46, 47, 48, 52], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [37], "excluded_lines": []}, "SeverityLevel.from_numeric": {"executed_lines": [57, 58, 59, 60], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.__str__": {"executed_lines": [66], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.__repr__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [70], "excluded_lines": []}, "SeverityLevel.__eq__": {"executed_lines": [74, 75, 76], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.__lt__": {"executed_lines": [80, 82], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [81], "excluded_lines": []}, "SeverityLevel.__le__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [86, 87, 88], "excluded_lines": []}, "SeverityLevel.__gt__": {"executed_lines": [92, 94], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [93], "excluded_lines": []}, "SeverityLevel.__ge__": {"executed_lines": [99, 108], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [103], "excluded_lines": []}, "SeverityLevel.__hash__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [112], "excluded_lines": []}, "SeverityLevel.meets_threshold": {"executed_lines": [116], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.is_low": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [120], "excluded_lines": []}, "SeverityLevel.is_medium": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [124], "excluded_lines": []}, "SeverityLevel.is_high": {"executed_lines": [128], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.is_critical": {"executed_lines": [132], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.is_actionable": {"executed_lines": [136], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.get_numeric_value": {"executed_lines": [140], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.get_display_name": {"executed_lines": [144], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.get_priority_weight": {"executed_lines": [148, 154], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel.escalate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [158, 159, 161, 162], "excluded_lines": []}, "SeverityLevel.deescalate": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [166, 167, 169, 170], "excluded_lines": []}, "SeverityLevel.get_all_levels": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [175], "excluded_lines": []}, "SeverityLevel.get_default_threshold": {"executed_lines": [185], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 7, 8, 10, 11, 12, 13, 16, 17, 18, 25, 28, 29, 30, 31, 33, 34, 54, 55, 64, 68, 72, 78, 84, 90, 96, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 156, 164, 172, 173, 182, 183, 189, 190, 191, 192], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SeverityValue": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityLevel": {"executed_lines": [36, 39, 46, 47, 48, 52, 57, 58, 59, 60, 66, 74, 75, 76, 80, 82, 92, 94, 99, 108, 116, 128, 132, 136, 140, 144, 148, 154, 185], "summary": {"covered_lines": 29, "num_statements": 49, "percent_covered": 59.183673469387756, "percent_covered_display": "59", "missing_lines": 20, "excluded_lines": 0}, "missing_lines": [37, 70, 81, 86, 87, 88, 93, 103, 112, 120, 124, 158, 159, 161, 162, 166, 167, 169, 170, 175], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 7, 8, 10, 11, 12, 13, 16, 17, 18, 25, 28, 29, 30, 31, 33, 34, 54, 55, 64, 68, 72, 78, 84, 90, 96, 110, 114, 118, 122, 126, 130, 134, 138, 142, 146, 156, 164, 172, 173, 182, 183, 189, 190, 191, 192], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/infrastructure/__init__.py": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 5], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/infrastructure/false_positive_json_repository.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 13, 16, 17, 25, 32, 33, 36, 37, 39, 41, 42, 43, 44, 45, 48, 49, 59, 61, 62, 64, 65, 67, 68, 69, 71, 72, 74, 75, 76, 77, 78, 79, 84, 85, 87, 88, 92, 94, 95, 97, 98, 99, 100, 101, 104, 106, 108, 110, 113, 114, 115, 118, 121, 122, 124, 126, 127, 130, 132, 134, 135, 136, 137, 138, 139, 140, 142, 144, 146, 147, 148, 151, 153, 154, 155, 158, 159, 160, 162, 163, 164, 165, 167, 168, 171, 174, 176, 177, 181, 183, 184, 185, 187, 189, 191, 192, 194, 195, 196, 198, 200, 201, 202, 203, 204, 205, 206, 208, 210, 212, 214, 216, 218, 219, 220, 225, 226, 227, 229], "summary": {"covered_lines": 124, "num_statements": 134, "percent_covered": 92.53731343283582, "percent_covered_display": "93", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [50, 52, 53, 56, 57, 80, 81, 238, 239, 240], "excluded_lines": [], "functions": {"FalsePositiveJsonRepository.__init__": {"executed_lines": [32, 33, 36, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository._invalidate_cache_if_needed": {"executed_lines": [41, 42, 43, 44, 45, 48, 49], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 58.333333333333336, "percent_covered_display": "58", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [50, 52, 53, 56, 57], "excluded_lines": []}, "FalsePositiveJsonRepository._build_cache": {"executed_lines": [61, 62, 64, 65, 67, 68, 69, 71, 72, 74, 75, 76, 77, 78, 79, 84, 85, 87, 88], "summary": {"covered_lines": 19, "num_statements": 21, "percent_covered": 90.47619047619048, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [80, 81], "excluded_lines": []}, "FalsePositiveJsonRepository._load_adversary_json": {"executed_lines": [94, 95, 97, 98, 99, 100, 101, 104], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository._save_adversary_json": {"executed_lines": [108, 110, 113, 114, 115, 118, 121, 122, 124, 126, 127, 130], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository.get_false_positive_info": {"executed_lines": [134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository.save_false_positive_info": {"executed_lines": [144, 146, 147, 148, 151, 153, 154, 155, 158, 159, 160, 162, 163, 164, 165, 167, 168, 171, 174, 176, 177, 181, 183, 184, 185], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository.remove_false_positive_info": {"executed_lines": [189, 191, 192, 194, 195, 196], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository.list_false_positives": {"executed_lines": [200, 201, 202, 203, 204, 205, 206], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository.get_adversary_file_path": {"executed_lines": [210], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository.file_exists": {"executed_lines": [214], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveJsonRepository.get_file_stats": {"executed_lines": [218, 219, 220, 225, 226, 227, 229], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [238, 239, 240], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 13, 16, 17, 25, 39, 59, 92, 106, 132, 142, 187, 198, 208, 212, 216], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FalsePositiveJsonRepository": {"executed_lines": [32, 33, 36, 37, 41, 42, 43, 44, 45, 48, 49, 61, 62, 64, 65, 67, 68, 69, 71, 72, 74, 75, 76, 77, 78, 79, 84, 85, 87, 88, 94, 95, 97, 98, 99, 100, 101, 104, 108, 110, 113, 114, 115, 118, 121, 122, 124, 126, 127, 130, 134, 135, 136, 137, 138, 139, 140, 144, 146, 147, 148, 151, 153, 154, 155, 158, 159, 160, 162, 163, 164, 165, 167, 168, 171, 174, 176, 177, 181, 183, 184, 185, 189, 191, 192, 194, 195, 196, 200, 201, 202, 203, 204, 205, 206, 210, 214, 218, 219, 220, 225, 226, 227, 229], "summary": {"covered_lines": 104, "num_statements": 114, "percent_covered": 91.2280701754386, "percent_covered_display": "91", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [50, 52, 53, 56, 57, 80, 81, 238, 239, 240], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 13, 16, 17, 25, 39, 59, 92, 106, 132, 142, 187, 198, 208, 212, 216], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/llm/__init__.py": {"executed_lines": [1, 3, 10, 11, 12, 13, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 10, 11, 12, 13, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 10, 11, 12, 13, 15], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/llm/llm_client.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 17, 20, 21, 23, 24, 27, 28, 29, 31, 32, 33, 34, 35, 38, 39, 41, 44, 45, 47, 50, 51, 53, 56, 57, 59, 62, 63, 65, 78, 79, 80, 81, 82, 83, 87, 104, 106, 107, 109, 110, 111, 114, 115, 122, 127, 128, 130, 131, 135, 136, 162, 163, 189, 201, 203, 204, 206, 207, 209, 210, 211, 212, 213, 215, 247, 252, 253, 255, 256, 257, 258, 266, 267, 268, 272, 274, 276, 279, 281, 282, 283, 284, 287, 288, 291, 295, 297, 300, 302, 303, 304, 305, 308, 312, 316, 318, 319, 321, 323, 326, 333, 365, 370, 371, 373, 374, 375, 378, 386, 387, 388, 392, 394, 396, 399, 401, 402, 403, 404, 407, 411, 415, 417, 420, 422, 423, 424, 425, 428, 432, 436, 438, 441, 443, 445, 448, 460, 461, 463, 465, 467, 476, 477, 478, 479, 483, 484, 487, 492, 493, 495, 497, 498, 500, 506, 514, 515, 517, 520, 523, 529, 533, 538, 543, 550, 551, 559, 567, 568, 569, 578, 579, 580, 581, 583, 584, 585, 586, 587, 594, 595, 608, 617, 618, 624, 627, 632, 633, 635, 637, 638, 640, 646, 655, 656, 659, 660, 661, 663, 732, 733, 734, 743, 744, 745, 748, 754, 765, 766, 767, 774, 775, 778, 779, 781, 783, 785, 794, 795, 796, 797, 801, 802, 805, 810, 811, 813, 815, 816, 819, 820, 821, 824, 833, 836, 843, 847, 852, 857, 864, 865, 873, 915, 1073, 1093, 1094, 1098, 1099, 1100, 1103, 1106, 1107, 1108, 1111, 1114, 1116, 1117, 1118, 1119, 1120], "summary": {"covered_lines": 261, "num_statements": 374, "percent_covered": 69.78609625668449, "percent_covered_display": "70", "missing_lines": 113, "excluded_lines": 0}, "missing_lines": [15, 133, 160, 187, 309, 329, 330, 331, 408, 429, 451, 452, 455, 596, 597, 598, 605, 606, 619, 620, 665, 666, 667, 670, 671, 678, 679, 682, 685, 686, 687, 692, 694, 698, 703, 708, 715, 716, 724, 750, 753, 755, 756, 763, 764, 881, 882, 883, 890, 891, 892, 893, 894, 901, 902, 903, 904, 905, 912, 913, 924, 925, 926, 927, 931, 934, 939, 940, 942, 944, 945, 947, 948, 949, 952, 962, 963, 964, 966, 968, 970, 971, 972, 973, 975, 976, 986, 989, 990, 991, 996, 1000, 1004, 1009, 1014, 1021, 1022, 1030, 1038, 1039, 1040, 1047, 1048, 1049, 1050, 1051, 1058, 1059, 1060, 1061, 1062, 1069, 1070], "excluded_lines": [], "functions": {"LLMClient.__init__": {"executed_lines": [78, 79, 80, 81, 82, 83], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMClient._record_llm_metrics": {"executed_lines": [104, 106, 107, 109, 110, 111, 114, 115, 122, 127, 128], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMClient.get_default_model": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [133], "excluded_lines": []}, "LLMClient.complete": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [160], "excluded_lines": []}, "LLMClient.complete_streaming": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [187], "excluded_lines": []}, "LLMClient.validate_json_response": {"executed_lines": [201, 203, 204, 206, 207, 209, 210, 211, 212, 213], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMClient.complete_with_retry": {"executed_lines": [247, 252, 253, 255, 256, 257, 258, 266, 267, 268, 272, 274, 276, 279, 281, 282, 283, 284, 287, 288, 291, 295, 297, 300, 302, 303, 304, 305, 308, 312, 316, 318, 319, 321, 323, 326], "summary": {"covered_lines": 36, "num_statements": 40, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [309, 329, 330, 331], "excluded_lines": []}, "LLMClient.complete_streaming_with_retry": {"executed_lines": [365, 370, 371, 373, 374, 375, 378, 386, 387, 388, 392, 394, 396, 399, 401, 402, 403, 404, 407, 411, 415, 417, 420, 422, 423, 424, 425, 428, 432, 436, 438, 441, 443, 445, 448], "summary": {"covered_lines": 35, "num_statements": 40, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [408, 429, 451, 452, 455], "excluded_lines": []}, "OpenAIClient.get_default_model": {"executed_lines": [465], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OpenAIClient.complete": {"executed_lines": [476, 477, 478, 479, 483, 484, 487, 492, 493, 495, 497, 498, 500, 506, 514, 515, 517, 520, 523, 529, 533, 538, 543, 550, 551, 559, 567, 568, 569, 578, 579, 580, 581, 583, 584, 585, 586, 587, 594, 595], "summary": {"covered_lines": 40, "num_statements": 45, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [596, 597, 598, 605, 606], "excluded_lines": []}, "OpenAIClient.complete_streaming": {"executed_lines": [617, 618, 624, 627, 632, 633, 635, 637, 638, 640, 646, 655, 656, 659, 660, 661, 663, 732, 733, 734, 743, 744, 745, 748, 754, 765, 766, 767, 774, 775], "summary": {"covered_lines": 30, "num_statements": 57, "percent_covered": 52.63157894736842, "percent_covered_display": "53", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [619, 620, 665, 666, 667, 670, 671, 678, 679, 682, 685, 686, 687, 692, 694, 698, 703, 708, 715, 716, 724, 750, 753, 755, 756, 763, 764], "excluded_lines": []}, "AnthropicClient.get_default_model": {"executed_lines": [783], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnthropicClient.complete": {"executed_lines": [794, 795, 796, 797, 801, 802, 805, 810, 811, 813, 815, 816, 819, 820, 821, 824, 833, 836, 843, 847, 852, 857, 864, 865, 873], "summary": {"covered_lines": 25, "num_statements": 40, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [881, 882, 883, 890, 891, 892, 893, 894, 901, 902, 903, 904, 905, 912, 913], "excluded_lines": []}, "AnthropicClient.complete_streaming": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 53, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 53, "excluded_lines": 0}, "missing_lines": [924, 925, 926, 927, 931, 934, 939, 940, 942, 944, 945, 947, 948, 949, 952, 962, 963, 964, 966, 968, 970, 971, 972, 973, 975, 976, 986, 989, 990, 991, 996, 1000, 1004, 1009, 1014, 1021, 1022, 1030, 1038, 1039, 1040, 1047, 1048, 1049, 1050, 1051, 1058, 1059, 1060, 1061, 1062, 1069, 1070], "excluded_lines": []}, "create_llm_client": {"executed_lines": [1093, 1094, 1098, 1099, 1100, 1103, 1106, 1107, 1108, 1111, 1114, 1116, 1117, 1118, 1119, 1120], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 17, 20, 21, 23, 24, 27, 28, 29, 31, 32, 33, 34, 35, 38, 39, 41, 44, 45, 47, 50, 51, 53, 56, 57, 59, 62, 63, 65, 87, 130, 131, 135, 136, 162, 163, 189, 215, 333, 460, 461, 463, 467, 608, 778, 779, 781, 785, 915, 1073], "summary": {"covered_lines": 50, "num_statements": 51, "percent_covered": 98.03921568627452, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [15], "excluded_lines": []}}, "classes": {"LLMProvider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMResponse": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMClientError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMAPIError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMRateLimitError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMQuotaError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMClient": {"executed_lines": [78, 79, 80, 81, 82, 83, 104, 106, 107, 109, 110, 111, 114, 115, 122, 127, 128, 201, 203, 204, 206, 207, 209, 210, 211, 212, 213, 247, 252, 253, 255, 256, 257, 258, 266, 267, 268, 272, 274, 276, 279, 281, 282, 283, 284, 287, 288, 291, 295, 297, 300, 302, 303, 304, 305, 308, 312, 316, 318, 319, 321, 323, 326, 365, 370, 371, 373, 374, 375, 378, 386, 387, 388, 392, 394, 396, 399, 401, 402, 403, 404, 407, 411, 415, 417, 420, 422, 423, 424, 425, 428, 432, 436, 438, 441, 443, 445, 448], "summary": {"covered_lines": 98, "num_statements": 110, "percent_covered": 89.0909090909091, "percent_covered_display": "89", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [133, 160, 187, 309, 329, 330, 331, 408, 429, 451, 452, 455], "excluded_lines": []}, "OpenAIClient": {"executed_lines": [465, 476, 477, 478, 479, 483, 484, 487, 492, 493, 495, 497, 498, 500, 506, 514, 515, 517, 520, 523, 529, 533, 538, 543, 550, 551, 559, 567, 568, 569, 578, 579, 580, 581, 583, 584, 585, 586, 587, 594, 595, 617, 618, 624, 627, 632, 633, 635, 637, 638, 640, 646, 655, 656, 659, 660, 661, 663, 732, 733, 734, 743, 744, 745, 748, 754, 765, 766, 767, 774, 775], "summary": {"covered_lines": 71, "num_statements": 103, "percent_covered": 68.93203883495146, "percent_covered_display": "69", "missing_lines": 32, "excluded_lines": 0}, "missing_lines": [596, 597, 598, 605, 606, 619, 620, 665, 666, 667, 670, 671, 678, 679, 682, 685, 686, 687, 692, 694, 698, 703, 708, 715, 716, 724, 750, 753, 755, 756, 763, 764], "excluded_lines": []}, "AnthropicClient": {"executed_lines": [783, 794, 795, 796, 797, 801, 802, 805, 810, 811, 813, 815, 816, 819, 820, 821, 824, 833, 836, 843, 847, 852, 857, 864, 865, 873], "summary": {"covered_lines": 26, "num_statements": 94, "percent_covered": 27.659574468085108, "percent_covered_display": "28", "missing_lines": 68, "excluded_lines": 0}, "missing_lines": [881, 882, 883, 890, 891, 892, 893, 894, 901, 902, 903, 904, 905, 912, 913, 924, 925, 926, 927, 931, 934, 939, 940, 942, 944, 945, 947, 948, 949, 952, 962, 963, 964, 966, 968, 970, 971, 972, 973, 975, 976, 986, 989, 990, 991, 996, 1000, 1004, 1009, 1014, 1021, 1022, 1030, 1038, 1039, 1040, 1047, 1048, 1049, 1050, 1051, 1058, 1059, 1060, 1061, 1062, 1069, 1070], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 17, 20, 21, 23, 24, 27, 28, 29, 31, 32, 33, 34, 35, 38, 39, 41, 44, 45, 47, 50, 51, 53, 56, 57, 59, 62, 63, 65, 87, 130, 131, 135, 136, 162, 163, 189, 215, 333, 460, 461, 463, 467, 608, 778, 779, 781, 785, 915, 1073, 1093, 1094, 1098, 1099, 1100, 1103, 1106, 1107, 1108, 1111, 1114, 1116, 1117, 1118, 1119, 1120], "summary": {"covered_lines": 66, "num_statements": 67, "percent_covered": 98.50746268656717, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [15], "excluded_lines": []}}}, "src/adversary_mcp_server/llm/model_catalog.py": {"executed_lines": [1, 3, 4, 6, 8, 9, 17, 19, 22, 23, 25, 31, 32, 35, 36, 39, 40, 42, 54, 55, 57, 59, 60, 63, 64, 66, 67, 69, 71, 80, 81, 83, 92, 93, 95, 106, 108, 110, 120, 122, 128, 130, 132, 138, 140, 142, 148, 152, 153, 154, 157, 159, 168, 169, 171, 173, 184, 185, 186, 187, 188, 191, 192, 197, 199, 201, 204, 206, 208, 209, 210, 211, 212, 214, 216, 217, 218, 219, 220, 223, 224, 229, 232, 233, 236, 237, 250, 252, 253, 255, 257, 259, 260, 261, 262, 264, 267, 268, 269, 274, 275, 276, 278, 280, 281, 282, 283, 288, 291, 292, 293, 298, 299, 300, 302, 304, 306, 307, 310, 311, 314, 317, 318, 319, 320, 321, 322, 324, 337, 339, 341, 343, 345, 346, 349, 352, 353, 354, 355, 358, 359, 361, 374, 376, 378, 380, 382, 384, 386, 390, 391, 392, 394, 416, 418, 419, 421, 423, 425, 426, 428, 429, 431, 433, 436, 437, 438, 448, 451, 454, 458, 461, 462, 466, 468, 470, 474, 475, 476, 478, 480, 482, 483, 485, 486, 487, 488, 490, 492, 493, 495, 496], "summary": {"covered_lines": 190, "num_statements": 205, "percent_covered": 92.6829268292683, "percent_covered_display": "93", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [239, 240, 243, 244, 245, 246, 247, 248, 271, 272, 295, 296, 464, 497, 498], "excluded_lines": [], "functions": {"ModelCatalogService.__init__": {"executed_lines": [31, 32, 35, 36, 39, 40], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService.get_available_models": {"executed_lines": [54, 55, 57, 59, 60, 63, 64, 66, 67, 69], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService.get_models_by_category": {"executed_lines": [80, 81], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService.get_models_by_filter": {"executed_lines": [92, 93], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService.get_recommended_models": {"executed_lines": [106, 108, 110, 120, 122, 128, 130, 132, 138, 140, 142, 148, 152, 153, 154, 157], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService.get_model_by_id": {"executed_lines": [168, 169, 171], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService.get_categorized_models": {"executed_lines": [184, 185, 186, 187, 188, 191, 192, 197], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService._refresh_model_cache": {"executed_lines": [201, 204, 206, 208, 209, 210, 211, 212, 214, 216, 217, 218, 219, 220, 223, 224, 229, 232, 233, 236, 237, 250, 252, 253, 255], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "76", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [239, 240, 243, 244, 245, 246, 247, 248], "excluded_lines": []}, "ModelCatalogService._fetch_openai_models": {"executed_lines": [259, 260, 261, 262, 264, 267, 268, 269, 274, 275, 276], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [271, 272], "excluded_lines": []}, "ModelCatalogService._fetch_anthropic_models": {"executed_lines": [280, 281, 282, 283, 288, 291, 292, 293, 298, 299, 300], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [295, 296], "excluded_lines": []}, "ModelCatalogService._parse_openai_models": {"executed_lines": [304, 306, 307, 310, 311, 314, 317, 318, 319, 320, 321, 322, 324, 337, 339], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService._parse_anthropic_models": {"executed_lines": [343, 345, 346, 349, 352, 353, 354, 355, 358, 359, 361, 374, 376], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService._load_fallback_models": {"executed_lines": [380, 382, 384, 386, 390, 391, 392, 394, 416, 418, 419, 421], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService._is_cache_stale": {"executed_lines": [425, 426, 428, 429, 431], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService._is_chat_model": {"executed_lines": [436, 437, 438, 448, 451, 454, 458, 461, 462], "summary": {"covered_lines": 9, "num_statements": 10, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [464], "excluded_lines": []}, "ModelCatalogService._determine_provider": {"executed_lines": [468, 470, 474, 475, 476, 478], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService._get_openai_api_key": {"executed_lines": [482, 483, 485, 486, 487, 488], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCatalogService._get_anthropic_api_key": {"executed_lines": [492, 493, 495, 496], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [497, 498], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 9, 17, 19, 22, 23, 25, 42, 71, 83, 95, 159, 173, 199, 257, 278, 302, 341, 378, 423, 433, 466, 480, 490], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ModelCatalogService": {"executed_lines": [31, 32, 35, 36, 39, 40, 54, 55, 57, 59, 60, 63, 64, 66, 67, 69, 80, 81, 92, 93, 106, 108, 110, 120, 122, 128, 130, 132, 138, 140, 142, 148, 152, 153, 154, 157, 168, 169, 171, 184, 185, 186, 187, 188, 191, 192, 197, 201, 204, 206, 208, 209, 210, 211, 212, 214, 216, 217, 218, 219, 220, 223, 224, 229, 232, 233, 236, 237, 250, 252, 253, 255, 259, 260, 261, 262, 264, 267, 268, 269, 274, 275, 276, 280, 281, 282, 283, 288, 291, 292, 293, 298, 299, 300, 304, 306, 307, 310, 311, 314, 317, 318, 319, 320, 321, 322, 324, 337, 339, 343, 345, 346, 349, 352, 353, 354, 355, 358, 359, 361, 374, 376, 380, 382, 384, 386, 390, 391, 392, 394, 416, 418, 419, 421, 425, 426, 428, 429, 431, 436, 437, 438, 448, 451, 454, 458, 461, 462, 468, 470, 474, 475, 476, 478, 482, 483, 485, 486, 487, 488, 492, 493, 495, 496], "summary": {"covered_lines": 164, "num_statements": 179, "percent_covered": 91.62011173184358, "percent_covered_display": "92", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [239, 240, 243, 244, 245, 246, 247, 248, 271, 272, 295, 296, 464, 497, 498], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 9, 17, 19, 22, 23, 25, 42, 71, 83, 95, 159, 173, 199, 257, 278, 302, 341, 378, 423, 433, 466, 480, 490], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/llm/model_selector.py": {"executed_lines": [1, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 18, 19, 21, 27, 29, 45, 46, 47, 50, 52, 53, 56, 59, 60, 61, 62, 63, 67, 68, 69, 74, 75, 76, 77, 78, 79, 80, 82, 84, 87, 88, 89, 90, 93, 96, 97, 98, 99, 100, 103, 115, 121, 125, 128, 133, 134, 135, 136, 140, 151, 152, 153, 154, 156, 158, 162, 173, 174, 176, 177, 178, 182, 186, 188, 189, 190, 192, 194, 198, 199, 201, 203, 207, 209, 212, 213, 214, 227, 230, 232, 238, 239, 241, 242, 246, 250, 253, 256, 257, 259, 260, 261, 263, 265, 271, 272, 275, 276, 277, 280, 285, 286, 288, 290, 292, 296, 297, 298, 299, 300, 301, 302, 304, 305, 319, 325, 331, 332, 335, 345, 346, 350, 352, 355, 358, 359, 360, 363, 366, 371, 376, 379, 384, 385, 388, 389, 390, 393, 394, 397, 398, 399, 400, 401, 403, 404, 406, 408, 422, 437, 438], "summary": {"covered_lines": 160, "num_statements": 169, "percent_covered": 94.67455621301775, "percent_covered_display": "95", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [64, 72, 137, 155, 157, 159, 175, 179, 333], "excluded_lines": [], "functions": {"InteractiveModelSelector.__init__": {"executed_lines": [27], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InteractiveModelSelector.select_model": {"executed_lines": [45, 46, 47, 50, 52, 53, 56, 59, 60, 61, 62, 63, 67, 68, 69, 74, 75, 76, 77, 78, 79, 80], "summary": {"covered_lines": 22, "num_statements": 24, "percent_covered": 91.66666666666667, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [64, 72], "excluded_lines": []}, "InteractiveModelSelector._show_recommendation_menu": {"executed_lines": [84, 87, 88, 89, 90, 93, 96, 97, 98, 99, 100, 103, 115], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InteractiveModelSelector._show_custom_selection": {"executed_lines": [125, 128, 133, 134, 135, 136, 140, 151, 152, 153, 154, 156, 158, 162, 173, 174, 176, 177, 178, 182, 186, 188, 189, 190, 192], "summary": {"covered_lines": 25, "num_statements": 31, "percent_covered": 80.64516129032258, "percent_covered_display": "81", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [137, 155, 157, 159, 175, 179], "excluded_lines": []}, "InteractiveModelSelector._show_all_models_selection": {"executed_lines": [198, 199, 201], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InteractiveModelSelector._show_categorized_selection": {"executed_lines": [207, 209, 212, 213, 214, 227, 230, 232, 238, 239, 241, 242], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InteractiveModelSelector._show_model_list_selection": {"executed_lines": [250, 253, 256, 257, 259, 260, 261, 263, 265, 271, 272, 275, 276, 277, 280, 285, 286, 288], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InteractiveModelSelector._display_models_table": {"executed_lines": [292, 296, 297, 298, 299, 300, 301, 302, 304, 305, 319, 325, 331, 332, 335, 345, 346, 350], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [333], "excluded_lines": []}, "InteractiveModelSelector._display_model_details": {"executed_lines": [355, 358, 359, 360, 363, 366, 371, 376, 379, 384, 385, 388, 389, 390, 393, 394, 397, 398, 399, 400, 401, 403, 404], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InteractiveModelSelector._get_questionary_style": {"executed_lines": [408], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "select_model_interactive": {"executed_lines": [437, 438], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 18, 19, 21, 29, 82, 121, 194, 203, 246, 290, 352, 406, 422], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"InteractiveModelSelector": {"executed_lines": [27, 45, 46, 47, 50, 52, 53, 56, 59, 60, 61, 62, 63, 67, 68, 69, 74, 75, 76, 77, 78, 79, 80, 84, 87, 88, 89, 90, 93, 96, 97, 98, 99, 100, 103, 115, 125, 128, 133, 134, 135, 136, 140, 151, 152, 153, 154, 156, 158, 162, 173, 174, 176, 177, 178, 182, 186, 188, 189, 190, 192, 198, 199, 201, 207, 209, 212, 213, 214, 227, 230, 232, 238, 239, 241, 242, 250, 253, 256, 257, 259, 260, 261, 263, 265, 271, 272, 275, 276, 277, 280, 285, 286, 288, 292, 296, 297, 298, 299, 300, 301, 302, 304, 305, 319, 325, 331, 332, 335, 345, 346, 350, 355, 358, 359, 360, 363, 366, 371, 376, 379, 384, 385, 388, 389, 390, 393, 394, 397, 398, 399, 400, 401, 403, 404, 408], "summary": {"covered_lines": 136, "num_statements": 145, "percent_covered": 93.79310344827586, "percent_covered_display": "94", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [64, 72, 137, 155, 157, 159, 175, 179, 333], "excluded_lines": []}, "": {"executed_lines": [1, 3, 5, 6, 7, 8, 10, 11, 12, 14, 15, 18, 19, 21, 29, 82, 121, 194, 203, 246, 290, 352, 406, 422, 437, 438], "summary": {"covered_lines": 24, "num_statements": 24, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/llm/model_types.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 16, 17, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 36, 37, 38, 41, 42, 43, 46, 47, 48, 51, 52, 53, 54, 57, 58, 61, 62, 63, 66, 67, 69, 71, 72, 73, 74, 75, 76, 78, 79, 81, 83, 84, 86, 88, 89, 99, 100, 102, 110, 114, 136, 137, 173, 174, 175, 178, 179, 182, 183, 186, 187, 190, 191, 192, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 206, 208, 210, 211, 213, 216, 219, 225, 231, 232, 233, 234, 237, 240, 243], "summary": {"covered_lines": 95, "num_statements": 115, "percent_covered": 82.6086956521739, "percent_covered_display": "83", "missing_lines": 20, "excluded_lines": 0}, "missing_lines": [91, 97, 116, 139, 140, 141, 143, 144, 145, 146, 149, 150, 152, 214, 217, 223, 229, 235, 238, 241], "excluded_lines": [], "functions": {"ModelInfo.__post_init__": {"executed_lines": [71, 72, 73, 74, 75, 76], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelInfo.cost_description": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelInfo.provider_name": {"executed_lines": [86], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelInfo.category_display": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [91, 97], "excluded_lines": []}, "ModelInfo.capability_tags": {"executed_lines": [102, 110], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelInfo.to_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [116], "excluded_lines": []}, "ModelInfo.from_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 10, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [139, 140, 141, 143, 144, 145, 146, 149, 150, 152], "excluded_lines": []}, "ModelFilter.matches": {"executed_lines": [210, 211, 213, 216, 219, 225, 231, 232, 233, 234, 237, 240, 243], "summary": {"covered_lines": 13, "num_statements": 20, "percent_covered": 65.0, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [214, 217, 223, 229, 235, 238, 241], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 16, 17, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 36, 37, 38, 41, 42, 43, 46, 47, 48, 51, 52, 53, 54, 57, 58, 61, 62, 63, 66, 67, 69, 78, 79, 83, 84, 88, 89, 99, 100, 114, 136, 137, 173, 174, 175, 178, 179, 182, 183, 186, 187, 190, 191, 192, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 206, 208], "summary": {"covered_lines": 72, "num_statements": 72, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ModelProvider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCategory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelCapability": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelInfo": {"executed_lines": [71, 72, 73, 74, 75, 76, 81, 86, 102, 110], "summary": {"covered_lines": 10, "num_statements": 23, "percent_covered": 43.47826086956522, "percent_covered_display": "43", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [91, 97, 116, 139, 140, 141, 143, 144, 145, 146, 149, 150, 152], "excluded_lines": []}, "ModelCatalogConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ModelFilter": {"executed_lines": [210, 211, 213, 216, 219, 225, 231, 232, 233, 234, 237, 240, 243], "summary": {"covered_lines": 13, "num_statements": 20, "percent_covered": 65.0, "percent_covered_display": "65", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [214, 217, 223, 229, 235, 238, 241], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 16, 17, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 36, 37, 38, 41, 42, 43, 46, 47, 48, 51, 52, 53, 54, 57, 58, 61, 62, 63, 66, 67, 69, 78, 79, 83, 84, 88, 89, 99, 100, 114, 136, 137, 173, 174, 175, 178, 179, 182, 183, 186, 187, 190, 191, 192, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 206, 208], "summary": {"covered_lines": 72, "num_statements": 72, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/llm/pricing_manager.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 21, 22, 24, 25, 26, 28, 30, 31, 32, 35, 36, 38, 39, 40, 41, 45, 46, 47, 48, 50, 52, 73, 75, 84, 87, 88, 89, 92, 93, 94, 97, 100, 110, 113, 115, 128, 130, 131, 134, 136, 150, 156, 158, 164, 166, 218, 241, 304, 310, 312, 318, 319, 320, 321, 322, 323, 324, 326, 332, 334, 335, 336, 339, 340, 341, 342, 345, 346, 347, 349, 350, 351, 352, 354, 355, 356, 357, 358, 362, 367, 368, 369, 371, 372, 373, 374, 375, 383, 384, 386, 388], "summary": {"covered_lines": 98, "num_statements": 131, "percent_covered": 74.80916030534351, "percent_covered_display": "75", "missing_lines": 33, "excluded_lines": 0}, "missing_lines": [178, 179, 181, 183, 185, 186, 189, 190, 191, 192, 193, 195, 213, 214, 216, 227, 230, 234, 236, 237, 239, 253, 256, 274, 275, 277, 280, 283, 286, 288, 289, 291, 379], "excluded_lines": [], "functions": {"PricingManager.__init__": {"executed_lines": [21, 22, 24, 25, 26], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager._load_pricing_config": {"executed_lines": [30, 31, 32, 35, 36, 38, 39, 40, 41, 45, 46, 47, 48], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager._create_default_config": {"executed_lines": [52, 73], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager.get_model_pricing": {"executed_lines": [84, 87, 88, 89, 92, 93, 94, 97, 100, 110, 113], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager.calculate_cost": {"executed_lines": [128, 130, 131, 134, 136, 150, 156], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager.get_supported_models": {"executed_lines": [164], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager.get_models_by_provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 15, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [178, 179, 181, 183, 185, 186, 189, 190, 191, 192, 193, 195, 213, 214, 216], "excluded_lines": []}, "PricingManager._determine_model_provider": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [227, 230, 234, 236, 237, 239], "excluded_lines": []}, "PricingManager.estimate_cost_for_usage_scenario": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [253, 256, 274, 275, 277, 280, 283, 286, 288, 289, 291], "excluded_lines": []}, "PricingManager.get_config_metadata": {"executed_lines": [310], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager.refresh_config": {"executed_lines": [318, 319, 320, 321, 322, 323, 324], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PricingManager.validate_config": {"executed_lines": [332, 334, 335, 336, 339, 340, 341, 342, 345, 346, 347, 349, 350, 351, 352, 354, 355, 356, 357, 358, 362, 367, 368, 369, 371, 372, 373, 374, 375, 383, 384, 386, 388], "summary": {"covered_lines": 33, "num_statements": 34, "percent_covered": 97.05882352941177, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [379], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 28, 50, 75, 115, 158, 166, 218, 241, 304, 312, 326], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"PricingManager": {"executed_lines": [21, 22, 24, 25, 26, 30, 31, 32, 35, 36, 38, 39, 40, 41, 45, 46, 47, 48, 52, 73, 84, 87, 88, 89, 92, 93, 94, 97, 100, 110, 113, 128, 130, 131, 134, 136, 150, 156, 164, 310, 318, 319, 320, 321, 322, 323, 324, 332, 334, 335, 336, 339, 340, 341, 342, 345, 346, 347, 349, 350, 351, 352, 354, 355, 356, 357, 358, 362, 367, 368, 369, 371, 372, 373, 374, 375, 383, 384, 386, 388], "summary": {"covered_lines": 80, "num_statements": 113, "percent_covered": 70.79646017699115, "percent_covered_display": "71", "missing_lines": 33, "excluded_lines": 0}, "missing_lines": [178, 179, 181, 183, 185, 186, 189, 190, 191, 192, 193, 195, 213, 214, 216, 227, 230, 234, 236, 237, 239, 253, 256, 274, 275, 277, 280, 283, 286, 288, 289, 291, 379], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 28, 50, 75, 115, 158, 166, 218, 241, 304, 312, 326], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/logger.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 16, 18, 19, 20, 22, 28, 31, 32, 37, 38, 40, 43, 46, 49, 50, 53, 56, 59, 62, 68, 71, 77, 80, 83, 86, 90, 91, 94, 97, 98, 99, 100, 101, 102, 105, 106, 107, 109, 118, 119, 121, 123, 125, 129, 133, 137, 141, 145, 151, 152, 155, 156, 157, 159, 167, 173, 174, 175, 177, 178, 179, 180, 183, 184, 185, 186, 187, 188, 193, 201, 203, 204, 206, 207, 211, 214, 223, 226, 231, 236, 241, 246, 251, 253, 256, 258, 261, 264, 265], "summary": {"covered_lines": 97, "num_statements": 112, "percent_covered": 86.60714285714286, "percent_covered_display": "87", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [29, 51, 127, 131, 135, 139, 143, 165, 190, 191, 228, 233, 238, 243, 248], "excluded_lines": [], "functions": {"AdversaryLogger.__new__": {"executed_lines": [18, 19, 20], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdversaryLogger.__init__": {"executed_lines": [28, 31, 32, 37, 38, 40, 43, 46, 49, 50], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [29, 51], "excluded_lines": []}, "AdversaryLogger._setup_logging": {"executed_lines": [56, 59, 62, 68, 71, 77, 80, 83, 86, 90, 91, 94, 97, 98, 99, 100, 101, 102, 105, 106, 107], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdversaryLogger.get_logger": {"executed_lines": [118, 119, 121, 123], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdversaryLogger.info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [127], "excluded_lines": []}, "AdversaryLogger.warning": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [131], "excluded_lines": []}, "AdversaryLogger.error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [135], "excluded_lines": []}, "AdversaryLogger.debug": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [139], "excluded_lines": []}, "AdversaryLogger.exception": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [143], "excluded_lines": []}, "AdversaryLogger.set_log_level": {"executed_lines": [151, 152, 155, 156, 157], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AdversaryLogger.get_log_file_path": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [165], "excluded_lines": []}, "AdversaryLogger.get_log_stats": {"executed_lines": [173, 174, 175, 177, 178, 179, 180, 183, 184, 185, 186, 187, 188, 193, 201], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [190, 191], "excluded_lines": []}, "AdversaryLogger.reset_for_tests": {"executed_lines": [206, 207], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_logger": {"executed_lines": [223], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "log_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [228], "excluded_lines": []}, "log_warning": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [233], "excluded_lines": []}, "log_error": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [238], "excluded_lines": []}, "log_debug": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [243], "excluded_lines": []}, "log_exception": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [248], "excluded_lines": []}, "set_log_level": {"executed_lines": [253], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_log_stats": {"executed_lines": [258], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "setup_test_logging": {"executed_lines": [264, 265], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 16, 22, 53, 109, 125, 129, 133, 137, 141, 145, 159, 167, 203, 204, 211, 214, 226, 231, 236, 241, 246, 251, 256, 261], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"AdversaryLogger": {"executed_lines": [18, 19, 20, 28, 31, 32, 37, 38, 40, 43, 46, 49, 50, 56, 59, 62, 68, 71, 77, 80, 83, 86, 90, 91, 94, 97, 98, 99, 100, 101, 102, 105, 106, 107, 118, 119, 121, 123, 151, 152, 155, 156, 157, 173, 174, 175, 177, 178, 179, 180, 183, 184, 185, 186, 187, 188, 193, 201, 206, 207], "summary": {"covered_lines": 60, "num_statements": 70, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [29, 51, 127, 131, 135, 139, 143, 165, 190, 191], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 16, 22, 53, 109, 125, 129, 133, 137, 141, 145, 159, 167, 203, 204, 211, 214, 223, 226, 231, 236, 241, 246, 251, 253, 256, 258, 261, 264, 265], "summary": {"covered_lines": 37, "num_statements": 42, "percent_covered": 88.0952380952381, "percent_covered_display": "88", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [228, 233, 238, 243, 248], "excluded_lines": []}}}, "src/adversary_mcp_server/migration/database_migration.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 19, 20, 22, 28, 34, 35, 37, 39, 48, 50, 61, 63, 64, 65, 66, 67, 70, 71, 74, 75, 78, 79, 82, 83, 85, 92, 95, 96, 98, 101, 105, 107, 108, 110, 112, 114, 115, 116, 119, 120, 121, 122, 125, 126, 127, 128, 130, 132, 134, 136, 137, 139, 143, 149, 152, 153, 154, 155, 158, 160, 161, 164, 165, 172, 179, 180, 181, 185, 186, 190, 191, 194, 195, 202, 210, 212, 216, 217, 218, 220, 222, 224, 227, 250, 252, 254, 258, 260, 262, 264, 266, 267, 269, 270, 272, 274, 279, 283, 285, 292, 300, 302, 306, 312, 315, 316, 320, 321, 322, 324, 325, 328, 329, 333, 334, 336, 345, 347, 351, 352, 354, 357, 358, 361, 362, 364, 373, 376, 377, 379, 385, 390, 392, 394, 396, 402, 403, 404, 411, 413, 415, 416, 419, 422, 426, 431, 434, 436, 445, 446, 447, 448, 449, 450, 453, 454, 455, 456, 457, 460, 461, 463, 466, 470, 474, 477, 529], "summary": {"covered_lines": 177, "num_statements": 243, "percent_covered": 72.8395061728395, "percent_covered_display": "73", "missing_lines": 66, "excluded_lines": 0}, "missing_lines": [87, 88, 89, 90, 173, 174, 175, 176, 205, 206, 207, 208, 228, 230, 231, 233, 245, 246, 247, 294, 295, 297, 298, 317, 318, 340, 341, 342, 343, 407, 409, 427, 428, 429, 432, 492, 493, 494, 497, 499, 500, 501, 503, 504, 507, 510, 511, 514, 515, 517, 518, 519, 521, 522, 524, 525, 526, 530, 533, 534, 536, 537, 538, 539, 541, 542], "excluded_lines": [], "functions": {"DatabaseMigrationManager.__init__": {"executed_lines": [28, 34, 35, 37], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMigrationManager.run_full_migration": {"executed_lines": [48, 50, 61, 63, 64, 65, 66, 67, 70, 71, 74, 75, 78, 79, 82, 83, 85, 92, 95, 96, 98, 101, 105, 107, 108, 110], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [87, 88, 89, 90], "excluded_lines": []}, "DatabaseMigrationManager._create_backup": {"executed_lines": [114, 115, 116, 119, 120, 121, 122, 125, 126, 127, 128, 130], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMigrationManager._copy_directory": {"executed_lines": [134, 136, 137], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMigrationManager._migrate_legacy_sqlite_files": {"executed_lines": [143, 149, 152, 153, 154, 155, 158, 160, 161, 164, 165, 172, 179, 180, 181, 185, 186, 190, 191, 194, 195, 202, 210], "summary": {"covered_lines": 23, "num_statements": 31, "percent_covered": 74.19354838709677, "percent_covered_display": "74", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [173, 174, 175, 176, 205, 206, 207, 208], "excluded_lines": []}, "DatabaseMigrationManager._migrate_cache_metadata": {"executed_lines": [216, 217, 218, 220, 222, 224, 227, 250, 252], "summary": {"covered_lines": 9, "num_statements": 16, "percent_covered": 56.25, "percent_covered_display": "56", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [228, 230, 231, 233, 245, 246, 247], "excluded_lines": []}, "DatabaseMigrationManager._migrate_generic_sqlite": {"executed_lines": [258, 260, 262, 264, 266, 267, 269, 270, 272, 274, 279, 283, 285, 292, 300], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [294, 295, 297, 298], "excluded_lines": []}, "DatabaseMigrationManager._migrate_json_metrics_files": {"executed_lines": [306, 312, 315, 316, 320, 321, 322, 324, 325, 328, 329, 333, 334, 336, 345], "summary": {"covered_lines": 15, "num_statements": 21, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [317, 318, 340, 341, 342, 343], "excluded_lines": []}, "DatabaseMigrationManager._migrate_json_file": {"executed_lines": [351, 352, 354, 357, 358, 361, 362, 364, 373, 376, 377, 379, 385, 390, 392], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMigrationManager._cleanup_old_files": {"executed_lines": [396, 402, 403, 404], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [407, 409], "excluded_lines": []}, "DatabaseMigrationManager._log_migration_summary": {"executed_lines": [413, 415, 416, 419, 422, 426, 431], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [427, 428, 429, 432], "excluded_lines": []}, "DatabaseMigrationManager.check_migration_needed": {"executed_lines": [436, 445, 446, 447, 448, 449, 450, 453, 454, 455, 456, 457, 460, 461, 463, 466, 470, 474], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "run_migration_cli": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 22, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [492, 493, 494, 497, 499, 500, 501, 503, 504, 507, 510, 511, 514, 515, 517, 518, 519, 521, 522, 524, 525, 526], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 19, 20, 22, 39, 112, 132, 139, 212, 254, 302, 347, 394, 411, 434, 477, 529], "summary": {"covered_lines": 26, "num_statements": 35, "percent_covered": 74.28571428571429, "percent_covered_display": "74", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [530, 533, 534, 536, 537, 538, 539, 541, 542], "excluded_lines": []}}, "classes": {"DatabaseMigrationManager": {"executed_lines": [28, 34, 35, 37, 48, 50, 61, 63, 64, 65, 66, 67, 70, 71, 74, 75, 78, 79, 82, 83, 85, 92, 95, 96, 98, 101, 105, 107, 108, 110, 114, 115, 116, 119, 120, 121, 122, 125, 126, 127, 128, 130, 134, 136, 137, 143, 149, 152, 153, 154, 155, 158, 160, 161, 164, 165, 172, 179, 180, 181, 185, 186, 190, 191, 194, 195, 202, 210, 216, 217, 218, 220, 222, 224, 227, 250, 252, 258, 260, 262, 264, 266, 267, 269, 270, 272, 274, 279, 283, 285, 292, 300, 306, 312, 315, 316, 320, 321, 322, 324, 325, 328, 329, 333, 334, 336, 345, 351, 352, 354, 357, 358, 361, 362, 364, 373, 376, 377, 379, 385, 390, 392, 396, 402, 403, 404, 413, 415, 416, 419, 422, 426, 431, 436, 445, 446, 447, 448, 449, 450, 453, 454, 455, 456, 457, 460, 461, 463, 466, 470, 474], "summary": {"covered_lines": 151, "num_statements": 186, "percent_covered": 81.18279569892474, "percent_covered_display": "81", "missing_lines": 35, "excluded_lines": 0}, "missing_lines": [87, 88, 89, 90, 173, 174, 175, 176, 205, 206, 207, 208, 228, 230, 231, 233, 245, 246, 247, 294, 295, 297, 298, 317, 318, 340, 341, 342, 343, 407, 409, 427, 428, 429, 432], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13, 14, 16, 19, 20, 22, 39, 112, 132, 139, 212, 254, 302, 347, 394, 411, 434, 477, 529], "summary": {"covered_lines": 26, "num_statements": 57, "percent_covered": 45.6140350877193, "percent_covered_display": "46", "missing_lines": 31, "excluded_lines": 0}, "missing_lines": [492, 493, 494, 497, 499, 500, 501, 503, 504, 507, 510, 511, 514, 515, 517, 518, 519, 521, 522, 524, 525, 526, 530, 533, 534, 536, 537, 538, 539, 541, 542], "excluded_lines": []}}}, "src/adversary_mcp_server/migration/orchestrator.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 20, 26, 27, 32, 33, 34, 35, 37, 55, 57, 58, 67, 69, 70, 74, 75, 76, 79, 80, 81, 85, 90, 91, 95, 96, 97, 100, 101, 102, 106, 107, 110, 111, 113, 114, 115, 118, 119, 120, 121, 123, 126, 128, 136, 138, 139, 140, 147, 148, 149, 154, 156, 158, 160, 167, 168, 177, 179, 199, 201, 203, 205, 211, 213, 214, 220, 221, 229, 231, 240, 241, 242, 247, 249, 250, 254, 263, 264, 265, 270, 272, 274, 277, 279, 290, 291, 292, 297, 299, 300, 301, 302, 303, 305, 307, 316, 317, 319, 320, 321, 322, 323, 324, 325, 327, 335, 336, 337, 340, 344, 346, 355, 357, 358, 360, 367, 368, 371, 374, 375, 377, 378, 379, 380, 381, 382, 383, 386, 389, 390, 391, 392, 394, 395, 398, 399, 400, 401, 403, 404, 405, 406, 408, 409, 410, 411, 415, 417, 418, 419, 426], "summary": {"covered_lines": 162, "num_statements": 178, "percent_covered": 91.01123595505618, "percent_covered_display": "91", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [86, 87, 129, 130, 131, 132, 133, 134, 161, 192, 193, 194, 206, 445, 446, 448], "excluded_lines": [], "functions": {"MigrationOrchestrator.__init__": {"executed_lines": [26, 27, 32, 33, 34, 35], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MigrationOrchestrator.run_complete_migration": {"executed_lines": [55, 57, 58, 67, 69, 70, 74, 75, 76, 79, 80, 81, 85, 90, 91, 95, 96, 97, 100, 101, 102, 106, 107, 110, 111, 113, 114, 115, 118, 119, 120, 121, 123, 126, 128], "summary": {"covered_lines": 35, "num_statements": 43, "percent_covered": 81.3953488372093, "percent_covered_display": "81", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [86, 87, 129, 130, 131, 132, 133, 134], "excluded_lines": []}, "MigrationOrchestrator._run_pre_migration_health_check": {"executed_lines": [138, 139, 140, 147, 148, 149], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MigrationOrchestrator._run_legacy_migration": {"executed_lines": [156, 158, 160, 167, 168, 177, 179], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [161, 192, 193, 194], "excluded_lines": []}, "MigrationOrchestrator._run_data_consistency_migration": {"executed_lines": [201, 203, 205, 211, 213, 214, 220, 221, 229, 231, 240, 241, 242], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [206], "excluded_lines": []}, "MigrationOrchestrator._install_constraints": {"executed_lines": [249, 250, 254, 263, 264, 265], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MigrationOrchestrator._run_post_migration_validation": {"executed_lines": [272, 274, 277, 279, 290, 291, 292], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MigrationOrchestrator._count_affected_tables": {"executed_lines": [299, 300, 301, 302, 303], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MigrationOrchestrator._generate_migration_summary": {"executed_lines": [307, 316, 317, 319, 320, 321, 322, 323, 324, 325, 327, 335, 336, 337, 340, 344], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MigrationOrchestrator.rollback_migration": {"executed_lines": [355, 357, 358, 360, 367, 368, 371, 374, 375, 377, 378, 379, 380, 381, 382, 383, 386, 389, 390, 391, 392, 394, 395, 398, 399, 400, 401, 403, 404, 405, 406, 408, 409, 410, 411, 415, 417, 418, 419], "summary": {"covered_lines": 39, "num_statements": 39, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "run_complete_migration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [445, 446, 448], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 20, 37, 136, 154, 199, 247, 270, 297, 305, 346, 426], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"MigrationOrchestrator": {"executed_lines": [26, 27, 32, 33, 34, 35, 55, 57, 58, 67, 69, 70, 74, 75, 76, 79, 80, 81, 85, 90, 91, 95, 96, 97, 100, 101, 102, 106, 107, 110, 111, 113, 114, 115, 118, 119, 120, 121, 123, 126, 128, 138, 139, 140, 147, 148, 149, 156, 158, 160, 167, 168, 177, 179, 201, 203, 205, 211, 213, 214, 220, 221, 229, 231, 240, 241, 242, 249, 250, 254, 263, 264, 265, 272, 274, 277, 279, 290, 291, 292, 299, 300, 301, 302, 303, 307, 316, 317, 319, 320, 321, 322, 323, 324, 325, 327, 335, 336, 337, 340, 344, 355, 357, 358, 360, 367, 368, 371, 374, 375, 377, 378, 379, 380, 381, 382, 383, 386, 389, 390, 391, 392, 394, 395, 398, 399, 400, 401, 403, 404, 405, 406, 408, 409, 410, 411, 415, 417, 418, 419], "summary": {"covered_lines": 140, "num_statements": 153, "percent_covered": 91.50326797385621, "percent_covered_display": "92", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [86, 87, 129, 130, 131, 132, 133, 134, 161, 192, 193, 194, 206], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 20, 37, 136, 154, 199, 247, 270, 297, 305, 346, 426], "summary": {"covered_lines": 22, "num_statements": 25, "percent_covered": 88.0, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [445, 446, 448], "excluded_lines": []}}}, "src/adversary_mcp_server/monitoring/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/monitoring/performance_monitor.py": {"executed_lines": [1, 3, 4, 6, 8, 9, 10, 12, 15, 16, 18, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 44, 46, 47, 48, 50, 54, 55, 57, 59, 60, 61, 62, 63, 64, 65, 67, 69, 70, 71, 77, 79, 80, 82, 84, 86, 87, 89, 91, 94, 95, 96, 99, 100, 103, 104, 107, 108, 109, 110, 113, 139, 144, 145, 147, 149, 152, 153, 154, 155, 158, 159, 160, 161, 164, 165, 166, 167, 168, 169, 172, 173, 176, 177, 178, 179, 181, 188, 190, 191, 193, 194, 196, 197, 201, 208, 209, 211, 212, 213, 214, 221, 223, 229, 230, 231, 238, 239, 242, 243, 244, 245, 246, 248, 279, 280, 281, 283, 290, 291, 293, 294, 295, 297, 304, 306, 307, 308, 309, 312, 313, 315, 316, 317, 322, 328, 331, 332, 334, 335, 336, 338, 339, 340, 342, 343, 344, 347, 351, 352, 354], "summary": {"covered_lines": 151, "num_statements": 166, "percent_covered": 90.96385542168674, "percent_covered_display": "91", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [51, 52, 72, 75, 78, 114, 117, 120, 125, 128, 133, 215, 217, 218, 219], "excluded_lines": [], "functions": {"PerformanceMonitor.__init__": {"executed_lines": [29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMonitor.start_monitoring": {"executed_lines": [46, 47, 48, 50, 54, 55], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [51, 52], "excluded_lines": []}, "PerformanceMonitor.stop_monitoring": {"executed_lines": [59, 60, 61, 62, 63, 64, 65], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMonitor._monitoring_loop": {"executed_lines": [69, 70, 71, 77, 79, 80, 82], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [72, 75, 78], "excluded_lines": []}, "PerformanceMonitor._collect_performance_metrics": {"executed_lines": [86, 87, 89, 91, 94, 95, 96, 99, 100, 103, 104, 107, 108, 109, 110, 113, 139, 144, 145], "summary": {"covered_lines": 19, "num_statements": 25, "percent_covered": 76.0, "percent_covered_display": "76", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [114, 117, 120, 125, 128, 133], "excluded_lines": []}, "PerformanceMonitor._check_alerting_thresholds": {"executed_lines": [149, 152, 153, 154, 155, 158, 159, 160, 161, 164, 165, 166, 167, 168, 169, 172, 173, 176, 177, 178, 179], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMonitor._record_alert": {"executed_lines": [188, 190, 191, 193, 194, 196, 197], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMonitor.get_current_metrics": {"executed_lines": [208, 209, 211, 212, 213, 214, 221], "summary": {"covered_lines": 7, "num_statements": 11, "percent_covered": 63.63636363636363, "percent_covered_display": "64", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [215, 217, 218, 219], "excluded_lines": []}, "PerformanceMonitor.get_system_info": {"executed_lines": [229, 230, 231, 238, 239, 242, 243, 244, 245, 246, 248, 279, 280, 281], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMonitor.record_scan_activity": {"executed_lines": [290, 291, 293, 294, 295], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMonitor.record_error": {"executed_lines": [304, 306, 307, 308, 309, 312, 313, 315, 316, 317], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMonitor.get_health_status": {"executed_lines": [328, 331, 332, 334, 335, 336, 338, 339, 340, 342, 343, 344, 347, 351, 352, 354], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 9, 10, 12, 15, 16, 18, 44, 57, 67, 84, 147, 181, 201, 223, 283, 297, 322], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"PerformanceMonitor": {"executed_lines": [29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42, 46, 47, 48, 50, 54, 55, 59, 60, 61, 62, 63, 64, 65, 69, 70, 71, 77, 79, 80, 82, 86, 87, 89, 91, 94, 95, 96, 99, 100, 103, 104, 107, 108, 109, 110, 113, 139, 144, 145, 149, 152, 153, 154, 155, 158, 159, 160, 161, 164, 165, 166, 167, 168, 169, 172, 173, 176, 177, 178, 179, 188, 190, 191, 193, 194, 196, 197, 208, 209, 211, 212, 213, 214, 221, 229, 230, 231, 238, 239, 242, 243, 244, 245, 246, 248, 279, 280, 281, 290, 291, 293, 294, 295, 304, 306, 307, 308, 309, 312, 313, 315, 316, 317, 328, 331, 332, 334, 335, 336, 338, 339, 340, 342, 343, 344, 347, 351, 352, 354], "summary": {"covered_lines": 131, "num_statements": 146, "percent_covered": 89.72602739726027, "percent_covered_display": "90", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [51, 52, 72, 75, 78, 114, 117, 120, 125, 128, 133, 215, 217, 218, 219], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 8, 9, 10, 12, 15, 16, 18, 44, 57, 67, 84, 147, 181, 201, 223, 283, 297, 322], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/monitoring/types.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 18, 19, 20, 22, 23, 24, 25, 26, 27, 29, 31, 40, 41, 43, 53, 54, 55, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 89, 92, 93, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 119, 121, 122, 126, 127, 128, 130, 136, 138, 141, 216, 217, 219, 250, 251, 252, 255, 256, 257, 258, 261, 262, 263, 264, 267, 268, 269, 272, 273, 274, 275, 277, 279, 320, 321, 323, 342, 343, 344, 347, 348, 349, 352, 353, 354, 355, 358, 359, 362, 363, 364, 365], "summary": {"covered_lines": 113, "num_statements": 117, "percent_covered": 96.58119658119658, "percent_covered_display": "97", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [131, 132, 133, 134], "excluded_lines": [], "functions": {"MetricData.to_dict": {"executed_lines": [31], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricData.from_dict": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics.increment_scans": {"executed_lines": [98], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics.increment_successful_scans": {"executed_lines": [102], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics.increment_failed_scans": {"executed_lines": [106], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics.add_scan_time": {"executed_lines": [110], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics.add_findings": {"executed_lines": [114], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics.calculate_derived_metrics": {"executed_lines": [118, 119, 121, 122, 126, 127, 128, 130], "summary": {"covered_lines": 8, "num_statements": 12, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [131, 132, 133, 134], "excluded_lines": []}, "ScanMetrics.to_dict": {"executed_lines": [138, 141], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics.from_dict": {"executed_lines": [219], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMetrics.to_dict": {"executed_lines": [279], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "PerformanceMetrics.from_dict": {"executed_lines": [323], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 18, 19, 20, 22, 23, 24, 25, 26, 27, 29, 40, 41, 53, 54, 55, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 89, 92, 93, 94, 96, 100, 104, 108, 112, 116, 136, 216, 217, 250, 251, 252, 255, 256, 257, 258, 261, 262, 263, 264, 267, 268, 269, 272, 273, 274, 275, 277, 320, 321, 342, 343, 344, 347, 348, 349, 352, 353, 354, 355, 358, 359, 362, 363, 364, 365], "summary": {"covered_lines": 93, "num_statements": 93, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"MetricType": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricData": {"executed_lines": [31, 43], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanMetrics": {"executed_lines": [98, 102, 106, 110, 114, 118, 119, 121, 122, 126, 127, 128, 130, 138, 141, 219], "summary": {"covered_lines": 16, "num_statements": 20, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [131, 132, 133, 134], "excluded_lines": []}, "PerformanceMetrics": {"executed_lines": [279, 323], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MonitoringConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 18, 19, 20, 22, 23, 24, 25, 26, 27, 29, 40, 41, 53, 54, 55, 58, 59, 60, 61, 62, 63, 66, 67, 68, 69, 70, 71, 74, 75, 76, 77, 78, 81, 82, 83, 86, 87, 88, 89, 92, 93, 94, 96, 100, 104, 108, 112, 116, 136, 216, 217, 250, 251, 252, 255, 256, 257, 258, 261, 262, 263, 264, 267, 268, 269, 272, 273, 274, 275, 277, 320, 321, 342, 343, 344, 347, 348, 349, 352, 353, 354, 355, 358, 359, 362, 363, 364, 365], "summary": {"covered_lines": 93, "num_statements": 93, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/monitoring/unified_dashboard.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 13, 14, 15, 17, 18, 19, 20, 22, 25, 26, 28, 39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 56, 58, 61, 62, 65, 68, 71, 74, 75, 78, 79, 82, 84, 96, 97, 100, 102, 103, 105, 106, 110, 113, 115, 116, 119, 120, 121, 122, 123, 125, 137, 138, 139, 142, 145, 147, 149, 150, 153, 154, 156, 157, 158, 160, 161, 162, 167, 168, 169, 170, 172, 174, 176, 177, 179, 181, 182, 184, 185, 187, 188, 189, 191, 192, 193, 194, 196, 197, 200, 202, 204, 205, 207, 209, 210, 212, 213, 215, 218, 219, 220, 223, 224, 228, 233, 234, 238, 243, 244, 245, 246, 251, 252, 253, 256, 262, 264, 265, 267, 269, 270, 272, 273, 274, 276, 277, 280, 282, 284, 285, 287, 289, 290, 301, 302, 303, 310, 311, 316, 317, 319, 322, 323, 326, 327, 329, 330, 332, 333, 334, 335, 339], "summary": {"covered_lines": 161, "num_statements": 165, "percent_covered": 97.57575757575758, "percent_covered_display": "98", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [10, 11, 140, 175], "excluded_lines": [], "functions": {"UnifiedDashboard.__init__": {"executed_lines": [39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedDashboard.display_real_time_dashboard": {"executed_lines": [58, 61, 62, 65, 68, 71, 74, 75, 78, 79, 82], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedDashboard.generate_html_dashboard": {"executed_lines": [96, 97, 100, 102, 103, 105, 106, 110, 113, 115, 116, 119, 120, 121, 122, 123], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedDashboard.export_metrics": {"executed_lines": [137, 138, 139, 142, 145], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [140], "excluded_lines": []}, "UnifiedDashboard._display_system_overview": {"executed_lines": [149, 150, 153, 154, 156, 157, 158, 160, 161, 162, 167, 168, 169, 170, 172, 174, 176, 177], "summary": {"covered_lines": 18, "num_statements": 19, "percent_covered": 94.73684210526316, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [175], "excluded_lines": []}, "UnifiedDashboard._display_metrics_overview": {"executed_lines": [181, 182, 184, 185, 187, 188, 189, 191, 192, 193, 194, 196, 197, 200, 202, 204, 205], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedDashboard._display_telemetry_overview": {"executed_lines": [209, 210, 212, 213, 215, 218, 219, 220, 223, 224, 228, 233, 234, 238, 243, 244, 245, 246, 251, 252, 253, 256, 262, 264, 265], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedDashboard._display_performance_metrics": {"executed_lines": [269, 270, 272, 273, 274, 276, 277, 280, 282, 284, 285], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedDashboard._export_json_metrics": {"executed_lines": [289, 290, 301, 302, 303, 310, 311, 316, 317, 319, 322, 323, 326, 327, 329, 330, 332, 333, 334, 335], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 13, 14, 15, 17, 18, 19, 20, 22, 25, 26, 28, 56, 84, 125, 147, 179, 207, 267, 287, 339], "summary": {"covered_lines": 25, "num_statements": 27, "percent_covered": 92.5925925925926, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [10, 11], "excluded_lines": []}}, "classes": {"UnifiedDashboard": {"executed_lines": [39, 40, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 58, 61, 62, 65, 68, 71, 74, 75, 78, 79, 82, 96, 97, 100, 102, 103, 105, 106, 110, 113, 115, 116, 119, 120, 121, 122, 123, 137, 138, 139, 142, 145, 149, 150, 153, 154, 156, 157, 158, 160, 161, 162, 167, 168, 169, 170, 172, 174, 176, 177, 181, 182, 184, 185, 187, 188, 189, 191, 192, 193, 194, 196, 197, 200, 202, 204, 205, 209, 210, 212, 213, 215, 218, 219, 220, 223, 224, 228, 233, 234, 238, 243, 244, 245, 246, 251, 252, 253, 256, 262, 264, 265, 269, 270, 272, 273, 274, 276, 277, 280, 282, 284, 285, 289, 290, 301, 302, 303, 310, 311, 316, 317, 319, 322, 323, 326, 327, 329, 330, 332, 333, 334, 335], "summary": {"covered_lines": 136, "num_statements": 138, "percent_covered": 98.55072463768116, "percent_covered_display": "99", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [140, 175], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 13, 14, 15, 17, 18, 19, 20, 22, 25, 26, 28, 56, 84, 125, 147, 179, 207, 267, 287, 339], "summary": {"covered_lines": 25, "num_statements": 27, "percent_covered": 92.5925925925926, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [10, 11], "excluded_lines": []}}}, "src/adversary_mcp_server/monitoring/unified_metrics_collector.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 30, 33, 34, 35, 36, 39, 40, 42, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 64, 67, 69, 71, 72, 73, 75, 79, 81, 83, 84, 85, 86, 87, 88, 89, 91, 100, 101, 103, 104, 107, 114, 117, 118, 120, 121, 122, 127, 134, 135, 139, 147, 149, 154, 155, 156, 157, 160, 161, 162, 163, 169, 170, 172, 174, 175, 177, 181, 182, 183, 184, 186, 187, 188, 190, 202, 204, 205, 206, 208, 209, 212, 217, 219, 221, 222, 224, 226, 228, 230, 231, 232, 233, 240, 242, 244, 246, 248, 249, 251, 252, 253, 254, 255, 257, 259, 260, 262, 263, 265, 267, 268, 286, 287, 288, 289, 292, 293, 294, 296, 297, 299, 300, 301, 303, 305, 306, 310, 311, 313, 315, 316, 319, 321, 322, 323, 324, 325, 327, 329, 331, 333, 334, 335, 340, 347, 349, 358, 368, 371, 376, 377, 382, 383, 388, 390, 393, 394, 395, 396, 397, 399, 400, 407, 409, 416, 418, 419, 430, 431, 432, 433, 434, 444, 445, 446, 447, 451], "summary": {"covered_lines": 196, "num_statements": 205, "percent_covered": 95.60975609756098, "percent_covered_display": "96", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [76, 77, 356, 411, 412, 413, 414, 441, 442], "excluded_lines": [], "functions": {"UnifiedMetricsCollector.__init__": {"executed_lines": [30, 33, 34, 35, 36, 39, 40, 42, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 64, 67], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.start_collection": {"executed_lines": [71, 72, 73, 75, 79], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [76, 77], "excluded_lines": []}, "UnifiedMetricsCollector.stop_collection": {"executed_lines": [83, 84, 85, 86, 87, 88, 89], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.record_metric": {"executed_lines": [100, 101, 103, 104, 107, 114, 117, 118, 120, 121, 122, 127, 134, 135], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.record_histogram": {"executed_lines": [147], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.record_cache_operation": {"executed_lines": [154, 155, 156, 157, 160, 161, 162, 163, 169, 170], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.record_scan_start": {"executed_lines": [174, 175], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.record_scan_complete": {"executed_lines": [181, 182, 183, 184, 186, 187, 188], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.record_scan_completion": {"executed_lines": [202, 204, 205, 206, 208, 209, 212, 217, 219, 221, 222, 224], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.get_metrics": {"executed_lines": [228, 230, 231, 232, 233, 240], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.get_scan_metrics": {"executed_lines": [244], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.get_telemetry_data": {"executed_lines": [248, 249, 251, 252, 253, 254, 255], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.export_metrics": {"executed_lines": [259, 260, 262, 263], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector._export_json": {"executed_lines": [267, 268, 286, 287, 288, 289, 292, 293, 294, 296, 297, 299, 300, 301], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector._collection_loop": {"executed_lines": [305, 306, 310, 311, 313, 315, 316, 319, 321, 322, 323, 324, 325], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector._cleanup_old_metrics": {"executed_lines": [329, 331, 333, 334, 335], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.increment_counter": {"executed_lines": [347], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.set_gauge": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [356], "excluded_lines": []}, "UnifiedMetricsCollector.record_llm_request": {"executed_lines": [368, 371, 376, 377, 382, 383, 388], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.time_operation": {"executed_lines": [393, 394, 407], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.time_operation.timer": {"executed_lines": [395, 396, 397, 399, 400], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "UnifiedMetricsCollector.get_current_metrics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [411, 412, 413, 414], "excluded_lines": []}, "UnifiedMetricsCollector.get_summary": {"executed_lines": [418, 419, 430, 431, 432, 433, 434, 444, 445, 446, 447], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [441, 442], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 69, 81, 91, 139, 149, 172, 177, 190, 226, 242, 246, 257, 265, 303, 327, 340, 349, 358, 390, 409, 416, 451], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"UnifiedMetricsCollector": {"executed_lines": [30, 33, 34, 35, 36, 39, 40, 42, 44, 47, 48, 49, 50, 51, 54, 55, 56, 57, 60, 61, 62, 64, 67, 71, 72, 73, 75, 79, 83, 84, 85, 86, 87, 88, 89, 100, 101, 103, 104, 107, 114, 117, 118, 120, 121, 122, 127, 134, 135, 147, 154, 155, 156, 157, 160, 161, 162, 163, 169, 170, 174, 175, 181, 182, 183, 184, 186, 187, 188, 202, 204, 205, 206, 208, 209, 212, 217, 219, 221, 222, 224, 228, 230, 231, 232, 233, 240, 244, 248, 249, 251, 252, 253, 254, 255, 259, 260, 262, 263, 267, 268, 286, 287, 288, 289, 292, 293, 294, 296, 297, 299, 300, 301, 305, 306, 310, 311, 313, 315, 316, 319, 321, 322, 323, 324, 325, 329, 331, 333, 334, 335, 347, 368, 371, 376, 377, 382, 383, 388, 393, 394, 395, 396, 397, 399, 400, 407, 418, 419, 430, 431, 432, 433, 434, 444, 445, 446, 447], "summary": {"covered_lines": 158, "num_statements": 167, "percent_covered": 94.61077844311377, "percent_covered_display": "95", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [76, 77, 356, 411, 412, 413, 414, 441, 442], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 69, 81, 91, 139, 149, 172, 177, 190, 226, 242, 246, 257, 265, 303, 327, 340, 349, 358, 390, 409, 416, 451], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/resilience/__init__.py": {"executed_lines": [1, 3, 4, 5, 6, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 6, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 6, 8], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/resilience/circuit_breaker.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 14, 15, 17, 18, 19, 20, 25, 26, 28, 36, 37, 38, 39, 40, 42, 46, 61, 65, 67, 69, 70, 73, 80, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 95, 97, 98, 101, 102, 104, 106, 108, 110, 114, 116, 120, 122, 128, 130, 131, 132, 135, 136, 145, 151, 153, 154, 156, 160, 164, 165, 166, 169, 190, 192, 193, 195, 196, 198, 200, 202, 203, 204, 205, 208, 224, 226, 228, 229, 230, 232, 233, 236, 247, 249, 251, 252, 253, 255, 258, 274, 276, 280, 284, 288, 292, 294, 295, 298, 300, 306, 313, 314, 316, 323, 324, 325, 326, 328, 337, 338, 340, 341, 346, 347, 353, 355, 366, 372, 374], "summary": {"covered_lines": 123, "num_statements": 149, "percent_covered": 82.5503355704698, "percent_covered_display": "83", "missing_lines": 26, "excluded_lines": 0}, "missing_lines": [63, 74, 118, 126, 170, 179, 184, 209, 218, 237, 259, 268, 278, 282, 286, 290, 302, 303, 304, 308, 309, 310, 361, 368, 369, 370], "excluded_lines": [], "functions": {"CircuitBreakerError.__init__": {"executed_lines": [18, 19, 20], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreaker.__init__": {"executed_lines": [36, 37, 38, 39, 40, 42], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreaker.call": {"executed_lines": [61, 65, 67, 69, 70, 73, 80, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [63, 74], "excluded_lines": []}, "CircuitBreaker._execute_function": {"executed_lines": [97, 98, 101, 102], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreaker._update_state": {"executed_lines": [106, 108, 110, 114, 116, 120, 122], "summary": {"covered_lines": 7, "num_statements": 9, "percent_covered": 77.77777777777777, "percent_covered_display": "78", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [118, 126], "excluded_lines": []}, "CircuitBreaker._record_success": {"executed_lines": [130, 131, 132, 135, 136, 145, 151, 153, 154, 156], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreaker._record_failure": {"executed_lines": [164, 165, 166, 169, 190, 192, 193, 195, 196, 198], "summary": {"covered_lines": 10, "num_statements": 13, "percent_covered": 76.92307692307692, "percent_covered_display": "77", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [170, 179, 184], "excluded_lines": []}, "CircuitBreaker._transition_to_open": {"executed_lines": [202, 203, 204, 205, 208, 224], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [209, 218], "excluded_lines": []}, "CircuitBreaker._transition_to_half_open": {"executed_lines": [228, 229, 230, 232, 233, 236, 247], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [237], "excluded_lines": []}, "CircuitBreaker._transition_to_closed": {"executed_lines": [251, 252, 253, 255, 258, 274], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [259, 268], "excluded_lines": []}, "CircuitBreaker.get_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [278], "excluded_lines": []}, "CircuitBreaker.is_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [282], "excluded_lines": []}, "CircuitBreaker.is_half_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [286], "excluded_lines": []}, "CircuitBreaker.is_closed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [290], "excluded_lines": []}, "CircuitBreaker.reset": {"executed_lines": [294, 295, 298], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreaker.force_open": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [302, 303, 304], "excluded_lines": []}, "CircuitBreaker.force_closed": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [308, 309, 310], "excluded_lines": []}, "CircuitBreakerRegistry.__init__": {"executed_lines": [323, 324, 325, 326], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerRegistry.get_breaker": {"executed_lines": [337, 338, 340, 341, 346, 347, 353], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerRegistry.get_all_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [361], "excluded_lines": []}, "CircuitBreakerRegistry.reset_all": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [368, 369, 370], "excluded_lines": []}, "CircuitBreakerRegistry.get_breaker_count": {"executed_lines": [374], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 14, 15, 17, 25, 26, 28, 46, 95, 104, 128, 160, 200, 226, 249, 276, 280, 284, 288, 292, 300, 306, 313, 314, 316, 328, 355, 366, 372], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"CircuitBreakerError": {"executed_lines": [18, 19, 20], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreaker": {"executed_lines": [36, 37, 38, 39, 40, 42, 61, 65, 67, 69, 70, 73, 80, 83, 84, 85, 86, 87, 88, 90, 91, 92, 93, 97, 98, 101, 102, 106, 108, 110, 114, 116, 120, 122, 130, 131, 132, 135, 136, 145, 151, 153, 154, 156, 164, 165, 166, 169, 190, 192, 193, 195, 196, 198, 202, 203, 204, 205, 208, 224, 228, 229, 230, 232, 233, 236, 247, 251, 252, 253, 255, 258, 274, 294, 295, 298], "summary": {"covered_lines": 76, "num_statements": 98, "percent_covered": 77.55102040816327, "percent_covered_display": "78", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [63, 74, 118, 126, 170, 179, 184, 209, 218, 237, 259, 268, 278, 282, 286, 290, 302, 303, 304, 308, 309, 310], "excluded_lines": []}, "CircuitBreakerRegistry": {"executed_lines": [323, 324, 325, 326, 337, 338, 340, 341, 346, 347, 353, 374], "summary": {"covered_lines": 12, "num_statements": 16, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [361, 368, 369, 370], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 11, 14, 15, 17, 25, 26, 28, 46, 95, 104, 128, 160, 200, 226, 249, 276, 280, 284, 288, 292, 300, 306, 313, 314, 316, 328, 355, 366, 372], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/resilience/error_handler.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 20, 23, 24, 26, 43, 44, 45, 46, 47, 50, 51, 53, 60, 61, 62, 63, 64, 67, 69, 71, 73, 117, 123, 124, 128, 146, 170, 171, 174, 175, 182, 183, 187, 189, 190, 192, 195, 198, 199, 204, 210, 217, 219, 222, 229, 233, 235, 248, 260, 280, 281, 282, 285, 289, 310, 312, 341, 344, 345, 349, 354, 355, 413, 427, 431, 432, 435, 444, 452, 454, 455, 465, 469, 473, 475, 476, 486, 488, 498, 506, 507, 508, 512, 520, 521, 522, 530, 561, 563, 564, 567, 568, 570, 574, 581, 583, 587, 592, 594], "summary": {"covered_lines": 105, "num_statements": 146, "percent_covered": 71.91780821917808, "percent_covered_display": "72", "missing_lines": 41, "excluded_lines": 0}, "missing_lines": [137, 138, 141, 144, 223, 236, 237, 297, 298, 301, 346, 347, 368, 369, 378, 380, 381, 384, 386, 393, 394, 398, 399, 402, 411, 471, 499, 540, 542, 545, 546, 547, 550, 553, 575, 576, 577, 578, 585, 589, 590], "excluded_lines": [], "functions": {"ErrorRecoveryStrategy.__init__": {"executed_lines": [43, 44, 45, 46, 47], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorHandler.__init__": {"executed_lines": [60, 61, 62, 63, 64, 67, 69], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorHandler._setup_default_strategies": {"executed_lines": [73], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorHandler.register_strategy": {"executed_lines": [123, 124], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorHandler.register_fallback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [137, 138, 141, 144], "excluded_lines": []}, "ErrorHandler.execute_with_recovery": {"executed_lines": [170, 171, 174, 175, 182, 183, 187, 189, 190, 192, 195, 198, 199, 204, 210, 217, 219, 222, 229, 233, 235, 248], "summary": {"covered_lines": 22, "num_statements": 25, "percent_covered": 88.0, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [223, 236, 237], "excluded_lines": []}, "ErrorHandler._handle_circuit_breaker_error": {"executed_lines": [280, 281, 282, 285, 289, 310], "summary": {"covered_lines": 6, "num_statements": 9, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [297, 298, 301], "excluded_lines": []}, "ErrorHandler._handle_error_with_strategy": {"executed_lines": [341, 344, 345, 349, 354, 355], "summary": {"covered_lines": 6, "num_statements": 21, "percent_covered": 28.571428571428573, "percent_covered_display": "29", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [346, 347, 368, 369, 378, 380, 381, 384, 386, 393, 394, 398, 399, 402, 411], "excluded_lines": []}, "ErrorHandler._handle_retry_recovery": {"executed_lines": [427, 431, 435, 444, 452, 454, 455, 465, 469, 473, 475, 476, 486], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [471], "excluded_lines": []}, "ErrorHandler._handle_retry_recovery.protected_func": {"executed_lines": [432], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorHandler._handle_fallback_recovery": {"executed_lines": [498, 506, 507, 508, 512, 520, 521, 522], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [499], "excluded_lines": []}, "ErrorHandler._handle_degraded_recovery": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [540, 542, 545, 546, 547, 550, 553], "excluded_lines": []}, "ErrorHandler._execute_function": {"executed_lines": [563, 564, 567, 568], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorHandler._classify_error": {"executed_lines": [574, 581], "summary": {"covered_lines": 2, "num_statements": 6, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [575, 576, 577, 578], "excluded_lines": []}, "ErrorHandler.get_circuit_breaker_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [585], "excluded_lines": []}, "ErrorHandler.reset_all_circuit_breakers": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [589, 590], "excluded_lines": []}, "ErrorHandler.get_recovery_strategies": {"executed_lines": [594], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 20, 23, 24, 26, 50, 51, 53, 71, 117, 128, 146, 260, 312, 413, 488, 530, 561, 570, 583, 587, 592], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ErrorRecoveryStrategy": {"executed_lines": [43, 44, 45, 46, 47], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorHandler": {"executed_lines": [60, 61, 62, 63, 64, 67, 69, 73, 123, 124, 170, 171, 174, 175, 182, 183, 187, 189, 190, 192, 195, 198, 199, 204, 210, 217, 219, 222, 229, 233, 235, 248, 280, 281, 282, 285, 289, 310, 341, 344, 345, 349, 354, 355, 427, 431, 432, 435, 444, 452, 454, 455, 465, 469, 473, 475, 476, 486, 498, 506, 507, 508, 512, 520, 521, 522, 563, 564, 567, 568, 574, 581, 594], "summary": {"covered_lines": 73, "num_statements": 114, "percent_covered": 64.03508771929825, "percent_covered_display": "64", "missing_lines": 41, "excluded_lines": 0}, "missing_lines": [137, 138, 141, 144, 223, 236, 237, 297, 298, 301, 346, 347, 368, 369, 378, 380, 381, 384, 386, 393, 394, 398, 399, 402, 411, 471, 499, 540, 542, 545, 546, 547, 550, 553, 575, 576, 577, 578, 585, 589, 590], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 20, 23, 24, 26, 50, 51, 53, 71, 117, 128, 146, 260, 312, 413, 488, 530, 561, 570, 583, 587, 592], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/resilience/retry_manager.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 17, 20, 21, 23, 24, 25, 26, 27, 32, 33, 35, 42, 43, 44, 48, 73, 75, 77, 78, 81, 88, 89, 90, 93, 94, 95, 98, 114, 115, 117, 119, 120, 121, 124, 137, 147, 148, 151, 154, 161, 162, 167, 177, 180, 198, 204, 206, 207, 210, 211, 213, 225, 232, 233, 236, 240, 243, 246, 249, 255, 259, 262, 269, 270, 273, 280, 286, 288, 301, 309, 313, 319, 322, 326, 330, 331, 337, 347, 350, 351, 353, 354, 356, 357, 361, 363, 367, 369, 370, 381, 382, 384, 386, 387, 388, 391, 393, 395], "summary": {"covered_lines": 102, "num_statements": 129, "percent_covered": 79.06976744186046, "percent_covered_display": "79", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [82, 99, 108, 125, 155, 158, 168, 181, 182, 192, 226, 227, 228, 229, 252, 266, 277, 284, 306, 310, 323, 327, 335, 348, 376, 415, 417], "excluded_lines": [], "functions": {"RetryExhaustedException.__init__": {"executed_lines": [24, 25, 26, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RetryManager.__init__": {"executed_lines": [42, 43, 44], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RetryManager.execute_with_retry": {"executed_lines": [73, 75, 77, 78, 81, 88, 89, 90, 93, 94, 95, 98, 114, 115, 117, 119, 120, 121, 124, 137, 147, 148, 151, 154, 161, 162, 167, 177, 180, 198], "summary": {"covered_lines": 30, "num_statements": 40, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [82, 99, 108, 125, 155, 158, 168, 181, 182, 192], "excluded_lines": []}, "RetryManager._execute_function": {"executed_lines": [206, 207, 210, 211], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RetryManager._classify_error": {"executed_lines": [225, 232, 233, 236, 240, 243, 246, 249, 255, 259, 262, 269, 270, 273, 280, 286], "summary": {"covered_lines": 16, "num_statements": 24, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [226, 227, 228, 229, 252, 266, 277, 284], "excluded_lines": []}, "RetryManager._should_retry": {"executed_lines": [301, 309, 313, 319, 322, 326, 330, 331], "summary": {"covered_lines": 8, "num_statements": 13, "percent_covered": 61.53846153846154, "percent_covered_display": "62", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [306, 310, 323, 327, 335], "excluded_lines": []}, "RetryManager._calculate_delay": {"executed_lines": [347, 350, 351, 353, 354, 356, 357, 361, 363, 367, 369, 370, 381, 382, 384, 386, 387, 388, 391, 393], "summary": {"covered_lines": 20, "num_statements": 22, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [348, 376], "excluded_lines": []}, "RetryManager.create_recovery_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [415, 417], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 17, 20, 21, 23, 32, 33, 35, 48, 204, 213, 288, 337, 395], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"RetryExhaustedException": {"executed_lines": [24, 25, 26, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RetryManager": {"executed_lines": [42, 43, 44, 73, 75, 77, 78, 81, 88, 89, 90, 93, 94, 95, 98, 114, 115, 117, 119, 120, 121, 124, 137, 147, 148, 151, 154, 161, 162, 167, 177, 180, 198, 206, 207, 210, 211, 225, 232, 233, 236, 240, 243, 246, 249, 255, 259, 262, 269, 270, 273, 280, 286, 301, 309, 313, 319, 322, 326, 330, 331, 347, 350, 351, 353, 354, 356, 357, 361, 363, 367, 369, 370, 381, 382, 384, 386, 387, 388, 391, 393], "summary": {"covered_lines": 81, "num_statements": 108, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 27, "excluded_lines": 0}, "missing_lines": [82, 99, 108, 125, 155, 158, 168, 181, 182, 192, 226, 227, 228, 229, 252, 266, 277, 284, 306, 310, 323, 327, 335, 348, 376, 415, 417], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 17, 20, 21, 23, 32, 33, 35, 48, 204, 213, 288, 337, 395], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/resilience/types.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 36, 37, 39, 40, 41, 42, 43, 46, 47, 49, 50, 51, 54, 55, 56, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 73, 74, 77, 78, 79, 82, 83, 84, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 99, 100, 104, 105, 107, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 140, 142, 144, 145, 147, 149, 151, 152, 154, 156, 158, 173, 174, 175], "summary": {"covered_lines": 103, "num_statements": 106, "percent_covered": 97.16981132075472, "percent_covered_display": "97", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [102, 141, 148], "excluded_lines": [], "functions": {"ErrorContext.duration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [102], "excluded_lines": []}, "ErrorContext.is_final_attempt": {"executed_lines": [107], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerStats.failure_rate": {"executed_lines": [140, 142], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [141], "excluded_lines": []}, "CircuitBreakerStats.time_since_last_failure": {"executed_lines": [147, 149], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [148], "excluded_lines": []}, "CircuitBreakerStats.time_in_current_state": {"executed_lines": [154], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerStats.to_dict": {"executed_lines": [158], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 36, 37, 39, 40, 41, 42, 43, 46, 47, 49, 50, 51, 54, 55, 56, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 73, 74, 77, 78, 79, 82, 83, 84, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 99, 100, 104, 105, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 144, 145, 151, 152, 156, 173, 174, 175], "summary": {"covered_lines": 96, "num_statements": 96, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ErrorCategory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RecoveryAction": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "RetryStrategy": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ResilienceConfig": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ErrorContext": {"executed_lines": [107], "summary": {"covered_lines": 1, "num_statements": 2, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [102], "excluded_lines": []}, "RecoveryResult": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CircuitBreakerStats": {"executed_lines": [140, 142, 147, 149, 154, 158], "summary": {"covered_lines": 6, "num_statements": 8, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [141, 148], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 25, 26, 28, 29, 30, 31, 32, 33, 36, 37, 39, 40, 41, 42, 43, 46, 47, 49, 50, 51, 54, 55, 56, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 73, 74, 77, 78, 79, 82, 83, 84, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 99, 100, 104, 105, 110, 111, 112, 114, 115, 116, 117, 118, 119, 120, 121, 124, 125, 126, 128, 129, 130, 131, 132, 133, 134, 135, 137, 138, 144, 145, 151, 152, 156, 173, 174, 175], "summary": {"covered_lines": 96, "num_statements": 96, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/__init__.py": {"executed_lines": [0], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/diff_scanner.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 20, 23, 24, 26, 34, 35, 36, 37, 38, 39, 40, 41, 43, 48, 50, 51, 52, 53, 54, 55, 57, 59, 61, 66, 69, 70, 73, 74, 76, 77, 78, 80, 86, 87, 89, 92, 93, 95, 96, 99, 100, 102, 103, 104, 106, 108, 111, 112, 113, 116, 117, 119, 120, 121, 122, 125, 126, 128, 137, 138, 140, 141, 142, 143, 144, 146, 147, 149, 151, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164, 166, 169, 170, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 196, 197, 201, 202, 203, 204, 208, 211, 212, 214, 227, 228, 229, 230, 231, 232, 235, 247, 249, 250, 251, 253, 268, 269, 270, 271, 274, 275, 276, 283, 284, 290, 291, 297, 298, 300, 303, 305, 306, 307, 308, 313, 314, 315, 317, 319, 326, 327, 328, 331, 332, 340, 348, 352, 353, 355, 356, 359, 377, 379, 406, 419, 421, 423, 424, 427, 430, 431, 434, 436, 438, 439, 440, 442, 451, 453, 454, 455, 457, 473, 474, 477, 478, 485, 488, 489, 490, 492, 493, 498, 499, 500, 505, 507, 509, 512, 513, 514, 515, 518, 548, 549, 551, 580, 581, 582, 588, 589, 602, 603, 607, 608, 611, 620, 622, 623, 625, 626, 627, 628, 630, 631, 632, 635, 637, 640, 641, 642, 644, 645, 646, 651, 652, 653, 654, 655, 656, 661, 664, 665, 666, 668, 669, 670, 671, 673, 676, 677, 679, 680, 681, 691, 692, 694, 695, 696, 697, 698, 701, 703, 704, 705, 706, 708, 713, 714, 715, 716, 717, 720, 721, 723, 728, 731, 734, 735, 740, 741, 742, 746, 752, 754, 766, 769, 771, 784, 797, 799, 800, 804, 805, 807, 808, 809, 810, 812, 814, 816, 817, 819, 820, 821, 823, 834, 839, 841, 842, 843], "summary": {"covered_lines": 316, "num_statements": 338, "percent_covered": 93.49112426035504, "percent_covered_display": "93", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [309, 310, 360, 368, 380, 383, 384, 392, 401, 402, 519, 520, 521, 527, 532, 535, 538, 541, 544, 612, 613, 618], "excluded_lines": [], "functions": {"DiffChunk.__init__": {"executed_lines": [34, 35, 36, 37, 38, 39, 40, 41, 43], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DiffChunk.add_line": {"executed_lines": [50, 51, 52, 53, 54, 55, 57], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DiffChunk.get_changed_code": {"executed_lines": [61, 66, 69, 70, 73, 74, 76, 77, 78], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DiffChunk.get_added_lines_with_minimal_context": {"executed_lines": [86, 87, 89, 92, 93, 95, 96, 99, 100, 102, 103, 104], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DiffChunk.get_added_lines_only": {"executed_lines": [108, 111, 112, 113], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffParser.__init__": {"executed_lines": [120, 121, 122, 125, 126], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffParser.parse_diff": {"executed_lines": [137, 138, 140, 141, 142, 143, 144, 146, 147, 149, 151, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164, 166, 169, 170, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 196, 197, 201, 202, 203, 204, 208], "summary": {"covered_lines": 49, "num_statements": 49, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffScanner.__init__": {"executed_lines": [227, 228, 229, 230, 231, 232, 235, 247, 249, 250, 251], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffScanner._run_git_command": {"executed_lines": [268, 269, 270, 271, 274, 275, 276, 283, 313, 317, 319, 326, 327, 328, 331, 332, 340, 348, 352, 353, 355, 356, 359, 377, 379], "summary": {"covered_lines": 25, "num_statements": 33, "percent_covered": 75.75757575757575, "percent_covered_display": "76", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [360, 368, 380, 383, 384, 392, 401, 402], "excluded_lines": []}, "GitDiffScanner._run_git_command.git_operation": {"executed_lines": [284, 290, 291, 297, 298, 300, 303, 305, 306, 307, 308], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [309, 310], "excluded_lines": []}, "GitDiffScanner._run_git_command.git_fallback": {"executed_lines": [314, 315], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffScanner._validate_branches": {"executed_lines": [419, 421, 423, 424, 427, 430, 431, 434, 436, 438, 439, 440], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffScanner._detect_language_from_path": {"executed_lines": [451, 453, 454, 455], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffScanner.get_diff_changes": {"executed_lines": [473, 474, 477, 478, 485, 488, 489, 490, 492, 493, 498, 499, 500, 505, 507, 509, 512, 513, 514, 515, 518, 548, 549], "summary": {"covered_lines": 23, "num_statements": 32, "percent_covered": 71.875, "percent_covered_display": "72", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [519, 520, 521, 527, 532, 535, 538, 541, 544], "excluded_lines": []}, "GitDiffScanner.scan_diff": {"executed_lines": [580, 581, 582, 588, 589, 602, 603, 607, 608, 611, 620, 622, 623, 625, 626, 627, 628, 630, 631, 632, 635, 637, 640, 641, 642, 644, 645, 646, 651, 652, 653, 654, 655, 656, 661, 664, 665, 666, 668, 669, 670, 671, 673, 676, 677, 679, 680, 681, 691, 692, 694, 695, 696, 697, 698, 701, 703, 704, 705, 706, 708, 713, 714, 715, 716, 717, 720, 721, 723, 728, 731, 734, 735, 740, 741, 742, 746, 752], "summary": {"covered_lines": 78, "num_statements": 81, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [612, 613, 618], "excluded_lines": []}, "GitDiffScanner.scan_diff_sync": {"executed_lines": [766, 769, 771], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffScanner.get_diff_summary": {"executed_lines": [797, 799, 800, 804, 805, 807, 808, 809, 810, 812, 814, 816, 817, 819, 820, 821, 823, 834, 839, 841, 842, 843], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 20, 23, 24, 26, 48, 59, 80, 106, 116, 117, 119, 128, 211, 212, 214, 253, 406, 442, 457, 551, 754, 784], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"GitDiffError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DiffChunk": {"executed_lines": [34, 35, 36, 37, 38, 39, 40, 41, 43, 50, 51, 52, 53, 54, 55, 57, 61, 66, 69, 70, 73, 74, 76, 77, 78, 86, 87, 89, 92, 93, 95, 96, 99, 100, 102, 103, 104, 108, 111, 112, 113], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffParser": {"executed_lines": [120, 121, 122, 125, 126, 137, 138, 140, 141, 142, 143, 144, 146, 147, 149, 151, 152, 153, 154, 155, 156, 159, 160, 161, 162, 163, 164, 166, 169, 170, 175, 176, 177, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 196, 197, 201, 202, 203, 204, 208], "summary": {"covered_lines": 54, "num_statements": 54, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "GitDiffScanner": {"executed_lines": [227, 228, 229, 230, 231, 232, 235, 247, 249, 250, 251, 268, 269, 270, 271, 274, 275, 276, 283, 284, 290, 291, 297, 298, 300, 303, 305, 306, 307, 308, 313, 314, 315, 317, 319, 326, 327, 328, 331, 332, 340, 348, 352, 353, 355, 356, 359, 377, 379, 419, 421, 423, 424, 427, 430, 431, 434, 436, 438, 439, 440, 451, 453, 454, 455, 473, 474, 477, 478, 485, 488, 489, 490, 492, 493, 498, 499, 500, 505, 507, 509, 512, 513, 514, 515, 518, 548, 549, 580, 581, 582, 588, 589, 602, 603, 607, 608, 611, 620, 622, 623, 625, 626, 627, 628, 630, 631, 632, 635, 637, 640, 641, 642, 644, 645, 646, 651, 652, 653, 654, 655, 656, 661, 664, 665, 666, 668, 669, 670, 671, 673, 676, 677, 679, 680, 681, 691, 692, 694, 695, 696, 697, 698, 701, 703, 704, 705, 706, 708, 713, 714, 715, 716, 717, 720, 721, 723, 728, 731, 734, 735, 740, 741, 742, 746, 752, 766, 769, 771, 797, 799, 800, 804, 805, 807, 808, 809, 810, 812, 814, 816, 817, 819, 820, 821, 823, 834, 839, 841, 842, 843], "summary": {"covered_lines": 191, "num_statements": 213, "percent_covered": 89.67136150234742, "percent_covered_display": "90", "missing_lines": 22, "excluded_lines": 0}, "missing_lines": [309, 310, 360, 368, 380, 383, 384, 392, 401, 402, 519, 520, 521, 527, 532, 535, 538, 541, 544, 612, 613, 618], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 17, 18, 20, 23, 24, 26, 48, 59, 80, 106, 116, 117, 119, 128, 211, 212, 214, 253, 406, 442, 457, 551, 754, 784], "summary": {"covered_lines": 30, "num_statements": 30, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/exploit_generator.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 15, 16, 18, 21, 22, 23, 25, 26, 27, 29, 30, 31, 34, 35, 36, 38, 39, 40, 41, 43, 56, 57, 59, 60, 74, 78, 87, 88, 89, 90, 92, 102, 105, 108, 111, 116, 117, 121, 124, 125, 127, 132, 135, 137, 143, 146, 171, 193, 214, 216, 228, 231, 232, 233, 234, 235, 237, 239, 248, 253, 255, 262, 265, 266, 268, 274, 276, 285, 286, 288, 295, 308, 314, 333, 342, 344, 376, 378, 388, 391, 392, 393, 396, 399, 402, 403, 405, 411, 412, 413, 414, 417, 419, 432, 435, 439, 440, 446, 447, 450, 454, 456, 471, 493, 505, 507, 514, 516, 522, 524, 533, 543, 552, 559], "summary": {"covered_lines": 115, "num_statements": 127, "percent_covered": 90.55118110236221, "percent_covered_display": "91", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [45, 305, 306, 397, 436, 468, 469, 480, 483, 484, 487, 491], "excluded_lines": [], "functions": {"ExploitContext.__post_init__": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitPrompt.to_dict": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [45], "excluded_lines": []}, "SafetyFilter.__init__": {"executed_lines": [60, 74], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SafetyFilter.is_safe": {"executed_lines": [87, 88, 89, 90], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SafetyFilter.sanitize_exploit": {"executed_lines": [102, 105, 108, 111, 116, 117, 121], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TemplateEngine.__init__": {"executed_lines": [132, 135], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TemplateEngine._load_built_in_templates": {"executed_lines": [143, 146, 171, 193, 214], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TemplateEngine.generate_exploit": {"executed_lines": [228, 231, 232, 233, 234, 235, 237], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TemplateEngine._get_template_name": {"executed_lines": [248, 253], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TemplateEngine.add_template": {"executed_lines": [262], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMExploitGenerator.__init__": {"executed_lines": [274], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMExploitGenerator.create_exploit_prompt": {"executed_lines": [285, 286, 288], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMExploitGenerator.parse_exploit_response": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [305, 306], "excluded_lines": []}, "LLMExploitGenerator._create_system_prompt": {"executed_lines": [314], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMExploitGenerator._create_user_prompt": {"executed_lines": [342, 344, 376], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMExploitGenerator._parse_exploits": {"executed_lines": [388, 391, 392, 393, 396, 399], "summary": {"covered_lines": 6, "num_statements": 7, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [397], "excluded_lines": []}, "ExploitGenerator.__init__": {"executed_lines": [411, 412, 413, 414, 417], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitGenerator.generate_exploits": {"executed_lines": [432, 435, 439, 440, 446, 447, 450, 454], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [436], "excluded_lines": []}, "ExploitGenerator.create_exploit_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [468, 469], "excluded_lines": []}, "ExploitGenerator.parse_exploit_response": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [480, 483, 484, 487, 491], "excluded_lines": []}, "ExploitGenerator._generate_from_templates": {"executed_lines": [505], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitGenerator.add_custom_template": {"executed_lines": [514], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitGenerator.is_llm_available": {"executed_lines": [522], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitGenerator.get_exploit_metadata": {"executed_lines": [533], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitGenerator._get_available_templates": {"executed_lines": [552, 559], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 15, 16, 18, 21, 22, 23, 25, 26, 27, 29, 34, 35, 36, 38, 39, 40, 41, 43, 56, 57, 59, 78, 92, 124, 125, 127, 137, 216, 239, 255, 265, 266, 268, 276, 295, 308, 333, 378, 402, 403, 405, 419, 456, 471, 493, 507, 516, 524, 543], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ExploitGenerationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitContext": {"executed_lines": [30, 31], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ExploitPrompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [45], "excluded_lines": []}, "SafetyFilter": {"executed_lines": [60, 74, 87, 88, 89, 90, 102, 105, 108, 111, 116, 117, 121], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TemplateEngine": {"executed_lines": [132, 135, 143, 146, 171, 193, 214, 228, 231, 232, 233, 234, 235, 237, 248, 253, 262], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMExploitGenerator": {"executed_lines": [274, 285, 286, 288, 314, 342, 344, 376, 388, 391, 392, 393, 396, 399], "summary": {"covered_lines": 14, "num_statements": 17, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [305, 306, 397], "excluded_lines": []}, "ExploitGenerator": {"executed_lines": [411, 412, 413, 414, 417, 432, 435, 439, 440, 446, 447, 450, 454, 505, 514, 522, 533, 552, 559], "summary": {"covered_lines": 19, "num_statements": 27, "percent_covered": 70.37037037037037, "percent_covered_display": "70", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [436, 468, 469, 480, 483, 484, 487, 491], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 11, 12, 15, 16, 18, 21, 22, 23, 25, 26, 27, 29, 34, 35, 36, 38, 39, 40, 41, 43, 56, 57, 59, 78, 92, 124, 125, 127, 137, 216, 239, 255, 265, 266, 268, 276, 295, 308, 333, 378, 402, 403, 405, 419, 456, 471, 493, 507, 516, 524, 543], "summary": {"covered_lines": 50, "num_statements": 50, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/false_positive_manager.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 20, 26, 29, 30, 32, 34, 35, 36, 37, 38, 41, 42, 52, 54, 55, 57, 58, 61, 62, 64, 66, 67, 68, 69, 70, 71, 88, 89, 93, 99, 100, 102, 103, 104, 105, 106, 109, 111, 120, 121, 122, 123, 124, 125, 128, 130, 140, 141, 143, 145, 162, 165, 166, 167, 168, 171, 172, 173, 175, 177, 178, 179, 180, 183, 184, 186, 187, 189, 190, 191, 192, 200, 202, 203, 205, 207, 217, 220, 221, 222, 225, 227, 228, 229, 231, 232, 233, 234, 235, 237, 238, 240, 241, 242, 243, 251, 253, 255, 264, 266, 272, 275, 278, 279, 280, 281, 282, 291, 293, 295, 301, 302, 304, 313, 315, 316, 317, 319, 320, 321, 323, 325, 328, 331, 332, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 352, 353, 355, 361, 362, 363, 364], "summary": {"covered_lines": 152, "num_statements": 165, "percent_covered": 92.12121212121212, "percent_covered_display": "92", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [43, 45, 46, 49, 50, 85, 86, 196, 197, 247, 248, 333, 334], "excluded_lines": [], "functions": {"FalsePositiveManager.__init__": {"executed_lines": [26, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager._invalidate_cache_if_needed": {"executed_lines": [34, 35, 36, 37, 38, 41, 42], "summary": {"covered_lines": 7, "num_statements": 12, "percent_covered": 58.333333333333336, "percent_covered_display": "58", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [43, 45, 46, 49, 50], "excluded_lines": []}, "FalsePositiveManager._build_false_positive_cache": {"executed_lines": [54, 55, 57, 58, 61, 62, 64, 66, 67, 68, 69, 70, 71, 88, 89], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [85, 86], "excluded_lines": []}, "FalsePositiveManager._load_adversary_json": {"executed_lines": [99, 100, 102, 103, 104, 105, 106, 109], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager._save_adversary_json": {"executed_lines": [120, 121, 122, 123, 124, 125, 128], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager.get_false_positive_details": {"executed_lines": [140, 141, 143], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager.mark_false_positive": {"executed_lines": [162, 165, 166, 167, 168, 171, 172, 173, 175, 177, 178, 179, 180, 183, 184, 186, 187, 189, 190, 191, 192, 200, 202, 203, 205], "summary": {"covered_lines": 25, "num_statements": 27, "percent_covered": 92.5925925925926, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [196, 197], "excluded_lines": []}, "FalsePositiveManager.unmark_false_positive": {"executed_lines": [217, 220, 221, 222, 225, 227, 228, 229, 231, 232, 233, 234, 235, 237, 238, 240, 241, 242, 243, 251, 253], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [247, 248], "excluded_lines": []}, "FalsePositiveManager.is_false_positive": {"executed_lines": [264], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager.get_false_positives": {"executed_lines": [272, 275, 278, 279, 280, 281, 282, 291, 293], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager.get_false_positive_uuids": {"executed_lines": [301, 302], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager.filter_false_positives": {"executed_lines": [313, 315, 316, 317, 319, 320, 321, 323], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FalsePositiveManager.clear_all_false_positives": {"executed_lines": [328, 331, 332, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 352, 353], "summary": {"covered_lines": 18, "num_statements": 20, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [333, 334], "excluded_lines": []}, "FalsePositiveManager.export_false_positives": {"executed_lines": [361, 362, 363, 364], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 20, 32, 52, 93, 111, 130, 145, 207, 255, 266, 295, 304, 325, 355], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"FalsePositiveManager": {"executed_lines": [26, 29, 30, 34, 35, 36, 37, 38, 41, 42, 54, 55, 57, 58, 61, 62, 64, 66, 67, 68, 69, 70, 71, 88, 89, 99, 100, 102, 103, 104, 105, 106, 109, 120, 121, 122, 123, 124, 125, 128, 140, 141, 143, 162, 165, 166, 167, 168, 171, 172, 173, 175, 177, 178, 179, 180, 183, 184, 186, 187, 189, 190, 191, 192, 200, 202, 203, 205, 217, 220, 221, 222, 225, 227, 228, 229, 231, 232, 233, 234, 235, 237, 238, 240, 241, 242, 243, 251, 253, 264, 272, 275, 278, 279, 280, 281, 282, 291, 293, 301, 302, 313, 315, 316, 317, 319, 320, 321, 323, 328, 331, 332, 336, 337, 338, 339, 340, 341, 342, 343, 344, 346, 347, 348, 349, 352, 353, 361, 362, 363, 364], "summary": {"covered_lines": 131, "num_statements": 144, "percent_covered": 90.97222222222223, "percent_covered_display": "91", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [43, 45, 46, 49, 50, 85, 86, 196, 197, 247, 248, 333, 334], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 10, 13, 14, 20, 32, 52, 93, 111, 130, 145, 207, 255, 266, 295, 304, 325, 355], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/file_filter.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 12, 13, 20, 23, 24, 26, 43, 44, 45, 46, 47, 50, 51, 52, 54, 59, 61, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 83, 85, 87, 90, 91, 94, 95, 96, 97, 100, 101, 104, 106, 107, 108, 109, 114, 116, 118, 119, 123, 125, 126, 129, 130, 131, 132, 137, 139, 140, 141, 142, 144, 146, 152, 153, 156, 157, 158, 161, 164, 165, 172, 184, 186, 192, 195, 200, 207, 208, 209, 212, 215, 216, 222, 224, 227, 228, 229, 232, 233, 236, 237, 238, 239, 240, 241, 245, 247, 251, 252, 254, 255, 256, 257, 258, 260, 261, 263, 264, 265, 266, 268, 272, 282, 286, 290, 291, 294, 295, 298, 320, 321, 322, 323, 324, 329, 330, 332, 341, 342, 344, 346, 347, 349, 355], "summary": {"covered_lines": 139, "num_statements": 167, "percent_covered": 83.23353293413173, "percent_covered_display": "83", "missing_lines": 28, "excluded_lines": 0}, "missing_lines": [9, 10, 62, 63, 81, 82, 110, 112, 120, 121, 133, 135, 166, 169, 174, 179, 182, 217, 220, 242, 243, 269, 270, 283, 287, 325, 326, 327], "excluded_lines": [], "functions": {"FileFilter.__init__": {"executed_lines": [43, 44, 45, 46, 47, 50, 51, 52, 54], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FileFilter._load_gitignore_specs": {"executed_lines": [61, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 83, 85], "summary": {"covered_lines": 15, "num_statements": 19, "percent_covered": 78.94736842105263, "percent_covered_display": "79", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [62, 63, 81, 82], "excluded_lines": []}, "FileFilter._is_binary_file": {"executed_lines": [90, 91, 94, 95, 96, 97, 100, 101, 104, 106, 107, 108, 109, 114], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [110, 112], "excluded_lines": []}, "FileFilter._is_too_large": {"executed_lines": [118, 119], "summary": {"covered_lines": 2, "num_statements": 4, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [120, 121], "excluded_lines": []}, "FileFilter._matches_gitignore": {"executed_lines": [125, 126, 129, 130, 131, 132, 137, 139, 140, 141, 142, 144], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [133, 135], "excluded_lines": []}, "FileFilter._is_virtual_environment_file": {"executed_lines": [152, 153, 156, 157, 158, 161, 164, 165, 172, 184], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [166, 169, 174, 179, 182], "excluded_lines": []}, "FileFilter._is_adversary_output_file": {"executed_lines": [192, 195, 200, 207, 208, 209, 212, 215, 216, 222], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [217, 220], "excluded_lines": []}, "FileFilter._matches_default_excludes": {"executed_lines": [227, 228, 229, 232, 233, 236, 237, 238, 239, 240, 241, 245], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [242, 243], "excluded_lines": []}, "FileFilter._matches_custom_patterns": {"executed_lines": [251, 252, 254, 255, 256, 257, 258, 260, 261, 263, 264, 265, 266, 268], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [269, 270], "excluded_lines": []}, "FileFilter.should_include_file": {"executed_lines": [282, 286, 290, 291, 294, 295, 298, 320, 321, 322, 323, 324, 329, 330], "summary": {"covered_lines": 14, "num_statements": 19, "percent_covered": 73.6842105263158, "percent_covered_display": "74", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [283, 287, 325, 326, 327], "excluded_lines": []}, "FileFilter.filter_files": {"executed_lines": [341, 342, 344, 346, 347], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "FileFilter.get_stats": {"executed_lines": [355], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 12, 13, 20, 23, 24, 26, 59, 87, 116, 123, 146, 186, 224, 247, 272, 332, 349], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [9, 10], "excluded_lines": []}}, "classes": {"FileFilter": {"executed_lines": [43, 44, 45, 46, 47, 50, 51, 52, 54, 61, 65, 68, 69, 70, 71, 72, 73, 74, 75, 76, 79, 80, 83, 85, 90, 91, 94, 95, 96, 97, 100, 101, 104, 106, 107, 108, 109, 114, 118, 119, 125, 126, 129, 130, 131, 132, 137, 139, 140, 141, 142, 144, 152, 153, 156, 157, 158, 161, 164, 165, 172, 184, 192, 195, 200, 207, 208, 209, 212, 215, 216, 222, 227, 228, 229, 232, 233, 236, 237, 238, 239, 240, 241, 245, 251, 252, 254, 255, 256, 257, 258, 260, 261, 263, 264, 265, 266, 268, 282, 286, 290, 291, 294, 295, 298, 320, 321, 322, 323, 324, 329, 330, 341, 342, 344, 346, 347, 355], "summary": {"covered_lines": 118, "num_statements": 144, "percent_covered": 81.94444444444444, "percent_covered_display": "82", "missing_lines": 26, "excluded_lines": 0}, "missing_lines": [62, 63, 81, 82, 110, 112, 120, 121, 133, 135, 166, 169, 174, 179, 182, 217, 220, 242, 243, 269, 270, 283, 287, 325, 326, 327], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 12, 13, 20, 23, 24, 26, 59, 87, 116, 123, 146, 186, 224, 247, 272, 332, 349], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [9, 10], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/language_mapping.py": {"executed_lines": [1, 5, 8, 56, 104, 174, 189, 317, 330, 331, 334, 456, 549, 550, 559, 560, 562, 563, 565, 566, 575, 576, 579, 580, 581, 582, 584, 586, 588, 589, 598, 599, 600, 602, 603, 612, 613, 616, 617, 619, 621, 622, 628, 630, 631, 637, 639, 640, 652, 653, 662, 690], "summary": {"covered_lines": 50, "num_statements": 52, "percent_covered": 96.15384615384616, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [649, 650], "excluded_lines": [], "functions": {"LanguageMapper.detect_language_from_extension": {"executed_lines": [559, 560, 562, 563], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LanguageMapper.get_extension_for_language": {"executed_lines": [575, 576, 579, 580, 581, 582, 584, 586], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LanguageMapper.is_supported_language": {"executed_lines": [598, 599, 600], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LanguageMapper.is_supported_extension": {"executed_lines": [612, 613, 616, 617, 619], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LanguageMapper.get_supported_languages": {"executed_lines": [628], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LanguageMapper.get_supported_extensions": {"executed_lines": [637], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LanguageMapper.is_virtual_environment_path": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [649, 650], "excluded_lines": []}, "LanguageMapper.get_security_analysis_hints": {"executed_lines": [662, 690], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 5, 8, 56, 104, 174, 189, 317, 330, 331, 334, 456, 549, 550, 565, 566, 588, 589, 602, 603, 621, 622, 630, 631, 639, 640, 652, 653], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LanguageMapper": {"executed_lines": [559, 560, 562, 563, 575, 576, 579, 580, 581, 582, 584, 586, 598, 599, 600, 612, 613, 616, 617, 619, 628, 637, 662, 690], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [649, 650], "excluded_lines": []}, "": {"executed_lines": [1, 5, 8, 56, 104, 174, 189, 317, 330, 331, 334, 456, 549, 550, 565, 566, 588, 589, 602, 603, 621, 622, 630, 631, 639, 640, 652, 653], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/llm_scanner.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 33, 34, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 65, 66, 67, 70, 75, 83, 134, 135, 136, 140, 141, 142, 144, 159, 162, 165, 166, 167, 169, 170, 171, 172, 176, 178, 179, 180, 186, 187, 190, 191, 197, 213, 214, 215, 216, 217, 218, 219, 222, 223, 224, 225, 227, 228, 229, 234, 235, 236, 241, 245, 246, 247, 249, 251, 252, 253, 254, 256, 259, 261, 272, 275, 282, 283, 300, 301, 304, 305, 308, 309, 315, 318, 319, 320, 326, 332, 333, 345, 346, 348, 349, 350, 352, 353, 359, 372, 373, 385, 388, 389, 393, 397, 399, 401, 403, 405, 411, 417, 420, 421, 423, 429, 438, 456, 457, 458, 462, 463, 464, 468, 471, 473, 479, 480, 481, 482, 483, 485, 498, 501, 503, 507, 510, 512, 521, 525, 526, 528, 531, 534, 535, 537, 549, 550, 551, 552, 555, 568, 569, 570, 571, 579, 580, 582, 584, 585, 587, 588, 589, 590, 591, 592, 593, 594, 595, 597, 599, 611, 612, 613, 615, 616, 617, 619, 621, 623, 624, 625, 626, 630, 631, 634, 635, 636, 677, 679, 680, 681, 683, 684, 685, 686, 689, 690, 691, 692, 694, 706, 707, 710, 711, 712, 713, 715, 718, 720, 721, 724, 727, 735, 741, 742, 789, 802, 807, 808, 809, 810, 813, 817, 821, 872, 873, 875, 893, 894, 896, 897, 905, 908, 909, 910, 912, 913, 915, 919, 937, 939, 941, 942, 947, 950, 951, 953, 954, 956, 957, 958, 969, 975, 976, 977, 979, 980, 981, 982, 983, 984, 986, 991, 993, 994, 998, 1002, 1003, 1012, 1013, 1017, 1019, 1021, 1032, 1039, 1040, 1053, 1056, 1057, 1060, 1063, 1069, 1071, 1072, 1073, 1074, 1079, 1090, 1091, 1092, 1094, 1095, 1097, 1100, 1101, 1102, 1107, 1112, 1116, 1137, 1160, 1176, 1177, 1179, 1190, 1192, 1193, 1196, 1200, 1201, 1202, 1204, 1330, 1348, 1350, 1351, 1359, 1361, 1365, 1367, 1368, 1369, 1370, 1372, 1377, 1382, 1389, 1390, 1391, 1393, 1397, 1398, 1399, 1400, 1405, 1408, 1411, 1418, 1422, 1428, 1442, 1446, 1447, 1450, 1454, 1457, 1458, 1462, 1463, 1465, 1481, 1484, 1490, 1493, 1496, 1499, 1520, 1527, 1532, 1533, 1538, 1539, 1541, 1542, 1543, 1546, 1548, 1562, 1564, 1566, 1567, 1568, 1571, 1572, 1573, 1576, 1577, 1580, 1583, 1585, 1586, 1587, 1590, 1596, 1597, 1599, 1600, 1601, 1602, 1606, 1607, 1613, 1615, 1624, 1626, 1627, 1628, 1629, 1632, 1633, 1634, 1636, 1637, 1640, 1641, 1642, 1646, 1657, 1658, 1660, 1663, 1665, 1675, 1676, 1679, 1680, 1681, 1683, 1684, 1685, 1687, 1691, 1692, 1693, 1696, 1697, 1699, 1700, 1702, 1785, 1797, 1800, 1801, 1802, 1808, 1809, 1812, 1815, 1818, 1823, 1824, 1825, 1829, 1830, 1832, 1841, 1843, 1852, 1854, 1866, 1868, 1869, 1872, 1875, 1879, 1882, 1911, 1913, 1925, 1927, 1929, 1930, 1931, 1933, 1934, 1936, 1937, 1939, 1940, 1943, 1944, 1945, 1962, 1969, 1970, 1971, 1982, 1984, 1988, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011, 2020, 2021, 2023, 2062, 2075, 2076, 2077, 2078, 2079, 2080, 2082, 2087, 2088, 2090, 2091, 2096, 2098, 2099, 2102, 2106, 2108, 2157, 2159, 2171, 2173, 2175, 2176, 2177, 2180, 2181, 2182, 2184, 2185, 2187, 2190, 2197, 2201, 2202, 2203, 2208, 2209, 2210, 2211, 2214, 2217, 2218, 2219, 2221, 2222, 2239, 2240, 2241, 2257, 2258, 2263, 2265, 2270, 2280, 2293, 2295, 2296, 2298, 2301, 2303, 2304, 2306, 2308, 2322, 2324, 2325, 2334, 2337, 2339, 2340, 2353, 2358, 2360, 2364, 2379, 2380, 2381, 2386, 2391, 2392, 2393, 2394, 2396, 2400, 2467, 2596, 2694, 2713, 2788, 2794, 2795, 2804, 2805], "summary": {"covered_lines": 605, "num_statements": 882, "percent_covered": 68.59410430839003, "percent_covered_display": "69", "missing_lines": 277, "excluded_lines": 0}, "missing_lines": [329, 330, 331, 351, 355, 407, 408, 409, 502, 504, 508, 572, 573, 574, 575, 576, 640, 641, 642, 644, 645, 646, 647, 651, 652, 653, 671, 672, 673, 728, 729, 730, 733, 988, 989, 1043, 1044, 1046, 1049, 1077, 1117, 1118, 1119, 1127, 1128, 1139, 1140, 1143, 1144, 1145, 1150, 1156, 1180, 1188, 1220, 1224, 1225, 1233, 1235, 1237, 1239, 1242, 1243, 1250, 1251, 1252, 1253, 1254, 1256, 1259, 1262, 1263, 1264, 1265, 1267, 1274, 1275, 1280, 1281, 1286, 1287, 1288, 1291, 1292, 1293, 1295, 1299, 1300, 1301, 1302, 1307, 1310, 1313, 1314, 1320, 1324, 1326, 1327, 1328, 1362, 1363, 1378, 1379, 1383, 1412, 1424, 1425, 1426, 1443, 1459, 1504, 1505, 1506, 1516, 1522, 1534, 1535, 1603, 1604, 1694, 1695, 1716, 1717, 1722, 1723, 1727, 1728, 1730, 1737, 1738, 1747, 1750, 1751, 1754, 1759, 1766, 1768, 1771, 1775, 1778, 1779, 1783, 1826, 1827, 1947, 1948, 1949, 1950, 1951, 1954, 1956, 1957, 1960, 1963, 1964, 1976, 1979, 1985, 1986, 2191, 2195, 2224, 2225, 2226, 2227, 2228, 2231, 2233, 2234, 2237, 2246, 2248, 2249, 2250, 2251, 2266, 2267, 2275, 2278, 2342, 2344, 2345, 2351, 2422, 2423, 2426, 2430, 2432, 2433, 2435, 2446, 2450, 2453, 2455, 2456, 2458, 2459, 2464, 2465, 2486, 2487, 2490, 2491, 2494, 2495, 2497, 2499, 2500, 2502, 2513, 2516, 2517, 2518, 2521, 2522, 2523, 2525, 2533, 2534, 2536, 2537, 2539, 2540, 2541, 2543, 2550, 2551, 2552, 2556, 2576, 2579, 2581, 2584, 2586, 2587, 2588, 2590, 2591, 2593, 2594, 2617, 2618, 2621, 2625, 2627, 2628, 2630, 2641, 2652, 2659, 2660, 2661, 2680, 2682, 2684, 2685, 2687, 2691, 2692, 2696, 2697, 2698, 2708, 2709, 2711, 2717, 2720, 2739, 2743, 2744, 2745, 2760, 2763, 2764, 2765, 2784, 2786], "excluded_lines": [], "functions": {"LLMSecurityFinding.to_threat_match": {"executed_lines": [65, 66, 67, 70, 75, 83, 134, 135, 136, 140, 141, 142, 144, 159, 162], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMAnalysisPrompt.to_dict": {"executed_lines": [178, 179, 180, 186, 187], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.__init__": {"executed_lines": [213, 214, 215, 216, 217, 218, 219, 222, 223, 224, 225, 227, 228, 229, 234, 235, 236, 241, 245, 246, 247, 249, 251, 252, 253, 254, 256, 259, 261, 272, 275, 282, 283, 300, 301, 304, 305, 308, 309, 315, 318, 319, 320, 326, 332, 333, 345, 346, 348, 349, 350, 352, 353, 359, 372, 373, 385, 388, 389, 393], "summary": {"covered_lines": 60, "num_statements": 65, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [329, 330, 331, 351, 355], "excluded_lines": []}, "LLMScanner.get_circuit_breaker_stats": {"executed_lines": [399], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.is_session_aware_available": {"executed_lines": [403], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.cleanup_expired_sessions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [407, 408, 409], "excluded_lines": []}, "LLMScanner.is_available": {"executed_lines": [417, 420, 421], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.get_status": {"executed_lines": [429], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.create_analysis_prompt": {"executed_lines": [456, 457, 458, 462, 463, 464, 468, 471, 473, 479, 480, 481, 482, 483], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._strip_markdown_code_blocks": {"executed_lines": [498, 501, 503, 507, 510], "summary": {"covered_lines": 5, "num_statements": 8, "percent_covered": 62.5, "percent_covered_display": "62", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [502, 504, 508], "excluded_lines": []}, "LLMScanner._sanitize_json_string": {"executed_lines": [521, 525, 534, 535], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._sanitize_json_string.fix_string_escapes": {"executed_lines": [526, 528, 531], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._robust_json_parse": {"executed_lines": [549, 550, 551, 552, 555, 568, 569, 570, 571, 579, 580], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 68.75, "percent_covered_display": "69", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [572, 573, 574, 575, 576], "excluded_lines": []}, "LLMScanner._extract_first_json_object": {"executed_lines": [584, 585, 587, 588, 589, 590, 591, 592, 593, 594, 595, 597], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.parse_analysis_response": {"executed_lines": [611, 612, 613, 615, 616, 617, 619, 621, 623, 624, 625, 626, 630, 631, 634, 635, 636, 677, 679, 680, 681, 683, 684, 685, 686, 689, 690, 691, 692, 694, 706, 707, 710, 711, 712, 713, 715, 718, 720, 721, 724, 727], "summary": {"covered_lines": 42, "num_statements": 59, "percent_covered": 71.1864406779661, "percent_covered_display": "71", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [640, 641, 642, 644, 645, 646, 647, 651, 652, 653, 671, 672, 673, 728, 729, 730, 733], "excluded_lines": []}, "LLMScanner._get_system_prompt": {"executed_lines": [741, 742], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._create_user_prompt": {"executed_lines": [802, 807, 808, 809, 810, 813, 817, 821, 872, 873], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.analyze_code": {"executed_lines": [893, 894, 896, 897, 905, 908, 909, 910, 912, 913, 915], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._analyze_code_async": {"executed_lines": [937, 939, 941, 942, 947, 950, 951, 953, 954, 956, 957, 958, 969, 975, 976, 977, 979, 980, 981, 982, 983, 984, 986, 991, 993, 994, 998, 1002, 1012, 1032, 1039, 1040, 1053, 1056, 1057, 1060, 1063, 1069, 1071, 1072, 1073, 1074, 1079, 1090, 1091, 1092, 1094, 1095, 1097, 1100, 1101, 1102, 1107, 1112, 1116, 1137], "summary": {"covered_lines": 56, "num_statements": 75, "percent_covered": 74.66666666666667, "percent_covered_display": "75", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [988, 989, 1043, 1044, 1046, 1049, 1077, 1117, 1118, 1119, 1127, 1128, 1139, 1140, 1143, 1144, 1145, 1150, 1156], "excluded_lines": []}, "LLMScanner._analyze_code_async.llm_call": {"executed_lines": [1003], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._analyze_code_async.llm_fallback": {"executed_lines": [1013, 1017, 1019, 1021], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.analyze_file": {"executed_lines": [1176, 1177, 1179, 1190, 1192, 1193, 1196, 1200, 1201, 1202], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1180, 1188], "excluded_lines": []}, "LLMScanner.analyze_directory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 45, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 45, "excluded_lines": 0}, "missing_lines": [1220, 1224, 1225, 1233, 1235, 1237, 1239, 1242, 1243, 1250, 1251, 1252, 1253, 1254, 1256, 1259, 1262, 1263, 1264, 1265, 1267, 1274, 1275, 1280, 1281, 1286, 1287, 1288, 1291, 1292, 1293, 1295, 1299, 1300, 1301, 1302, 1307, 1310, 1313, 1314, 1320, 1324, 1326, 1327, 1328], "excluded_lines": []}, "LLMScanner.analyze_files": {"executed_lines": [1348, 1350, 1351, 1359, 1361, 1365, 1367, 1368, 1369, 1370, 1372, 1377, 1382, 1389, 1390, 1391, 1393, 1397, 1398, 1399, 1400, 1405, 1408, 1411, 1418, 1422], "summary": {"covered_lines": 26, "num_statements": 35, "percent_covered": 74.28571428571429, "percent_covered_display": "74", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [1362, 1363, 1378, 1379, 1383, 1412, 1424, 1425, 1426], "excluded_lines": []}, "LLMScanner._analyze_batch_async": {"executed_lines": [1442, 1446, 1447, 1450, 1454, 1457, 1458, 1462, 1463, 1465, 1481, 1484, 1490, 1493, 1496, 1499, 1520, 1527, 1532, 1533, 1538, 1539, 1541, 1542, 1543, 1546], "summary": {"covered_lines": 26, "num_statements": 30, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1443, 1459, 1534, 1535], "excluded_lines": []}, "LLMScanner._analyze_batch_async.process_batch_func": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1504, 1505, 1506, 1516], "excluded_lines": []}, "LLMScanner._analyze_batch_async.progress_callback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1522], "excluded_lines": []}, "LLMScanner._analyze_files_in_parallel": {"executed_lines": [1562, 1564, 1576, 1577, 1580, 1583, 1585, 1590, 1596, 1597, 1599, 1600, 1601, 1602, 1606, 1607, 1613], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1603, 1604], "excluded_lines": []}, "LLMScanner._analyze_files_in_parallel.analyze_single_file": {"executed_lines": [1566, 1567, 1568, 1571, 1572, 1573], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._analyze_files_in_parallel.analyze_with_semaphore": {"executed_lines": [1586, 1587], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._collect_file_content": {"executed_lines": [1624, 1626, 1627, 1628, 1629, 1632, 1633, 1634, 1636, 1637, 1640, 1641, 1642, 1646, 1657, 1658, 1660, 1663], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._smart_truncate_content": {"executed_lines": [1675, 1676, 1679, 1680, 1681, 1683, 1684, 1685, 1687, 1691, 1692, 1693, 1696, 1697, 1699, 1700], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1694, 1695], "excluded_lines": []}, "LLMScanner._process_single_batch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [1716, 1717, 1722, 1723, 1727, 1728, 1730, 1737, 1750, 1759, 1766, 1768, 1771, 1775, 1778, 1779, 1783], "excluded_lines": []}, "LLMScanner._process_single_batch.batch_operation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1738, 1747], "excluded_lines": []}, "LLMScanner._process_single_batch.batch_fallback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1751, 1754], "excluded_lines": []}, "LLMScanner._fallback_individual_analysis": {"executed_lines": [1797, 1800, 1815, 1818, 1823, 1824, 1825, 1829, 1830], "summary": {"covered_lines": 9, "num_statements": 11, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1826, 1827], "excluded_lines": []}, "LLMScanner._fallback_individual_analysis.analyze_single_file": {"executed_lines": [1801, 1802, 1808, 1809, 1812], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._is_analyzable_file": {"executed_lines": [1841], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._detect_language": {"executed_lines": [1852], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._create_batch_user_prompt": {"executed_lines": [1866, 1868, 1869, 1872, 1875, 1879, 1882, 1911], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._parse_batch_response": {"executed_lines": [1925, 1927, 1929, 1930, 1931, 1933, 1934, 1936, 1937, 1939, 1940, 1943, 1944, 1945, 1962, 1969, 1970, 1971, 1982, 1984, 1988, 2001, 2002, 2003, 2005, 2007, 2008, 2009], "summary": {"covered_lines": 28, "num_statements": 43, "percent_covered": 65.11627906976744, "percent_covered_display": "65", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [1947, 1948, 1949, 1950, 1951, 1954, 1956, 1957, 1960, 1963, 1964, 1976, 1979, 1985, 1986], "excluded_lines": []}, "LLMScanner._get_enhanced_batch_system_prompt": {"executed_lines": [2020, 2021, 2023], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._create_enhanced_batch_user_prompt": {"executed_lines": [2075, 2076, 2077, 2078, 2079, 2080, 2082, 2087, 2088, 2090, 2091, 2096, 2098, 2099, 2102, 2106, 2108, 2157], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner._parse_enhanced_batch_response": {"executed_lines": [2171, 2173, 2175, 2176, 2177, 2180, 2181, 2182, 2184, 2185, 2187, 2190, 2197, 2201, 2202, 2203, 2208, 2209, 2210, 2211, 2214, 2217, 2218, 2219, 2221, 2222, 2239, 2240, 2241, 2257, 2258, 2263, 2265, 2270, 2280, 2293, 2295, 2296, 2298, 2301, 2303, 2304, 2306], "summary": {"covered_lines": 43, "num_statements": 63, "percent_covered": 68.25396825396825, "percent_covered_display": "68", "missing_lines": 20, "excluded_lines": 0}, "missing_lines": [2191, 2195, 2224, 2225, 2226, 2227, 2228, 2231, 2233, 2234, 2237, 2246, 2248, 2249, 2250, 2251, 2266, 2267, 2275, 2278], "excluded_lines": []}, "LLMScanner.batch_analyze_code": {"executed_lines": [2322, 2324, 2325, 2334, 2337, 2339, 2340, 2353, 2358, 2360], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [2342, 2344, 2345, 2351], "excluded_lines": []}, "LLMScanner._batch_analyze_code_async": {"executed_lines": [2379, 2380, 2381, 2386, 2391, 2392, 2393, 2394, 2396], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner.analyze_project_with_session": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [2422, 2423, 2426, 2430, 2432, 2433, 2435, 2446, 2450, 2453, 2455, 2456, 2458, 2459, 2464, 2465], "excluded_lines": []}, "LLMScanner.analyze_file_with_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 41, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 41, "excluded_lines": 0}, "missing_lines": [2486, 2487, 2490, 2491, 2494, 2495, 2497, 2499, 2500, 2502, 2513, 2516, 2517, 2518, 2521, 2522, 2523, 2525, 2533, 2534, 2536, 2537, 2539, 2540, 2541, 2543, 2550, 2551, 2552, 2556, 2576, 2579, 2581, 2584, 2586, 2587, 2588, 2590, 2591, 2593, 2594], "excluded_lines": []}, "LLMScanner.analyze_code_with_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 19, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [2617, 2618, 2621, 2625, 2627, 2628, 2630, 2641, 2652, 2659, 2660, 2661, 2680, 2682, 2684, 2685, 2687, 2691, 2692], "excluded_lines": []}, "LLMScanner._find_project_root": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [2696, 2697, 2698, 2708, 2709, 2711], "excluded_lines": []}, "LLMScanner._perform_session_analysis": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [2717, 2720, 2739, 2743, 2744, 2745, 2760, 2763, 2764, 2765, 2784, 2786], "excluded_lines": []}, "LLMScanner.get_analysis_stats": {"executed_lines": [2794, 2795, 2804, 2805], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 33, 34, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 165, 166, 167, 169, 170, 171, 172, 176, 190, 191, 197, 397, 401, 405, 411, 423, 438, 485, 512, 537, 582, 599, 735, 789, 875, 919, 1160, 1204, 1330, 1428, 1548, 1615, 1665, 1702, 1785, 1832, 1843, 1854, 1913, 2011, 2062, 2159, 2308, 2364, 2400, 2467, 2596, 2694, 2713, 2788], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LLMAnalysisError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSecurityFinding": {"executed_lines": [65, 66, 67, 70, 75, 83, 134, 135, 136, 140, 141, 142, 144, 159, 162], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMAnalysisPrompt": {"executed_lines": [178, 179, 180, 186, 187], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMScanner": {"executed_lines": [213, 214, 215, 216, 217, 218, 219, 222, 223, 224, 225, 227, 228, 229, 234, 235, 236, 241, 245, 246, 247, 249, 251, 252, 253, 254, 256, 259, 261, 272, 275, 282, 283, 300, 301, 304, 305, 308, 309, 315, 318, 319, 320, 326, 332, 333, 345, 346, 348, 349, 350, 352, 353, 359, 372, 373, 385, 388, 389, 393, 399, 403, 417, 420, 421, 429, 456, 457, 458, 462, 463, 464, 468, 471, 473, 479, 480, 481, 482, 483, 498, 501, 503, 507, 510, 521, 525, 526, 528, 531, 534, 535, 549, 550, 551, 552, 555, 568, 569, 570, 571, 579, 580, 584, 585, 587, 588, 589, 590, 591, 592, 593, 594, 595, 597, 611, 612, 613, 615, 616, 617, 619, 621, 623, 624, 625, 626, 630, 631, 634, 635, 636, 677, 679, 680, 681, 683, 684, 685, 686, 689, 690, 691, 692, 694, 706, 707, 710, 711, 712, 713, 715, 718, 720, 721, 724, 727, 741, 742, 802, 807, 808, 809, 810, 813, 817, 821, 872, 873, 893, 894, 896, 897, 905, 908, 909, 910, 912, 913, 915, 937, 939, 941, 942, 947, 950, 951, 953, 954, 956, 957, 958, 969, 975, 976, 977, 979, 980, 981, 982, 983, 984, 986, 991, 993, 994, 998, 1002, 1003, 1012, 1013, 1017, 1019, 1021, 1032, 1039, 1040, 1053, 1056, 1057, 1060, 1063, 1069, 1071, 1072, 1073, 1074, 1079, 1090, 1091, 1092, 1094, 1095, 1097, 1100, 1101, 1102, 1107, 1112, 1116, 1137, 1176, 1177, 1179, 1190, 1192, 1193, 1196, 1200, 1201, 1202, 1348, 1350, 1351, 1359, 1361, 1365, 1367, 1368, 1369, 1370, 1372, 1377, 1382, 1389, 1390, 1391, 1393, 1397, 1398, 1399, 1400, 1405, 1408, 1411, 1418, 1422, 1442, 1446, 1447, 1450, 1454, 1457, 1458, 1462, 1463, 1465, 1481, 1484, 1490, 1493, 1496, 1499, 1520, 1527, 1532, 1533, 1538, 1539, 1541, 1542, 1543, 1546, 1562, 1564, 1566, 1567, 1568, 1571, 1572, 1573, 1576, 1577, 1580, 1583, 1585, 1586, 1587, 1590, 1596, 1597, 1599, 1600, 1601, 1602, 1606, 1607, 1613, 1624, 1626, 1627, 1628, 1629, 1632, 1633, 1634, 1636, 1637, 1640, 1641, 1642, 1646, 1657, 1658, 1660, 1663, 1675, 1676, 1679, 1680, 1681, 1683, 1684, 1685, 1687, 1691, 1692, 1693, 1696, 1697, 1699, 1700, 1797, 1800, 1801, 1802, 1808, 1809, 1812, 1815, 1818, 1823, 1824, 1825, 1829, 1830, 1841, 1852, 1866, 1868, 1869, 1872, 1875, 1879, 1882, 1911, 1925, 1927, 1929, 1930, 1931, 1933, 1934, 1936, 1937, 1939, 1940, 1943, 1944, 1945, 1962, 1969, 1970, 1971, 1982, 1984, 1988, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2020, 2021, 2023, 2075, 2076, 2077, 2078, 2079, 2080, 2082, 2087, 2088, 2090, 2091, 2096, 2098, 2099, 2102, 2106, 2108, 2157, 2171, 2173, 2175, 2176, 2177, 2180, 2181, 2182, 2184, 2185, 2187, 2190, 2197, 2201, 2202, 2203, 2208, 2209, 2210, 2211, 2214, 2217, 2218, 2219, 2221, 2222, 2239, 2240, 2241, 2257, 2258, 2263, 2265, 2270, 2280, 2293, 2295, 2296, 2298, 2301, 2303, 2304, 2306, 2322, 2324, 2325, 2334, 2337, 2339, 2340, 2353, 2358, 2360, 2379, 2380, 2381, 2386, 2391, 2392, 2393, 2394, 2396, 2794, 2795, 2804, 2805], "summary": {"covered_lines": 501, "num_statements": 778, "percent_covered": 64.39588688946016, "percent_covered_display": "64", "missing_lines": 277, "excluded_lines": 0}, "missing_lines": [329, 330, 331, 351, 355, 407, 408, 409, 502, 504, 508, 572, 573, 574, 575, 576, 640, 641, 642, 644, 645, 646, 647, 651, 652, 653, 671, 672, 673, 728, 729, 730, 733, 988, 989, 1043, 1044, 1046, 1049, 1077, 1117, 1118, 1119, 1127, 1128, 1139, 1140, 1143, 1144, 1145, 1150, 1156, 1180, 1188, 1220, 1224, 1225, 1233, 1235, 1237, 1239, 1242, 1243, 1250, 1251, 1252, 1253, 1254, 1256, 1259, 1262, 1263, 1264, 1265, 1267, 1274, 1275, 1280, 1281, 1286, 1287, 1288, 1291, 1292, 1293, 1295, 1299, 1300, 1301, 1302, 1307, 1310, 1313, 1314, 1320, 1324, 1326, 1327, 1328, 1362, 1363, 1378, 1379, 1383, 1412, 1424, 1425, 1426, 1443, 1459, 1504, 1505, 1506, 1516, 1522, 1534, 1535, 1603, 1604, 1694, 1695, 1716, 1717, 1722, 1723, 1727, 1728, 1730, 1737, 1738, 1747, 1750, 1751, 1754, 1759, 1766, 1768, 1771, 1775, 1778, 1779, 1783, 1826, 1827, 1947, 1948, 1949, 1950, 1951, 1954, 1956, 1957, 1960, 1963, 1964, 1976, 1979, 1985, 1986, 2191, 2195, 2224, 2225, 2226, 2227, 2228, 2231, 2233, 2234, 2237, 2246, 2248, 2249, 2250, 2251, 2266, 2267, 2275, 2278, 2342, 2344, 2345, 2351, 2422, 2423, 2426, 2430, 2432, 2433, 2435, 2446, 2450, 2453, 2455, 2456, 2458, 2459, 2464, 2465, 2486, 2487, 2490, 2491, 2494, 2495, 2497, 2499, 2500, 2502, 2513, 2516, 2517, 2518, 2521, 2522, 2523, 2525, 2533, 2534, 2536, 2537, 2539, 2540, 2541, 2543, 2550, 2551, 2552, 2556, 2576, 2579, 2581, 2584, 2586, 2587, 2588, 2590, 2591, 2593, 2594, 2617, 2618, 2621, 2625, 2627, 2628, 2630, 2641, 2652, 2659, 2660, 2661, 2680, 2682, 2684, 2685, 2687, 2691, 2692, 2696, 2697, 2698, 2708, 2709, 2711, 2717, 2720, 2739, 2743, 2744, 2745, 2760, 2763, 2764, 2765, 2784, 2786], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 33, 34, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 55, 165, 166, 167, 169, 170, 171, 172, 176, 190, 191, 197, 397, 401, 405, 411, 423, 438, 485, 512, 537, 582, 599, 735, 789, 875, 919, 1160, 1204, 1330, 1428, 1548, 1615, 1665, 1702, 1785, 1832, 1843, 1854, 1913, 2011, 2062, 2159, 2308, 2364, 2400, 2467, 2596, 2694, 2713, 2788], "summary": {"covered_lines": 84, "num_statements": 84, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/llm_validator.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 33, 34, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 55, 70, 71, 72, 74, 75, 76, 77, 79, 81, 89, 90, 92, 105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 122, 123, 125, 130, 137, 152, 153, 162, 176, 177, 180, 181, 182, 188, 189, 195, 197, 201, 203, 211, 229, 230, 231, 235, 236, 237, 239, 240, 254, 271, 289, 291, 294, 297, 321, 326, 327, 330, 332, 342, 345, 348, 351, 355, 356, 361, 362, 367, 383, 390, 391, 396, 398, 401, 406, 407, 408, 411, 414, 415, 417, 420, 458, 460, 464, 465, 467, 468, 469, 470, 472, 479, 485, 486, 493, 495, 502, 503, 505, 506, 507, 509, 511, 518, 525, 528, 535, 537, 540, 546, 549, 550, 552, 554, 558, 559, 561, 564, 566, 569, 575, 577, 585, 587, 588, 592, 599, 626, 627, 641, 642, 644, 684, 700, 703, 708, 711, 715, 717, 718, 722, 724, 731, 740, 741, 742, 745, 746, 747, 748, 752, 754, 772, 774, 778, 799, 801, 844, 857, 859, 860, 862, 869, 870, 872, 884, 886, 887, 888, 891, 894, 897, 899, 901, 905, 906, 910, 911, 913, 914, 916, 917, 918, 919, 922, 925, 926, 927, 928, 936, 948, 949, 953, 954, 956, 957, 958, 963, 969, 992, 1006, 1007, 1008, 1012, 1013, 1014, 1028, 1062, 1064, 1080, 1084, 1086, 1087, 1090, 1091, 1092, 1093, 1096, 1101, 1102, 1105, 1108, 1111, 1112, 1114, 1115, 1117, 1121, 1124, 1126, 1137, 1138, 1139, 1140, 1146, 1157, 1158], "summary": {"covered_lines": 271, "num_statements": 359, "percent_covered": 75.4874651810585, "percent_covered_display": "75", "missing_lines": 88, "excluded_lines": 0}, "missing_lines": [118, 119, 120, 209, 259, 260, 261, 262, 263, 265, 298, 299, 302, 303, 304, 307, 308, 309, 314, 318, 319, 368, 372, 373, 374, 380, 394, 421, 424, 427, 430, 437, 442, 445, 448, 451, 454, 487, 488, 490, 491, 532, 533, 551, 553, 555, 560, 562, 607, 613, 618, 619, 623, 624, 651, 657, 661, 662, 663, 664, 665, 669, 674, 675, 676, 679, 680, 719, 720, 784, 785, 792, 808, 810, 817, 819, 820, 828, 837, 902, 907, 908, 909, 931, 932, 959, 960, 961], "excluded_lines": [], "functions": {"ValidationResult.to_dict": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationPrompt.to_dict": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator.__init__": {"executed_lines": [105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 122, 123, 125, 130, 137, 152, 153, 162, 176, 177, 180, 181, 182, 188, 189, 195, 197, 201], "summary": {"covered_lines": 29, "num_statements": 32, "percent_covered": 90.625, "percent_covered_display": "91", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [118, 119, 120], "excluded_lines": []}, "LLMValidator.is_fully_functional": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [209], "excluded_lines": []}, "LLMValidator.validate_findings": {"executed_lines": [229, 230, 231, 235, 236, 237, 239, 240, 254], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [259, 260, 261, 262, 263, 265], "excluded_lines": []}, "LLMValidator._validate_findings_async": {"executed_lines": [289, 291, 294, 297, 321, 326, 327, 330, 332, 342, 345, 348, 351, 396, 401, 406, 407, 408, 411, 414, 415, 417, 420, 458], "summary": {"covered_lines": 24, "num_statements": 45, "percent_covered": 53.333333333333336, "percent_covered_display": "53", "missing_lines": 21, "excluded_lines": 0}, "missing_lines": [298, 299, 302, 303, 304, 307, 308, 309, 314, 318, 319, 421, 424, 427, 430, 437, 442, 445, 448, 451, 454], "excluded_lines": []}, "LLMValidator._validate_findings_async.process_validation_batch": {"executed_lines": [355, 356, 361, 367, 383, 390, 391], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [394], "excluded_lines": []}, "LLMValidator._validate_findings_async.process_validation_batch.validation_call": {"executed_lines": [362], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator._validate_findings_async.process_validation_batch.validation_fallback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [368, 372, 373, 374, 380], "excluded_lines": []}, "LLMValidator._validate_findings_async.progress_callback": {"executed_lines": [398], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator._get_cached_validation_results": {"executed_lines": [464, 465, 467, 468, 469, 470, 472, 479, 485, 486, 493], "summary": {"covered_lines": 11, "num_statements": 15, "percent_covered": 73.33333333333333, "percent_covered_display": "73", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [487, 488, 490, 491], "excluded_lines": []}, "LLMValidator._cache_validation_results": {"executed_lines": [502, 503, 505, 506, 507, 509, 511, 518, 525, 528], "summary": {"covered_lines": 10, "num_statements": 12, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [532, 533], "excluded_lines": []}, "LLMValidator._calculate_finding_complexity": {"executed_lines": [537, 540, 546, 549, 550, 552, 554, 558, 559, 561, 564], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 68.75, "percent_covered_display": "69", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [551, 553, 555, 560, 562], "excluded_lines": []}, "LLMValidator._get_finding_priority": {"executed_lines": [569, 575], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator._validate_single_batch": {"executed_lines": [585, 587, 588, 592, 599, 626, 627, 641, 642], "summary": {"covered_lines": 9, "num_statements": 15, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [607, 613, 618, 619, 623, 624], "excluded_lines": []}, "LLMValidator._generate_exploits_for_batch": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [651, 657, 661, 662, 663, 664, 665, 669, 674, 675, 676, 679, 680], "excluded_lines": []}, "LLMValidator._create_default_results": {"executed_lines": [700, 703, 708, 711, 715, 717, 718, 722, 724, 731, 740, 741, 742, 745, 746, 747, 748, 752], "summary": {"covered_lines": 18, "num_statements": 20, "percent_covered": 90.0, "percent_covered_display": "90", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [719, 720], "excluded_lines": []}, "LLMValidator._determine_fallback_legitimacy": {"executed_lines": [772, 774, 778, 799, 801], "summary": {"covered_lines": 5, "num_statements": 15, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [784, 785, 792, 808, 810, 817, 819, 820, 828, 837], "excluded_lines": []}, "LLMValidator.create_validation_prompt": {"executed_lines": [857, 859, 860, 862, 869, 870], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator.parse_validation_response": {"executed_lines": [884, 886, 887, 888, 891, 894, 897, 899, 901, 905, 906, 910, 911, 913, 914, 916, 917, 918, 919, 922, 925, 926, 927, 928, 936, 948, 949, 953, 954, 956, 957, 958], "summary": {"covered_lines": 32, "num_statements": 41, "percent_covered": 78.04878048780488, "percent_covered_display": "78", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [902, 907, 908, 909, 931, 932, 959, 960, 961], "excluded_lines": []}, "LLMValidator._create_system_prompt": {"executed_lines": [969], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator._create_user_prompt": {"executed_lines": [1006, 1007, 1008, 1012, 1013, 1014, 1028, 1062], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator.filter_false_positives": {"executed_lines": [1080, 1084, 1086, 1087, 1090, 1091, 1092, 1093, 1096, 1101, 1102, 1105, 1108, 1111, 1112, 1114, 1115, 1117, 1121, 1124], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator.get_validation_stats": {"executed_lines": [1137, 1138, 1139, 1140, 1146, 1157, 1158], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 33, 34, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 70, 71, 72, 74, 75, 76, 77, 79, 89, 90, 92, 203, 211, 271, 460, 495, 535, 566, 577, 644, 684, 754, 844, 872, 963, 992, 1064, 1126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LLMValidationError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationResult": {"executed_lines": [55], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ValidationPrompt": {"executed_lines": [81], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMValidator": {"executed_lines": [105, 106, 107, 108, 109, 110, 111, 112, 113, 116, 117, 122, 123, 125, 130, 137, 152, 153, 162, 176, 177, 180, 181, 182, 188, 189, 195, 197, 201, 229, 230, 231, 235, 236, 237, 239, 240, 254, 289, 291, 294, 297, 321, 326, 327, 330, 332, 342, 345, 348, 351, 355, 356, 361, 362, 367, 383, 390, 391, 396, 398, 401, 406, 407, 408, 411, 414, 415, 417, 420, 458, 464, 465, 467, 468, 469, 470, 472, 479, 485, 486, 493, 502, 503, 505, 506, 507, 509, 511, 518, 525, 528, 537, 540, 546, 549, 550, 552, 554, 558, 559, 561, 564, 569, 575, 585, 587, 588, 592, 599, 626, 627, 641, 642, 700, 703, 708, 711, 715, 717, 718, 722, 724, 731, 740, 741, 742, 745, 746, 747, 748, 752, 772, 774, 778, 799, 801, 857, 859, 860, 862, 869, 870, 884, 886, 887, 888, 891, 894, 897, 899, 901, 905, 906, 910, 911, 913, 914, 916, 917, 918, 919, 922, 925, 926, 927, 928, 936, 948, 949, 953, 954, 956, 957, 958, 969, 1006, 1007, 1008, 1012, 1013, 1014, 1028, 1062, 1080, 1084, 1086, 1087, 1090, 1091, 1092, 1093, 1096, 1101, 1102, 1105, 1108, 1111, 1112, 1114, 1115, 1117, 1121, 1124, 1137, 1138, 1139, 1140, 1146, 1157, 1158], "summary": {"covered_lines": 211, "num_statements": 299, "percent_covered": 70.5685618729097, "percent_covered_display": "71", "missing_lines": 88, "excluded_lines": 0}, "missing_lines": [118, 119, 120, 209, 259, 260, 261, 262, 263, 265, 298, 299, 302, 303, 304, 307, 308, 309, 314, 318, 319, 368, 372, 373, 374, 380, 394, 421, 424, 427, 430, 437, 442, 445, 448, 451, 454, 487, 488, 490, 491, 532, 533, 551, 553, 555, 560, 562, 607, 613, 618, 619, 623, 624, 651, 657, 661, 662, 663, 664, 665, 669, 674, 675, 676, 679, 680, 719, 720, 784, 785, 792, 808, 810, 817, 819, 820, 828, 837, 902, 907, 908, 909, 931, 932, 959, 960, 961], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 30, 33, 34, 36, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 53, 70, 71, 72, 74, 75, 76, 77, 79, 89, 90, 92, 203, 211, 271, 460, 495, 535, 566, 577, 644, 684, 754, 844, 872, 963, 992, 1064, 1126], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/result_formatter.py": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 21, 22, 24, 33, 34, 36, 38, 39, 40, 41, 42, 43, 45, 61, 66, 67, 69, 71, 72, 80, 83, 84, 92, 93, 94, 95, 96, 97, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 119, 131, 132, 133, 136, 141, 143, 146, 149, 154, 155, 156, 161, 165, 166, 224, 249, 252, 253, 254, 257, 260, 263, 297, 299, 313, 316, 320, 336, 341, 342, 343, 346, 351, 354, 355, 358, 359, 360, 366, 368, 370, 384, 385, 389, 405, 408, 409, 410, 411, 412, 415, 418, 419, 420, 422, 423, 424, 427, 428, 452, 453, 454, 464, 465, 466, 467, 468, 471, 472, 473, 474, 475, 477, 478, 479, 480, 481, 482, 483, 484, 487, 488, 489, 490, 493, 494, 495, 496, 499, 500, 508, 509, 511, 512, 513, 514, 517, 520, 527, 530, 531, 532, 535, 536, 537, 538, 541, 544, 545, 546, 547, 548, 549, 552, 553, 554, 555, 557, 558, 561, 562, 563, 564, 569, 570, 622, 623, 624, 625, 626, 627, 630, 633, 636, 637, 640, 645, 646, 647, 648, 649, 651, 652, 653, 655, 656, 657, 658, 662, 663, 664, 668, 669, 670, 674, 679, 697, 698, 699, 703, 705, 721, 726, 727, 728, 731, 736, 739, 740, 742, 743, 744, 745, 746, 747, 748, 751, 752, 755, 756, 758, 760, 774, 775, 777, 788, 789, 801, 802, 803, 804, 805, 808, 809, 814, 816, 817, 818, 819, 820, 821, 823, 827, 831, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 856, 857, 858, 859, 860, 862, 863, 864, 865, 868, 869, 872, 873, 874, 876, 882, 895, 901, 913, 915, 916, 921, 923, 924, 927, 944, 945, 949, 952, 957, 960, 964, 965, 967, 969, 999, 1000, 1001, 1013, 1017, 1031, 1032, 1033, 1034, 1036, 1037, 1038, 1041, 1047, 1048, 1050, 1057, 1058, 1060, 1061, 1062, 1063, 1064, 1066, 1074, 1078, 1092, 1093, 1094, 1096, 1097, 1098, 1101, 1107, 1111, 1112, 1114, 1121, 1122, 1124, 1125, 1126, 1127, 1128, 1130, 1138, 1140, 1143, 1144, 1149, 1150, 1151, 1152, 1155, 1156, 1159, 1164, 1167, 1171, 1212, 1213, 1214, 1220, 1232, 1233, 1235, 1236, 1237, 1245, 1248, 1249, 1252, 1259, 1262, 1263, 1264, 1272, 1276, 1278, 1284, 1296, 1297, 1299, 1300, 1301, 1309, 1312, 1313, 1315, 1321, 1328, 1331, 1332, 1333, 1339, 1343, 1345], "summary": {"covered_lines": 396, "num_statements": 486, "percent_covered": 81.48148148148148, "percent_covered_display": "81", "missing_lines": 90, "excluded_lines": 0}, "missing_lines": [86, 114, 115, 116, 127, 128, 137, 138, 158, 435, 438, 439, 440, 444, 447, 448, 449, 455, 456, 459, 460, 461, 571, 572, 573, 574, 577, 580, 583, 586, 587, 588, 589, 590, 591, 592, 595, 596, 597, 598, 601, 604, 607, 610, 611, 614, 617, 671, 675, 680, 681, 682, 685, 686, 689, 692, 693, 810, 811, 812, 824, 825, 826, 902, 928, 1019, 1020, 1021, 1022, 1024, 1042, 1043, 1044, 1080, 1081, 1082, 1083, 1085, 1102, 1103, 1104, 1141, 1250, 1254, 1273, 1274, 1314, 1323, 1340, 1341], "excluded_lines": [], "functions": {"ScanResultFormatter.__init__": {"executed_lines": [33, 34], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultFormatter._create_telemetry_service": {"executed_lines": [38, 39, 40, 41, 42, 43], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultFormatter.format_directory_results_json": {"executed_lines": [61, 66, 67, 69, 71, 72, 80, 83, 84, 92, 93, 94, 95, 96, 97, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 119, 131, 132, 133, 136, 141, 143, 146, 149, 154, 155, 156, 161, 165, 166, 224, 249, 252, 253, 254, 257, 260, 263, 297], "summary": {"covered_lines": 51, "num_statements": 60, "percent_covered": 85.0, "percent_covered_display": "85", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [86, 114, 115, 116, 127, 128, 137, 138, 158], "excluded_lines": []}, "ScanResultFormatter.format_single_file_results_json": {"executed_lines": [313, 316], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultFormatter.format_diff_results_json": {"executed_lines": [336, 341, 342, 343, 346, 351, 354, 355, 358, 359, 360, 366, 368], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultFormatter.format_single_file_results_markdown": {"executed_lines": [384, 385], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultFormatter.format_directory_results_markdown": {"executed_lines": [405, 408, 409, 410, 411, 412, 415, 418, 419, 420, 422, 423, 424, 427, 428, 452, 453, 454, 464, 465, 466, 467, 468, 471, 472, 473, 474, 475, 477, 478, 479, 480, 481, 482, 483, 484, 487, 488, 489, 490, 493, 494, 495, 496, 499, 500, 508, 509, 511, 512, 513, 514, 517, 520, 527, 530, 531, 532, 535, 536, 537, 538, 541, 544, 545, 546, 547, 548, 549, 552, 553, 554, 555, 557, 558, 561, 562, 563, 564, 569, 570, 622, 623, 624, 625, 626, 627, 630, 633, 636, 637, 640, 645, 646, 647, 648, 649, 651, 652, 653, 655, 656, 657, 658, 662, 663, 664, 668, 669, 670, 674, 679, 697, 698, 699, 703], "summary": {"covered_lines": 116, "num_statements": 164, "percent_covered": 70.73170731707317, "percent_covered_display": "71", "missing_lines": 48, "excluded_lines": 0}, "missing_lines": [435, 438, 439, 440, 444, 447, 448, 449, 455, 456, 459, 460, 461, 571, 572, 573, 574, 577, 580, 583, 586, 587, 588, 589, 590, 591, 592, 595, 596, 597, 598, 601, 604, 607, 610, 611, 614, 617, 671, 675, 680, 681, 682, 685, 686, 689, 692, 693], "excluded_lines": []}, "ScanResultFormatter.format_diff_results_markdown": {"executed_lines": [721, 726, 727, 728, 731, 736, 739, 740, 742, 743, 744, 745, 746, 747, 748, 751, 752, 755, 756, 758], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultFormatter.format_code_results_markdown": {"executed_lines": [774, 775], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanResultFormatter._aggregate_validation_stats": {"executed_lines": [788, 789, 801, 802, 803, 804, 805, 808, 809, 814, 816, 817, 818, 819, 820, 821, 823, 827, 831, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 856, 857, 858, 859, 860, 862, 863, 864, 865, 868, 869, 872, 873, 874, 876, 882], "summary": {"covered_lines": 45, "num_statements": 51, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [810, 811, 812, 824, 825, 826], "excluded_lines": []}, "ScanResultFormatter._get_telemetry_llm_usage_stats": {"executed_lines": [901, 913, 915, 916, 921, 923, 924, 927, 944, 945, 949, 952, 957, 960, 964, 965, 967, 969, 999, 1000, 1001], "summary": {"covered_lines": 21, "num_statements": 23, "percent_covered": 91.30434782608695, "percent_covered_display": "91", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [902, 928], "excluded_lines": []}, "ScanResultFormatter._get_telemetry_semgrep_summary": {"executed_lines": [1017, 1031, 1032, 1033, 1034, 1036, 1037, 1038, 1041, 1047, 1048, 1050, 1057, 1058, 1060, 1061, 1062, 1063, 1064, 1066], "summary": {"covered_lines": 20, "num_statements": 28, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [1019, 1020, 1021, 1022, 1024, 1042, 1043, 1044], "excluded_lines": []}, "ScanResultFormatter._get_telemetry_llm_summary": {"executed_lines": [1078, 1092, 1093, 1094, 1096, 1097, 1098, 1101, 1107, 1111, 1112, 1114, 1121, 1122, 1124, 1125, 1126, 1127, 1128, 1130], "summary": {"covered_lines": 20, "num_statements": 28, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [1080, 1081, 1082, 1083, 1085, 1102, 1103, 1104], "excluded_lines": []}, "ScanResultFormatter._get_telemetry_insights": {"executed_lines": [1140, 1143, 1144, 1149, 1150, 1151, 1152, 1155, 1156, 1159, 1164, 1167, 1171, 1212, 1213, 1214], "summary": {"covered_lines": 16, "num_statements": 17, "percent_covered": 94.11764705882354, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1141], "excluded_lines": []}, "ScanResultFormatter._get_semgrep_summary": {"executed_lines": [1232, 1233, 1235, 1236, 1237, 1245, 1248, 1249, 1252, 1259, 1262, 1263, 1264, 1272, 1276, 1278], "summary": {"covered_lines": 16, "num_statements": 20, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1250, 1254, 1273, 1274], "excluded_lines": []}, "ScanResultFormatter._get_llm_summary": {"executed_lines": [1296, 1297, 1299, 1300, 1301, 1309, 1312, 1313, 1315, 1321, 1328, 1331, 1332, 1333, 1339, 1343, 1345], "summary": {"covered_lines": 17, "num_statements": 21, "percent_covered": 80.95238095238095, "percent_covered_display": "81", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1314, 1323, 1340, 1341], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 21, 22, 24, 36, 45, 299, 320, 370, 389, 705, 760, 777, 895, 1013, 1074, 1138, 1220, 1284], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ScanResultFormatter": {"executed_lines": [33, 34, 38, 39, 40, 41, 42, 43, 61, 66, 67, 69, 71, 72, 80, 83, 84, 92, 93, 94, 95, 96, 97, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 113, 119, 131, 132, 133, 136, 141, 143, 146, 149, 154, 155, 156, 161, 165, 166, 224, 249, 252, 253, 254, 257, 260, 263, 297, 313, 316, 336, 341, 342, 343, 346, 351, 354, 355, 358, 359, 360, 366, 368, 384, 385, 405, 408, 409, 410, 411, 412, 415, 418, 419, 420, 422, 423, 424, 427, 428, 452, 453, 454, 464, 465, 466, 467, 468, 471, 472, 473, 474, 475, 477, 478, 479, 480, 481, 482, 483, 484, 487, 488, 489, 490, 493, 494, 495, 496, 499, 500, 508, 509, 511, 512, 513, 514, 517, 520, 527, 530, 531, 532, 535, 536, 537, 538, 541, 544, 545, 546, 547, 548, 549, 552, 553, 554, 555, 557, 558, 561, 562, 563, 564, 569, 570, 622, 623, 624, 625, 626, 627, 630, 633, 636, 637, 640, 645, 646, 647, 648, 649, 651, 652, 653, 655, 656, 657, 658, 662, 663, 664, 668, 669, 670, 674, 679, 697, 698, 699, 703, 721, 726, 727, 728, 731, 736, 739, 740, 742, 743, 744, 745, 746, 747, 748, 751, 752, 755, 756, 758, 774, 775, 788, 789, 801, 802, 803, 804, 805, 808, 809, 814, 816, 817, 818, 819, 820, 821, 823, 827, 831, 844, 845, 846, 847, 848, 850, 851, 852, 853, 854, 856, 857, 858, 859, 860, 862, 863, 864, 865, 868, 869, 872, 873, 874, 876, 882, 901, 913, 915, 916, 921, 923, 924, 927, 944, 945, 949, 952, 957, 960, 964, 965, 967, 969, 999, 1000, 1001, 1017, 1031, 1032, 1033, 1034, 1036, 1037, 1038, 1041, 1047, 1048, 1050, 1057, 1058, 1060, 1061, 1062, 1063, 1064, 1066, 1078, 1092, 1093, 1094, 1096, 1097, 1098, 1101, 1107, 1111, 1112, 1114, 1121, 1122, 1124, 1125, 1126, 1127, 1128, 1130, 1140, 1143, 1144, 1149, 1150, 1151, 1152, 1155, 1156, 1159, 1164, 1167, 1171, 1212, 1213, 1214, 1232, 1233, 1235, 1236, 1237, 1245, 1248, 1249, 1252, 1259, 1262, 1263, 1264, 1272, 1276, 1278, 1296, 1297, 1299, 1300, 1301, 1309, 1312, 1313, 1315, 1321, 1328, 1331, 1332, 1333, 1339, 1343, 1345], "summary": {"covered_lines": 369, "num_statements": 459, "percent_covered": 80.3921568627451, "percent_covered_display": "80", "missing_lines": 90, "excluded_lines": 0}, "missing_lines": [86, 114, 115, 116, 127, 128, 137, 138, 158, 435, 438, 439, 440, 444, 447, 448, 449, 455, 456, 459, 460, 461, 571, 572, 573, 574, 577, 580, 583, 586, 587, 588, 589, 590, 591, 592, 595, 596, 597, 598, 601, 604, 607, 610, 611, 614, 617, 671, 675, 680, 681, 682, 685, 686, 689, 692, 693, 810, 811, 812, 824, 825, 826, 902, 928, 1019, 1020, 1021, 1022, 1024, 1042, 1043, 1044, 1080, 1081, 1082, 1083, 1085, 1102, 1103, 1104, 1141, 1250, 1254, 1273, 1274, 1314, 1323, 1340, 1341], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 21, 22, 24, 36, 45, 299, 320, 370, 389, 705, 760, 777, 895, 1013, 1074, 1138, 1220, 1284], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/scan_engine.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 32, 51, 53, 54, 55, 56, 57, 58, 61, 64, 66, 72, 102, 111, 113, 115, 121, 124, 125, 128, 130, 131, 132, 136, 137, 139, 140, 143, 145, 147, 153, 166, 168, 169, 170, 171, 173, 175, 176, 178, 179, 181, 182, 183, 185, 196, 198, 204, 206, 213, 214, 215, 217, 218, 221, 222, 223, 224, 225, 227, 228, 229, 232, 233, 234, 235, 236, 237, 239, 240, 242, 247, 254, 256, 257, 269, 270, 271, 274, 275, 276, 282, 286, 300, 301, 303, 324, 325, 326, 327, 328, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 344, 347, 350, 351, 355, 356, 358, 359, 361, 367, 370, 379, 380, 383, 384, 385, 386, 387, 388, 391, 392, 398, 403, 405, 406, 411, 412, 413, 414, 417, 418, 421, 423, 425, 428, 429, 430, 431, 434, 436, 438, 440, 449, 451, 452, 453, 455, 469, 473, 479, 481, 487, 490, 492, 503, 504, 506, 507, 508, 509, 513, 514, 515, 516, 523, 525, 552, 578, 598, 623, 650, 673, 695, 696, 699, 703, 704, 705, 714, 717, 741, 752, 753, 756, 764, 769, 771, 772, 778, 786, 792, 793, 796, 797, 798, 799, 800, 803, 804, 805, 806, 814, 815, 832, 833, 834, 835, 836, 844, 849, 852, 890, 891, 892, 893, 894, 895, 900, 915, 916, 917, 918, 919, 920, 938, 943, 962, 965, 966, 967, 968, 969, 971, 973, 975, 1063, 1073, 1083, 1089, 1095, 1097, 1117, 1118, 1119, 1120, 1124, 1125, 1126, 1129, 1133, 1134, 1143, 1164, 1175, 1177, 1178, 1179, 1220, 1221, 1222, 1224, 1232, 1233, 1234, 1237, 1238, 1239, 1240, 1243, 1244, 1245, 1246, 1248, 1254, 1255, 1272, 1273, 1274, 1275, 1276, 1283, 1288, 1289, 1291, 1313, 1317, 1318, 1319, 1327, 1328, 1329, 1330, 1331, 1335, 1338, 1343, 1346, 1347, 1356, 1357, 1358, 1368, 1369, 1372, 1380, 1381, 1383, 1385, 1387, 1388, 1391, 1393, 1396, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1414, 1415, 1416, 1417, 1425, 1430, 1435, 1446, 1447, 1449, 1450, 1458, 1459, 1466, 1467, 1475, 1476, 1482, 1490, 1491, 1492, 1493, 1507, 1508, 1509, 1510, 1511, 1512, 1516, 1517, 1519, 1528, 1534, 1541, 1543, 1547, 1549, 1553, 1559, 1560, 1563, 1568, 1572, 1583, 1585, 1607, 1608, 1609, 1610, 1615, 1620, 1621, 1622, 1631, 1636, 1660, 1671, 1674, 1675, 1682, 1683, 1684, 1686, 1687, 1688, 1690, 1693, 1695, 1696, 1702, 1703, 1706, 1708, 1709, 1710, 1711, 1712, 1713, 1716, 1725, 1726, 1727, 1728, 1729, 1731, 1734, 1739, 1740, 1741, 1743, 1793, 1794, 1796, 1797, 1798, 1799, 1802, 1836, 1837, 1838, 1839, 1845, 1846, 1847, 1853, 1859, 1864, 1865, 1868, 1873, 1874, 1875, 1876, 1879, 1880, 1881, 1886, 1900, 1903, 1905, 1907, 1909, 1910, 1913, 1919, 1922, 1923, 1928, 1929, 1930, 1931, 1933, 1938, 1952, 1962, 1967, 1970, 1985, 1986, 1987, 1995, 1996, 2003, 2004, 2007, 2014, 2015, 2018, 2028, 2029, 2033, 2036, 2037, 2038, 2039, 2048, 2049, 2050, 2051, 2054, 2055, 2056, 2061, 2062, 2065, 2090, 2091, 2093, 2278, 2424, 2434, 2435, 2476, 2487, 2488, 2533, 2556, 2588], "summary": {"covered_lines": 521, "num_statements": 954, "percent_covered": 54.61215932914046, "percent_covered_display": "55", "missing_lines": 433, "excluded_lines": 0}, "missing_lines": [352, 353, 510, 511, 518, 519, 520, 521, 531, 533, 544, 550, 558, 560, 561, 562, 566, 567, 571, 572, 576, 580, 583, 584, 585, 588, 589, 592, 594, 596, 608, 609, 610, 612, 633, 634, 637, 639, 659, 660, 661, 663, 700, 728, 731, 765, 766, 808, 817, 818, 850, 862, 863, 864, 865, 874, 875, 876, 880, 881, 882, 901, 902, 904, 909, 910, 912, 913, 922, 923, 924, 925, 926, 927, 928, 929, 930, 932, 933, 934, 935, 944, 945, 946, 950, 955, 977, 978, 981, 983, 986, 987, 988, 998, 1003, 1008, 1009, 1012, 1013, 1015, 1016, 1018, 1022, 1023, 1026, 1027, 1029, 1030, 1032, 1037, 1038, 1041, 1045, 1046, 1047, 1048, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, 1060, 1090, 1091, 1130, 1154, 1181, 1182, 1184, 1187, 1195, 1197, 1199, 1205, 1206, 1207, 1209, 1210, 1211, 1213, 1215, 1216, 1217, 1257, 1258, 1301, 1302, 1303, 1304, 1314, 1315, 1336, 1337, 1344, 1349, 1350, 1351, 1352, 1353, 1354, 1359, 1360, 1361, 1362, 1363, 1364, 1366, 1367, 1373, 1374, 1375, 1405, 1406, 1407, 1408, 1436, 1437, 1438, 1439, 1443, 1455, 1456, 1461, 1472, 1473, 1478, 1485, 1486, 1499, 1500, 1501, 1502, 1505, 1513, 1514, 1535, 1536, 1544, 1548, 1550, 1554, 1569, 1573, 1575, 1576, 1578, 1579, 1580, 1581, 1616, 1617, 1647, 1650, 1697, 1754, 1755, 1756, 1757, 1764, 1767, 1779, 1780, 1781, 1783, 1784, 1787, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1820, 1825, 1826, 1827, 1829, 1849, 1850, 1915, 1918, 1932, 1939, 1940, 1943, 1946, 1947, 1948, 1971, 1972, 1975, 1976, 1978, 1979, 1981, 1992, 1993, 1998, 2022, 2023, 2024, 2025, 2040, 2041, 2042, 2044, 2045, 2125, 2126, 2127, 2130, 2133, 2134, 2135, 2141, 2153, 2154, 2157, 2160, 2161, 2162, 2164, 2171, 2172, 2175, 2180, 2181, 2183, 2185, 2187, 2188, 2191, 2193, 2196, 2197, 2199, 2200, 2201, 2204, 2209, 2210, 2211, 2212, 2215, 2216, 2222, 2223, 2224, 2225, 2226, 2228, 2238, 2241, 2248, 2249, 2253, 2254, 2255, 2256, 2258, 2259, 2260, 2261, 2262, 2264, 2267, 2276, 2306, 2307, 2308, 2309, 2314, 2315, 2316, 2319, 2320, 2327, 2328, 2329, 2331, 2332, 2333, 2335, 2338, 2340, 2341, 2342, 2347, 2348, 2349, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2367, 2368, 2370, 2371, 2372, 2377, 2378, 2380, 2387, 2390, 2392, 2393, 2394, 2395, 2397, 2409, 2411, 2412, 2415, 2419, 2437, 2438, 2439, 2440, 2442, 2445, 2446, 2458, 2460, 2466, 2467, 2469, 2471, 2472, 2474, 2490, 2491, 2492, 2493, 2495, 2498, 2499, 2511, 2513, 2520, 2523, 2526, 2528, 2530, 2531, 2535, 2559, 2565, 2573, 2583, 2584, 2586, 2590, 2593, 2594, 2597, 2598, 2601, 2602, 2605, 2606, 2607, 2609], "excluded_lines": [], "functions": {"EnhancedScanResult.__init__": {"executed_lines": [51, 53, 54, 55, 56, 57, 58, 61, 64], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult._create_default_usage_stats": {"executed_lines": [72], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult._detect_language_from_path": {"executed_lines": [111, 113], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult._combine_threats": {"executed_lines": [121, 124, 125, 128, 130, 131, 132, 136, 137, 139, 140, 143, 145], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult._calculate_stats": {"executed_lines": [153], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult._count_by_severity": {"executed_lines": [168, 169, 170, 171], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult._count_by_category": {"executed_lines": [175, 176, 178, 179, 181, 182, 183], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult.get_high_confidence_threats": {"executed_lines": [196], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult.get_critical_threats": {"executed_lines": [204], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult.add_llm_usage": {"executed_lines": [213, 214, 215, 217, 218, 221, 222, 223, 224, 225, 227, 228, 229, 232, 233, 234, 235, 236, 237, 239, 240, 242], "summary": {"covered_lines": 22, "num_statements": 22, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "EnhancedScanResult.get_validation_summary": {"executed_lines": [254, 256, 257, 269, 270, 271, 274, 275, 276, 282, 286], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanEngine.__init__": {"executed_lines": [324, 325, 326, 327, 328, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 344, 347, 350, 351, 355, 356, 358, 359, 361, 367, 370, 379, 380, 383, 384, 385, 386, 387, 388, 391, 392, 398, 403, 405, 406, 411, 412, 413, 414, 417, 418, 421, 423, 425, 428, 429, 430, 431, 434, 436, 438], "summary": {"covered_lines": 56, "num_statements": 58, "percent_covered": 96.55172413793103, "percent_covered_display": "97", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [352, 353], "excluded_lines": []}, "ScanEngine._detect_language": {"executed_lines": [449, 451, 452, 453], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanEngine._filter_by_severity": {"executed_lines": [469, 473, 479, 481, 487, 490], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanEngine._apply_validation_filter": {"executed_lines": [503, 504, 506, 507, 508, 509, 513, 514, 515, 516, 523], "summary": {"covered_lines": 11, "num_statements": 17, "percent_covered": 64.70588235294117, "percent_covered_display": "65", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [510, 511, 518, 519, 520, 521], "excluded_lines": []}, "ScanEngine.get_scanner_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [531, 533, 544, 550], "excluded_lines": []}, "ScanEngine.set_llm_enabled": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [558, 560, 561, 562, 566, 567, 571, 572, 576], "excluded_lines": []}, "ScanEngine.reload_configuration": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 9, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [580, 583, 584, 585, 588, 589, 592, 594, 596], "excluded_lines": []}, "ScanEngine.scan_code_sync": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [608, 609, 610, 612], "excluded_lines": []}, "ScanEngine.scan_directory_sync": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [633, 634, 637, 639], "excluded_lines": []}, "ScanEngine.scan_file_sync": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [659, 660, 661, 663], "excluded_lines": []}, "ScanEngine.scan_code": {"executed_lines": [695, 696, 699, 703, 704, 705, 714, 717], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [700, 728, 731], "excluded_lines": []}, "ScanEngine._scan_code_with_context": {"executed_lines": [752, 753, 756, 764, 769, 771, 772, 778, 786, 792, 793, 796, 797, 798, 799, 800, 803, 804, 805, 806, 814, 815, 832, 833, 834, 835, 836, 844, 849, 852, 890, 891, 892, 893, 894, 895, 900, 915, 916, 917, 918, 919, 920, 938, 943, 962, 965, 966, 967, 968, 969, 971, 973, 975, 1063, 1073, 1083, 1089, 1095], "summary": {"covered_lines": 59, "num_statements": 142, "percent_covered": 41.54929577464789, "percent_covered_display": "42", "missing_lines": 83, "excluded_lines": 0}, "missing_lines": [765, 766, 808, 817, 818, 850, 862, 863, 864, 865, 874, 875, 876, 880, 881, 882, 901, 902, 904, 909, 910, 912, 913, 922, 923, 924, 925, 926, 927, 928, 929, 930, 932, 933, 934, 935, 944, 945, 946, 950, 955, 977, 978, 981, 983, 986, 987, 988, 998, 1003, 1008, 1009, 1012, 1013, 1015, 1016, 1018, 1022, 1023, 1026, 1027, 1029, 1030, 1032, 1037, 1038, 1041, 1045, 1046, 1047, 1048, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, 1060, 1090, 1091], "excluded_lines": []}, "ScanEngine.scan_file": {"executed_lines": [1117, 1118, 1119, 1120, 1124, 1125, 1126, 1129, 1133, 1134, 1143], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1130, 1154], "excluded_lines": []}, "ScanEngine._scan_file_with_context": {"executed_lines": [1175, 1177, 1178, 1179, 1220, 1221, 1222, 1224, 1232, 1233, 1234, 1237, 1238, 1239, 1240, 1243, 1244, 1245, 1246, 1248, 1254, 1255, 1272, 1273, 1274, 1275, 1276, 1283, 1288, 1289, 1291, 1313, 1317, 1318, 1319, 1327, 1328, 1329, 1330, 1331, 1335, 1338, 1343, 1346, 1347, 1356, 1357, 1358, 1368, 1369, 1372, 1380, 1381, 1383, 1385, 1387, 1388, 1391, 1393, 1396, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1414, 1415, 1416, 1417, 1425, 1430, 1435, 1446, 1447, 1449, 1450, 1458, 1459, 1466, 1467, 1475, 1476, 1482, 1490, 1491, 1492, 1493, 1507, 1508, 1509, 1510, 1511, 1512, 1516, 1517, 1519, 1528, 1534, 1541, 1543, 1547, 1549, 1553, 1559, 1560, 1563, 1568, 1572, 1583], "summary": {"covered_lines": 111, "num_statements": 194, "percent_covered": 57.21649484536083, "percent_covered_display": "57", "missing_lines": 83, "excluded_lines": 0}, "missing_lines": [1181, 1182, 1184, 1187, 1195, 1197, 1199, 1205, 1206, 1207, 1209, 1210, 1211, 1213, 1215, 1216, 1217, 1257, 1258, 1301, 1302, 1303, 1304, 1314, 1315, 1336, 1337, 1344, 1349, 1350, 1351, 1352, 1353, 1354, 1359, 1360, 1361, 1362, 1363, 1364, 1366, 1367, 1373, 1374, 1375, 1405, 1406, 1407, 1408, 1436, 1437, 1438, 1439, 1443, 1455, 1456, 1461, 1472, 1473, 1478, 1485, 1486, 1499, 1500, 1501, 1502, 1505, 1513, 1514, 1535, 1536, 1544, 1548, 1550, 1554, 1569, 1573, 1575, 1576, 1578, 1579, 1580, 1581], "excluded_lines": []}, "ScanEngine.scan_directory": {"executed_lines": [1607, 1608, 1609, 1610, 1615, 1620, 1621, 1622, 1631, 1636], "summary": {"covered_lines": 10, "num_statements": 14, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1616, 1617, 1647, 1650], "excluded_lines": []}, "ScanEngine._execute_directory_scan": {"executed_lines": [1671, 1674, 1675, 1682, 1683, 1684, 1686, 1687, 1688, 1690, 1693, 1695, 1696, 1702, 1703, 1706, 1708, 1709, 1710, 1711, 1712, 1713, 1716, 1725, 1726, 1727, 1728, 1729, 1731, 1734, 1739, 1740, 1741, 1743, 1793, 1794, 1796, 1797, 1798, 1799, 1802, 1836, 1837, 1838, 1839, 1845, 1846, 1847, 1853, 1859, 1864, 1865, 1868, 1873, 1874, 1875, 1876, 1879, 1880, 1881, 1886, 1900, 1903, 1905, 1907, 1909, 1910, 1913, 1919, 1922, 1923, 1928, 1929, 1930, 1931, 1933, 1938, 1952, 1962, 1967, 1970, 1985, 1986, 1987, 1995, 1996, 2003, 2004, 2007, 2014, 2015, 2018, 2028, 2029, 2033, 2036, 2037, 2038, 2039, 2048, 2049, 2050, 2051, 2054, 2055, 2056, 2061, 2062, 2065, 2090, 2091], "summary": {"covered_lines": 111, "num_statements": 169, "percent_covered": 65.68047337278107, "percent_covered_display": "66", "missing_lines": 58, "excluded_lines": 0}, "missing_lines": [1697, 1754, 1755, 1756, 1757, 1764, 1767, 1779, 1780, 1781, 1783, 1784, 1787, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1820, 1825, 1826, 1827, 1829, 1849, 1850, 1915, 1918, 1932, 1939, 1940, 1943, 1946, 1947, 1948, 1971, 1972, 1975, 1976, 1978, 1979, 1981, 1992, 1993, 1998, 2022, 2023, 2024, 2025, 2040, 2041, 2042, 2044, 2045], "excluded_lines": []}, "ScanEngine._process_single_file": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 60, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 60, "excluded_lines": 0}, "missing_lines": [2125, 2126, 2127, 2130, 2133, 2134, 2135, 2141, 2153, 2154, 2157, 2160, 2161, 2162, 2164, 2171, 2172, 2175, 2180, 2181, 2183, 2185, 2187, 2188, 2191, 2193, 2196, 2197, 2199, 2200, 2201, 2204, 2209, 2210, 2211, 2212, 2215, 2216, 2222, 2223, 2224, 2225, 2226, 2228, 2238, 2241, 2248, 2249, 2253, 2254, 2255, 2256, 2258, 2259, 2260, 2261, 2262, 2264, 2267, 2276], "excluded_lines": []}, "ScanEngine.scan_directory_streaming": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 50, "excluded_lines": 0}, "missing_lines": [2306, 2307, 2308, 2309, 2314, 2315, 2316, 2319, 2320, 2327, 2328, 2329, 2331, 2332, 2333, 2335, 2338, 2340, 2341, 2342, 2347, 2348, 2349, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2367, 2368, 2370, 2371, 2372, 2377, 2378, 2380, 2387, 2390, 2392, 2393, 2394, 2395, 2397, 2409, 2411, 2412, 2415, 2419], "excluded_lines": []}, "ScanEngine._get_cached_scan_result": {"executed_lines": [2434, 2435], "summary": {"covered_lines": 2, "num_statements": 17, "percent_covered": 11.764705882352942, "percent_covered_display": "12", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [2437, 2438, 2439, 2440, 2442, 2445, 2446, 2458, 2460, 2466, 2467, 2469, 2471, 2472, 2474], "excluded_lines": []}, "ScanEngine._cache_scan_result": {"executed_lines": [2487, 2488], "summary": {"covered_lines": 2, "num_statements": 17, "percent_covered": 11.764705882352942, "percent_covered_display": "12", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [2490, 2491, 2492, 2493, 2495, 2498, 2499, 2511, 2513, 2520, 2523, 2526, 2528, 2530, 2531], "excluded_lines": []}, "ScanEngine._serialize_scan_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [2535], "excluded_lines": []}, "ScanEngine._deserialize_scan_result": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 6, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [2559, 2565, 2573, 2583, 2584, 2586], "excluded_lines": []}, "ScanEngine.clear_cache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [2590, 2593, 2594, 2597, 2598, 2601, 2602, 2605, 2606, 2607, 2609], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 32, 66, 102, 115, 147, 166, 173, 185, 198, 206, 247, 300, 301, 303, 440, 455, 492, 525, 552, 578, 598, 623, 650, 673, 741, 1097, 1164, 1585, 1660, 2093, 2278, 2424, 2476, 2533, 2556, 2588], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"EnhancedScanResult": {"executed_lines": [51, 53, 54, 55, 56, 57, 58, 61, 64, 72, 111, 113, 121, 124, 125, 128, 130, 131, 132, 136, 137, 139, 140, 143, 145, 153, 168, 169, 170, 171, 175, 176, 178, 179, 181, 182, 183, 196, 204, 213, 214, 215, 217, 218, 221, 222, 223, 224, 225, 227, 228, 229, 232, 233, 234, 235, 236, 237, 239, 240, 242, 254, 256, 257, 269, 270, 271, 274, 275, 276, 282, 286], "summary": {"covered_lines": 72, "num_statements": 72, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanEngine": {"executed_lines": [324, 325, 326, 327, 328, 331, 332, 333, 334, 335, 336, 339, 340, 341, 342, 344, 347, 350, 351, 355, 356, 358, 359, 361, 367, 370, 379, 380, 383, 384, 385, 386, 387, 388, 391, 392, 398, 403, 405, 406, 411, 412, 413, 414, 417, 418, 421, 423, 425, 428, 429, 430, 431, 434, 436, 438, 449, 451, 452, 453, 469, 473, 479, 481, 487, 490, 503, 504, 506, 507, 508, 509, 513, 514, 515, 516, 523, 695, 696, 699, 703, 704, 705, 714, 717, 752, 753, 756, 764, 769, 771, 772, 778, 786, 792, 793, 796, 797, 798, 799, 800, 803, 804, 805, 806, 814, 815, 832, 833, 834, 835, 836, 844, 849, 852, 890, 891, 892, 893, 894, 895, 900, 915, 916, 917, 918, 919, 920, 938, 943, 962, 965, 966, 967, 968, 969, 971, 973, 975, 1063, 1073, 1083, 1089, 1095, 1117, 1118, 1119, 1120, 1124, 1125, 1126, 1129, 1133, 1134, 1143, 1175, 1177, 1178, 1179, 1220, 1221, 1222, 1224, 1232, 1233, 1234, 1237, 1238, 1239, 1240, 1243, 1244, 1245, 1246, 1248, 1254, 1255, 1272, 1273, 1274, 1275, 1276, 1283, 1288, 1289, 1291, 1313, 1317, 1318, 1319, 1327, 1328, 1329, 1330, 1331, 1335, 1338, 1343, 1346, 1347, 1356, 1357, 1358, 1368, 1369, 1372, 1380, 1381, 1383, 1385, 1387, 1388, 1391, 1393, 1396, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1414, 1415, 1416, 1417, 1425, 1430, 1435, 1446, 1447, 1449, 1450, 1458, 1459, 1466, 1467, 1475, 1476, 1482, 1490, 1491, 1492, 1493, 1507, 1508, 1509, 1510, 1511, 1512, 1516, 1517, 1519, 1528, 1534, 1541, 1543, 1547, 1549, 1553, 1559, 1560, 1563, 1568, 1572, 1583, 1607, 1608, 1609, 1610, 1615, 1620, 1621, 1622, 1631, 1636, 1671, 1674, 1675, 1682, 1683, 1684, 1686, 1687, 1688, 1690, 1693, 1695, 1696, 1702, 1703, 1706, 1708, 1709, 1710, 1711, 1712, 1713, 1716, 1725, 1726, 1727, 1728, 1729, 1731, 1734, 1739, 1740, 1741, 1743, 1793, 1794, 1796, 1797, 1798, 1799, 1802, 1836, 1837, 1838, 1839, 1845, 1846, 1847, 1853, 1859, 1864, 1865, 1868, 1873, 1874, 1875, 1876, 1879, 1880, 1881, 1886, 1900, 1903, 1905, 1907, 1909, 1910, 1913, 1919, 1922, 1923, 1928, 1929, 1930, 1931, 1933, 1938, 1952, 1962, 1967, 1970, 1985, 1986, 1987, 1995, 1996, 2003, 2004, 2007, 2014, 2015, 2018, 2028, 2029, 2033, 2036, 2037, 2038, 2039, 2048, 2049, 2050, 2051, 2054, 2055, 2056, 2061, 2062, 2065, 2090, 2091, 2434, 2435, 2487, 2488], "summary": {"covered_lines": 391, "num_statements": 824, "percent_covered": 47.45145631067961, "percent_covered_display": "47", "missing_lines": 433, "excluded_lines": 0}, "missing_lines": [352, 353, 510, 511, 518, 519, 520, 521, 531, 533, 544, 550, 558, 560, 561, 562, 566, 567, 571, 572, 576, 580, 583, 584, 585, 588, 589, 592, 594, 596, 608, 609, 610, 612, 633, 634, 637, 639, 659, 660, 661, 663, 700, 728, 731, 765, 766, 808, 817, 818, 850, 862, 863, 864, 865, 874, 875, 876, 880, 881, 882, 901, 902, 904, 909, 910, 912, 913, 922, 923, 924, 925, 926, 927, 928, 929, 930, 932, 933, 934, 935, 944, 945, 946, 950, 955, 977, 978, 981, 983, 986, 987, 988, 998, 1003, 1008, 1009, 1012, 1013, 1015, 1016, 1018, 1022, 1023, 1026, 1027, 1029, 1030, 1032, 1037, 1038, 1041, 1045, 1046, 1047, 1048, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1059, 1060, 1090, 1091, 1130, 1154, 1181, 1182, 1184, 1187, 1195, 1197, 1199, 1205, 1206, 1207, 1209, 1210, 1211, 1213, 1215, 1216, 1217, 1257, 1258, 1301, 1302, 1303, 1304, 1314, 1315, 1336, 1337, 1344, 1349, 1350, 1351, 1352, 1353, 1354, 1359, 1360, 1361, 1362, 1363, 1364, 1366, 1367, 1373, 1374, 1375, 1405, 1406, 1407, 1408, 1436, 1437, 1438, 1439, 1443, 1455, 1456, 1461, 1472, 1473, 1478, 1485, 1486, 1499, 1500, 1501, 1502, 1505, 1513, 1514, 1535, 1536, 1544, 1548, 1550, 1554, 1569, 1573, 1575, 1576, 1578, 1579, 1580, 1581, 1616, 1617, 1647, 1650, 1697, 1754, 1755, 1756, 1757, 1764, 1767, 1779, 1780, 1781, 1783, 1784, 1787, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1816, 1820, 1825, 1826, 1827, 1829, 1849, 1850, 1915, 1918, 1932, 1939, 1940, 1943, 1946, 1947, 1948, 1971, 1972, 1975, 1976, 1978, 1979, 1981, 1992, 1993, 1998, 2022, 2023, 2024, 2025, 2040, 2041, 2042, 2044, 2045, 2125, 2126, 2127, 2130, 2133, 2134, 2135, 2141, 2153, 2154, 2157, 2160, 2161, 2162, 2164, 2171, 2172, 2175, 2180, 2181, 2183, 2185, 2187, 2188, 2191, 2193, 2196, 2197, 2199, 2200, 2201, 2204, 2209, 2210, 2211, 2212, 2215, 2216, 2222, 2223, 2224, 2225, 2226, 2228, 2238, 2241, 2248, 2249, 2253, 2254, 2255, 2256, 2258, 2259, 2260, 2261, 2262, 2264, 2267, 2276, 2306, 2307, 2308, 2309, 2314, 2315, 2316, 2319, 2320, 2327, 2328, 2329, 2331, 2332, 2333, 2335, 2338, 2340, 2341, 2342, 2347, 2348, 2349, 2358, 2359, 2360, 2361, 2362, 2363, 2364, 2367, 2368, 2370, 2371, 2372, 2377, 2378, 2380, 2387, 2390, 2392, 2393, 2394, 2395, 2397, 2409, 2411, 2412, 2415, 2419, 2437, 2438, 2439, 2440, 2442, 2445, 2446, 2458, 2460, 2466, 2467, 2469, 2471, 2472, 2474, 2490, 2491, 2492, 2493, 2495, 2498, 2499, 2511, 2513, 2520, 2523, 2526, 2528, 2530, 2531, 2535, 2559, 2565, 2573, 2583, 2584, 2586, 2590, 2593, 2594, 2597, 2598, 2601, 2602, 2605, 2606, 2607, 2609], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 29, 30, 32, 66, 102, 115, 147, 166, 173, 185, 198, 206, 247, 300, 301, 303, 440, 455, 492, 525, 552, 578, 598, 623, 650, 673, 741, 1097, 1164, 1585, 1660, 2093, 2278, 2424, 2476, 2533, 2556, 2588], "summary": {"covered_lines": 58, "num_statements": 58, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/semgrep_scanner.py": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 27, 31, 32, 35, 36, 38, 40, 41, 42, 43, 46, 47, 48, 49, 50, 52, 53, 54, 57, 58, 60, 79, 80, 81, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 100, 103, 104, 116, 127, 128, 131, 132, 133, 134, 135, 136, 137, 140, 149, 151, 152, 155, 156, 159, 160, 161, 170, 171, 180, 189, 190, 193, 195, 196, 200, 202, 204, 210, 211, 214, 221, 228, 229, 231, 232, 233, 234, 235, 236, 238, 240, 249, 257, 258, 262, 270, 278, 279, 280, 281, 282, 284, 315, 316, 330, 331, 332, 339, 341, 345, 346, 349, 357, 358, 359, 365, 366, 367, 368, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 382, 384, 386, 388, 389, 390, 391, 392, 393, 394, 395, 397, 399, 402, 403, 404, 407, 408, 409, 410, 411, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 429, 430, 431, 432, 435, 436, 437, 438, 439, 440, 441, 443, 445, 449, 451, 454, 459, 467, 468, 469, 472, 473, 476, 482, 483, 486, 495, 510, 513, 515, 516, 517, 518, 520, 522, 523, 525, 526, 528, 530, 532, 543, 547, 553, 555, 561, 584, 585, 592, 595, 598, 603, 606, 607, 608, 611, 614, 615, 626, 629, 636, 637, 640, 642, 643, 646, 667, 668, 669, 670, 671, 672, 673, 676, 680, 681, 691, 695, 697, 718, 729, 730, 733, 736, 738, 739, 740, 742, 745, 748, 753, 756, 757, 758, 761, 764, 771, 778, 779, 782, 784, 785, 788, 809, 810, 811, 812, 813, 818, 819, 822, 823, 837, 839, 860, 871, 872, 875, 876, 879, 887, 892, 895, 896, 897, 900, 901, 904, 907, 914, 915, 920, 921, 926, 927, 929, 930, 931, 932, 933, 934, 938, 941, 942, 943, 944, 947, 948, 958, 962, 964, 966, 968, 969, 970, 971, 973, 977, 983, 986, 988, 992, 993, 995, 1068, 1072, 1075, 1077, 1080, 1081, 1083, 1085, 1097, 1105, 1106, 1109, 1116, 1118, 1119, 1122, 1125, 1128, 1130, 1131, 1133, 1134, 1135, 1139, 1140, 1141, 1142, 1144, 1150, 1152, 1154, 1165, 1166, 1169, 1172, 1180, 1181, 1184, 1185, 1186, 1187, 1191, 1193, 1194, 1197, 1199, 1200, 1202, 1203, 1205, 1206, 1207, 1209, 1218, 1220, 1239, 1242, 1244, 1246, 1247, 1250, 1256, 1259, 1266, 1267, 1270, 1272, 1275, 1288, 1289, 1292, 1294, 1305, 1309, 1311, 1313, 1316, 1317, 1318, 1321, 1324, 1325, 1326, 1327, 1328, 1332, 1338, 1340, 1348, 1360, 1365, 1367, 1370, 1371, 1373, 1375, 1376, 1377, 1379, 1386, 1387, 1388, 1395, 1396, 1399, 1406, 1408, 1409, 1410, 1412, 1417, 1419, 1421, 1432, 1442, 1443, 1445, 1446, 1447, 1450, 1453, 1454, 1463, 1470, 1476, 1477, 1503, 1505, 1556, 1567, 1568, 1570, 1571, 1572, 1575, 1578, 1579, 1588, 1595, 1602, 1603, 1621, 1624, 1626, 1633], "summary": {"covered_lines": 481, "num_statements": 620, "percent_covered": 77.58064516129032, "percent_covered_display": "78", "missing_lines": 139, "excluded_lines": 0}, "missing_lines": [191, 263, 264, 265, 266, 267, 298, 299, 303, 304, 305, 313, 319, 320, 323, 342, 599, 600, 647, 652, 660, 677, 719, 726, 734, 749, 750, 765, 768, 789, 794, 802, 814, 815, 833, 861, 868, 888, 889, 918, 935, 936, 989, 990, 999, 1002, 1004, 1006, 1021, 1030, 1031, 1036, 1037, 1038, 1039, 1040, 1041, 1043, 1045, 1046, 1049, 1052, 1053, 1055, 1057, 1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066, 1110, 1111, 1112, 1113, 1114, 1126, 1188, 1189, 1243, 1245, 1306, 1333, 1335, 1342, 1343, 1344, 1346, 1350, 1351, 1353, 1430, 1448, 1479, 1480, 1481, 1483, 1497, 1498, 1500, 1501, 1514, 1515, 1518, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1549, 1551, 1552, 1554, 1573, 1604, 1618, 1628, 1629], "excluded_lines": [], "functions": {"OptimizedSemgrepScanner.__init__": {"executed_lines": [79, 80, 81, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 100, 103, 104, 116, 127, 128, 131, 132, 133, 134, 135, 136, 137, 140], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._extract_and_store_pro_status": {"executed_lines": [151, 152, 155, 156, 159, 160, 161, 170, 171, 180, 189, 190, 193, 195, 196], "summary": {"covered_lines": 15, "num_statements": 16, "percent_covered": 93.75, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [191], "excluded_lines": []}, "OptimizedSemgrepScanner.get_pro_status": {"executed_lines": [202], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner.validate_api_token": {"executed_lines": [210, 211, 214, 221, 228, 229, 231, 232, 233, 234, 235, 236, 238, 240, 249, 257, 258, 262, 270, 278, 279, 280, 281, 282, 284, 315, 316, 330, 331, 332], "summary": {"covered_lines": 30, "num_statements": 44, "percent_covered": 68.18181818181819, "percent_covered_display": "68", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [263, 264, 265, 266, 267, 298, 299, 303, 304, 305, 313, 319, 320, 323], "excluded_lines": []}, "OptimizedSemgrepScanner._find_semgrep": {"executed_lines": [341, 345, 346, 349, 357, 358, 359, 365, 366, 367, 368, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 382], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [342], "excluded_lines": []}, "OptimizedSemgrepScanner._map_semgrep_severity": {"executed_lines": [386, 388, 389, 390, 391, 392, 393, 394, 395, 397], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._map_semgrep_category": {"executed_lines": [402, 403, 404, 407, 408, 409, 410, 411, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 429, 430, 431, 432, 435, 436, 437, 438, 439, 440, 441, 443], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._convert_semgrep_finding_to_threat": {"executed_lines": [449, 451, 454, 459, 467, 468, 469, 472, 473, 476, 482, 483, 486, 495, 510, 513, 515, 516, 517, 518, 520, 522, 523, 525, 526, 528, 530, 532], "summary": {"covered_lines": 28, "num_statements": 28, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._filter_by_severity": {"executed_lines": [547, 553, 555], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_code": {"executed_lines": [584, 585, 592, 595, 598, 603, 606, 614, 629, 636, 637, 640, 642, 643, 646, 667, 668, 669, 670, 671, 672, 673, 676, 680, 681, 691, 695], "summary": {"covered_lines": 27, "num_statements": 33, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [599, 600, 647, 652, 660, 677], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_code.scan_operation": {"executed_lines": [607, 608, 611], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_code.scan_fallback": {"executed_lines": [615, 626], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_file": {"executed_lines": [718, 729, 730, 733, 736, 738, 739, 740, 742, 745, 748, 753, 756, 764, 771, 778, 779, 782, 784, 785, 788, 809, 810, 811, 812, 813, 818, 819, 822, 823, 837], "summary": {"covered_lines": 31, "num_statements": 42, "percent_covered": 73.80952380952381, "percent_covered_display": "74", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [719, 726, 734, 749, 750, 789, 794, 802, 814, 815, 833], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_file.scan_operation": {"executed_lines": [757, 758, 761], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_file.scan_fallback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [765, 768], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_directory": {"executed_lines": [860, 871, 872, 875, 876, 879, 887, 892, 895, 900, 907, 914, 915, 920, 921, 926, 927, 929, 930, 931, 932, 933, 934, 938, 941, 942, 943, 944, 947, 948, 958, 962], "summary": {"covered_lines": 32, "num_statements": 39, "percent_covered": 82.05128205128206, "percent_covered_display": "82", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [861, 868, 888, 889, 918, 935, 936], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_directory.scan_operation": {"executed_lines": [896, 897], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner.scan_directory.scan_fallback": {"executed_lines": [901, 904], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._get_directory_hash": {"executed_lines": [966, 968, 969, 970, 971, 973], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._perform_scan": {"executed_lines": [983, 986, 988, 992, 993], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [989, 990], "excluded_lines": []}, "OptimizedSemgrepScanner._perform_scan_stdin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 29, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 29, "excluded_lines": 0}, "missing_lines": [999, 1002, 1004, 1006, 1021, 1030, 1031, 1036, 1037, 1038, 1039, 1040, 1041, 1043, 1045, 1046, 1049, 1052, 1053, 1055, 1057, 1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066], "excluded_lines": []}, "OptimizedSemgrepScanner._perform_scan_tempfile": {"executed_lines": [1072, 1075, 1077, 1080, 1081, 1083, 1085, 1097, 1105, 1106, 1109, 1116, 1118, 1119, 1122, 1125, 1128, 1130, 1131, 1133, 1134, 1135, 1139, 1140, 1141, 1142], "summary": {"covered_lines": 26, "num_statements": 32, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [1110, 1111, 1112, 1113, 1114, 1126], "excluded_lines": []}, "OptimizedSemgrepScanner._perform_directory_scan": {"executed_lines": [1150, 1152, 1154, 1165, 1166, 1169, 1172, 1180, 1181, 1184, 1185, 1186, 1187, 1191, 1193, 1194, 1197, 1199, 1200, 1202, 1203, 1205, 1206, 1207], "summary": {"covered_lines": 24, "num_statements": 26, "percent_covered": 92.3076923076923, "percent_covered_display": "92", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1188, 1189], "excluded_lines": []}, "OptimizedSemgrepScanner._get_extension_for_language": {"executed_lines": [1218], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._calculate_confidence_score": {"executed_lines": [1239, 1242, 1244, 1246, 1247, 1250, 1256, 1259, 1266, 1267, 1270, 1272, 1275, 1288, 1289, 1292, 1294, 1305, 1309], "summary": {"covered_lines": 19, "num_statements": 22, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1243, 1245, 1306], "excluded_lines": []}, "OptimizedSemgrepScanner._get_clean_env": {"executed_lines": [1313, 1316, 1317, 1318, 1321, 1324, 1325, 1326, 1327, 1328, 1332, 1338], "summary": {"covered_lines": 12, "num_statements": 14, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1333, 1335], "excluded_lines": []}, "OptimizedSemgrepScanner.clear_cache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1342, 1343, 1344, 1346], "excluded_lines": []}, "OptimizedSemgrepScanner.get_cache_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1350, 1351, 1353], "excluded_lines": []}, "OptimizedSemgrepScanner.is_available": {"executed_lines": [1365], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner.get_status": {"executed_lines": [1370, 1371, 1373, 1375, 1376, 1377, 1379, 1386, 1387, 1388, 1395, 1396, 1399], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._get_semgrep_env_info": {"executed_lines": [1408, 1409, 1410, 1412], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._get_file_extension": {"executed_lines": [1419], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner._extension_to_language": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1430], "excluded_lines": []}, "OptimizedSemgrepScanner._get_cached_scan_result": {"executed_lines": [1442, 1443, 1445, 1446, 1447, 1450, 1453, 1454, 1463, 1470, 1476, 1477, 1503], "summary": {"covered_lines": 13, "num_statements": 22, "percent_covered": 59.09090909090909, "percent_covered_display": "59", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [1448, 1479, 1480, 1481, 1483, 1497, 1498, 1500, 1501], "excluded_lines": []}, "OptimizedSemgrepScanner._create_descriptive_message_from_rule_id": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 31, "excluded_lines": 0}, "missing_lines": [1514, 1515, 1518, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1549, 1551, 1552, 1554], "excluded_lines": []}, "OptimizedSemgrepScanner._cache_scan_result": {"executed_lines": [1567, 1568, 1570, 1571, 1572, 1575, 1578, 1579, 1588, 1595, 1602, 1603, 1621, 1624, 1626], "summary": {"covered_lines": 15, "num_statements": 20, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [1573, 1604, 1618, 1628, 1629], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 27, 31, 32, 35, 36, 38, 40, 41, 42, 43, 46, 47, 48, 49, 50, 52, 53, 54, 57, 58, 60, 149, 200, 204, 339, 384, 399, 445, 543, 561, 697, 839, 964, 977, 995, 1068, 1144, 1209, 1220, 1311, 1340, 1348, 1360, 1367, 1406, 1417, 1421, 1432, 1505, 1556, 1633], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SemgrepError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedSemgrepScanner": {"executed_lines": [79, 80, 81, 83, 84, 85, 86, 87, 90, 91, 92, 93, 94, 95, 100, 103, 104, 116, 127, 128, 131, 132, 133, 134, 135, 136, 137, 140, 151, 152, 155, 156, 159, 160, 161, 170, 171, 180, 189, 190, 193, 195, 196, 202, 210, 211, 214, 221, 228, 229, 231, 232, 233, 234, 235, 236, 238, 240, 249, 257, 258, 262, 270, 278, 279, 280, 281, 282, 284, 315, 316, 330, 331, 332, 341, 345, 346, 349, 357, 358, 359, 365, 366, 367, 368, 369, 370, 373, 374, 375, 376, 377, 378, 379, 380, 382, 386, 388, 389, 390, 391, 392, 393, 394, 395, 397, 402, 403, 404, 407, 408, 409, 410, 411, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 429, 430, 431, 432, 435, 436, 437, 438, 439, 440, 441, 443, 449, 451, 454, 459, 467, 468, 469, 472, 473, 476, 482, 483, 486, 495, 510, 513, 515, 516, 517, 518, 520, 522, 523, 525, 526, 528, 530, 532, 547, 553, 555, 584, 585, 592, 595, 598, 603, 606, 607, 608, 611, 614, 615, 626, 629, 636, 637, 640, 642, 643, 646, 667, 668, 669, 670, 671, 672, 673, 676, 680, 681, 691, 695, 718, 729, 730, 733, 736, 738, 739, 740, 742, 745, 748, 753, 756, 757, 758, 761, 764, 771, 778, 779, 782, 784, 785, 788, 809, 810, 811, 812, 813, 818, 819, 822, 823, 837, 860, 871, 872, 875, 876, 879, 887, 892, 895, 896, 897, 900, 901, 904, 907, 914, 915, 920, 921, 926, 927, 929, 930, 931, 932, 933, 934, 938, 941, 942, 943, 944, 947, 948, 958, 962, 966, 968, 969, 970, 971, 973, 983, 986, 988, 992, 993, 1072, 1075, 1077, 1080, 1081, 1083, 1085, 1097, 1105, 1106, 1109, 1116, 1118, 1119, 1122, 1125, 1128, 1130, 1131, 1133, 1134, 1135, 1139, 1140, 1141, 1142, 1150, 1152, 1154, 1165, 1166, 1169, 1172, 1180, 1181, 1184, 1185, 1186, 1187, 1191, 1193, 1194, 1197, 1199, 1200, 1202, 1203, 1205, 1206, 1207, 1218, 1239, 1242, 1244, 1246, 1247, 1250, 1256, 1259, 1266, 1267, 1270, 1272, 1275, 1288, 1289, 1292, 1294, 1305, 1309, 1313, 1316, 1317, 1318, 1321, 1324, 1325, 1326, 1327, 1328, 1332, 1338, 1365, 1370, 1371, 1373, 1375, 1376, 1377, 1379, 1386, 1387, 1388, 1395, 1396, 1399, 1408, 1409, 1410, 1412, 1419, 1442, 1443, 1445, 1446, 1447, 1450, 1453, 1454, 1463, 1470, 1476, 1477, 1503, 1567, 1568, 1570, 1571, 1572, 1575, 1578, 1579, 1588, 1595, 1602, 1603, 1621, 1624, 1626], "summary": {"covered_lines": 411, "num_statements": 550, "percent_covered": 74.72727272727273, "percent_covered_display": "75", "missing_lines": 139, "excluded_lines": 0}, "missing_lines": [191, 263, 264, 265, 266, 267, 298, 299, 303, 304, 305, 313, 319, 320, 323, 342, 599, 600, 647, 652, 660, 677, 719, 726, 734, 749, 750, 765, 768, 789, 794, 802, 814, 815, 833, 861, 868, 888, 889, 918, 935, 936, 989, 990, 999, 1002, 1004, 1006, 1021, 1030, 1031, 1036, 1037, 1038, 1039, 1040, 1041, 1043, 1045, 1046, 1049, 1052, 1053, 1055, 1057, 1058, 1059, 1061, 1062, 1063, 1064, 1065, 1066, 1110, 1111, 1112, 1113, 1114, 1126, 1188, 1189, 1243, 1245, 1306, 1333, 1335, 1342, 1343, 1344, 1346, 1350, 1351, 1353, 1430, 1448, 1479, 1480, 1481, 1483, 1497, 1498, 1500, 1501, 1514, 1515, 1518, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1549, 1551, 1552, 1554, 1573, 1604, 1618, 1628, 1629], "excluded_lines": []}, "": {"executed_lines": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 24, 25, 27, 31, 32, 35, 36, 38, 40, 41, 42, 43, 46, 47, 48, 49, 50, 52, 53, 54, 57, 58, 60, 149, 200, 204, 339, 384, 399, 445, 543, 561, 697, 839, 964, 977, 995, 1068, 1144, 1209, 1220, 1311, 1340, 1348, 1360, 1367, 1406, 1417, 1421, 1432, 1505, 1556, 1633], "summary": {"covered_lines": 70, "num_statements": 70, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/session_aware_llm_scanner.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 13, 16, 17, 25, 32, 33, 34, 35, 36, 39, 41, 43, 45, 46, 47, 53, 59, 61, 63, 64, 65, 67, 69, 71, 88, 89, 92, 94, 96, 97, 99, 109, 112, 113, 114, 115, 117, 120, 122, 123, 124, 127, 128, 130, 147, 148, 151, 152, 154, 156, 158, 168, 169, 170, 172, 179, 180, 181, 182, 185, 187, 193, 215, 218, 220, 222, 233, 244, 251, 252, 254, 255, 256, 259, 261, 267, 269, 272, 291, 294, 309, 312, 313, 326, 328, 329, 333, 341, 342, 377, 384, 387, 388, 389, 400, 402, 404, 406, 407, 408], "summary": {"covered_lines": 107, "num_statements": 125, "percent_covered": 85.6, "percent_covered_display": "86", "missing_lines": 18, "excluded_lines": 0}, "missing_lines": [189, 190, 191, 216, 263, 264, 265, 344, 346, 347, 348, 349, 351, 360, 361, 362, 373, 375], "excluded_lines": [], "functions": {"SessionAwareLLMScanner.__init__": {"executed_lines": [32, 33, 34, 35, 36, 39, 41], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanner._initialize_llm_client": {"executed_lines": [45, 46, 47, 53, 59, 61, 63, 64, 65], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanner.is_available": {"executed_lines": [69], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanner.analyze_project_with_session": {"executed_lines": [88, 89, 92, 94, 96, 97, 99, 109, 112, 113, 114, 115, 117, 120, 122, 123, 124, 127, 128], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanner.analyze_file_with_context": {"executed_lines": [147, 148, 151, 152, 154, 156, 158, 168, 169, 170, 172, 179, 180, 181, 182, 185, 187], "summary": {"covered_lines": 17, "num_statements": 20, "percent_covered": 85.0, "percent_covered_display": "85", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [189, 190, 191], "excluded_lines": []}, "SessionAwareLLMScanner.analyze_code_with_context": {"executed_lines": [215, 218, 220, 222, 233, 244, 251, 252, 254, 255, 256, 259, 261], "summary": {"covered_lines": 13, "num_statements": 17, "percent_covered": 76.47058823529412, "percent_covered_display": "76", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [216, 263, 264, 265], "excluded_lines": []}, "SessionAwareLLMScanner._perform_comprehensive_analysis": {"executed_lines": [269, 272, 291, 294, 309, 312, 313, 326, 328, 329], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanner.analyze_code": {"executed_lines": [341, 342], "summary": {"covered_lines": 2, "num_statements": 13, "percent_covered": 15.384615384615385, "percent_covered_display": "15", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [344, 346, 347, 348, 349, 351, 360, 361, 362, 373, 375], "excluded_lines": []}, "SessionAwareLLMScanner.analyze_file": {"executed_lines": [384, 387, 388, 389, 400, 402], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionAwareLLMScanner.cleanup_expired_sessions": {"executed_lines": [406, 407, 408], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 13, 16, 17, 25, 43, 67, 71, 130, 193, 267, 333, 377, 404], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SessionAwareLLMScanner": {"executed_lines": [32, 33, 34, 35, 36, 39, 41, 45, 46, 47, 53, 59, 61, 63, 64, 65, 69, 88, 89, 92, 94, 96, 97, 99, 109, 112, 113, 114, 115, 117, 120, 122, 123, 124, 127, 128, 147, 148, 151, 152, 154, 156, 158, 168, 169, 170, 172, 179, 180, 181, 182, 185, 187, 215, 218, 220, 222, 233, 244, 251, 252, 254, 255, 256, 259, 261, 269, 272, 291, 294, 309, 312, 313, 326, 328, 329, 341, 342, 384, 387, 388, 389, 400, 402, 406, 407, 408], "summary": {"covered_lines": 87, "num_statements": 105, "percent_covered": 82.85714285714286, "percent_covered_display": "83", "missing_lines": 18, "excluded_lines": 0}, "missing_lines": [189, 190, 191, 216, 263, 264, 265, 344, 346, 347, 348, 349, 351, 360, 361, 362, 373, 375], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 9, 10, 11, 13, 16, 17, 25, 43, 67, 71, 130, 193, 267, 333, 377, 404], "summary": {"covered_lines": 20, "num_statements": 20, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/streaming_utils.py": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 21, 23, 32, 34, 36, 38, 39, 41, 42, 44, 47, 48, 49, 51, 52, 53, 55, 67, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 82, 84, 85, 86, 88, 89, 95, 105, 107, 108, 110, 111, 112, 114, 116, 117, 118, 119, 121, 122, 123, 126, 127, 129, 135, 137, 150, 151, 153, 154, 156, 157, 160, 162, 163, 164, 167, 168, 171, 172, 173, 175, 176, 178, 191, 193, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 207, 210, 220, 221, 222, 223, 224, 225, 228, 237, 239, 241, 242, 243, 244, 245, 247, 248, 249], "summary": {"covered_lines": 110, "num_statements": 119, "percent_covered": 92.43697478991596, "percent_covered_display": "92", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [91, 92, 93, 165, 251, 252, 253, 254, 255], "excluded_lines": [], "functions": {"StreamingFileReader.__init__": {"executed_lines": [21], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "StreamingFileReader.read_file_async": {"executed_lines": [32, 34, 36, 38, 41, 42, 44, 47, 48, 49, 51, 52, 53], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "StreamingFileReader.read_file_async.read_chunk": {"executed_lines": [39], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "StreamingFileReader.read_file_chunks": {"executed_lines": [67, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 82, 84, 85, 86, 88, 89], "summary": {"covered_lines": 18, "num_statements": 21, "percent_covered": 85.71428571428571, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [91, 92, 93], "excluded_lines": []}, "StreamingFileReader.get_file_preview": {"executed_lines": [105, 107, 108, 110, 111, 112, 114, 116, 117, 118, 119, 121, 122, 123], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChunkedProcessor.__init__": {"executed_lines": [135], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ChunkedProcessor.split_content_into_chunks": {"executed_lines": [150, 151, 153, 154, 156, 157, 160, 162, 163, 164, 167, 168, 171, 172, 173, 175, 176], "summary": {"covered_lines": 17, "num_statements": 18, "percent_covered": 94.44444444444444, "percent_covered_display": "94", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [165], "excluded_lines": []}, "ChunkedProcessor.process_chunks_in_parallel": {"executed_lines": [191, 193, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 207], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "is_file_too_large": {"executed_lines": [220, 221, 222, 223, 224, 225], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "stream_file_to_stdin": {"executed_lines": [237, 239, 241, 242, 243, 244, 245, 247, 248, 249], "summary": {"covered_lines": 10, "num_statements": 15, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [251, 252, 253, 254, 255], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 23, 55, 95, 126, 127, 129, 137, 178, 210, 228], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"StreamingFileReader": {"executed_lines": [21, 32, 34, 36, 38, 39, 41, 42, 44, 47, 48, 49, 51, 52, 53, 67, 69, 70, 71, 72, 73, 74, 75, 77, 78, 79, 80, 82, 84, 85, 86, 88, 89, 105, 107, 108, 110, 111, 112, 114, 116, 117, 118, 119, 121, 122, 123], "summary": {"covered_lines": 47, "num_statements": 50, "percent_covered": 94.0, "percent_covered_display": "94", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [91, 92, 93], "excluded_lines": []}, "ChunkedProcessor": {"executed_lines": [135, 150, 151, 153, 154, 156, 157, 160, 162, 163, 164, 167, 168, 171, 172, 173, 175, 176, 191, 193, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 207], "summary": {"covered_lines": 31, "num_statements": 32, "percent_covered": 96.875, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [165], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 9, 12, 13, 15, 23, 55, 95, 126, 127, 129, 137, 178, 210, 220, 221, 222, 223, 224, 225, 228, 237, 239, 241, 242, 243, 244, 245, 247, 248, 249], "summary": {"covered_lines": 32, "num_statements": 37, "percent_covered": 86.48648648648648, "percent_covered_display": "86", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [251, 252, 253, 254, 255], "excluded_lines": []}}}, "src/adversary_mcp_server/scanner/types.py": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78, 89, 90], "summary": {"covered_lines": 62, "num_statements": 62, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"ThreatMatch.get_fingerprint": {"executed_lines": [89, 90], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"Severity": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "Category": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ThreatMatch": {"executed_lines": [89, 90], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 15, 18, 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 78], "summary": {"covered_lines": 60, "num_statements": 60, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/security/__init__.py": {"executed_lines": [1, 3, 4, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 10], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/security/input_validator.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 12, 13, 15, 18, 19, 21, 22, 23, 24, 27, 28, 31, 32, 33, 37, 40, 94, 95, 111, 112, 115, 116, 119, 120, 125, 126, 127, 130, 131, 134, 135, 137, 139, 140, 158, 162, 163, 166, 167, 172, 177, 181, 184, 186, 187, 199, 200, 202, 204, 205, 206, 210, 212, 213, 226, 227, 229, 230, 231, 232, 233, 234, 236, 238, 239, 256, 257, 258, 259, 260, 261, 262, 264, 268, 269, 273, 275, 276, 297, 298, 301, 302, 305, 306, 309, 310, 313, 317, 320, 322, 323, 337, 338, 341, 342, 345, 346, 348, 350, 351, 387, 388, 404, 405, 407, 410, 411, 413, 415, 418, 420, 425, 432, 441, 442, 444, 452, 454, 455, 457, 458, 460, 463, 467, 471, 473, 474, 475, 479, 481, 487, 489, 510, 512, 513, 525, 526, 528, 530, 533, 538, 540, 541, 549, 550, 552, 566, 573, 574, 575, 577], "summary": {"covered_lines": 154, "num_statements": 190, "percent_covered": 81.05263157894737, "percent_covered_display": "81", "missing_lines": 36, "excluded_lines": 0}, "missing_lines": [121, 122, 159, 168, 169, 173, 174, 178, 182, 314, 318, 364, 365, 368, 369, 371, 372, 377, 379, 380, 381, 385, 417, 422, 427, 437, 461, 476, 483, 493, 495, 499, 501, 505, 506, 508], "excluded_lines": [], "functions": {"InputValidator.validate_file_path": {"executed_lines": [111, 112, 115, 116, 119, 120, 125, 126, 127, 130, 131, 134, 135, 137], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [121, 122], "excluded_lines": []}, "InputValidator.validate_directory_path": {"executed_lines": [158, 162, 163, 166, 167, 172, 177, 181, 184], "summary": {"covered_lines": 9, "num_statements": 16, "percent_covered": 56.25, "percent_covered_display": "56", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [159, 168, 169, 173, 174, 178, 182], "excluded_lines": []}, "InputValidator.validate_severity_threshold": {"executed_lines": [199, 200, 202, 204, 205, 206, 210], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InputValidator.validate_boolean_param": {"executed_lines": [226, 227, 229, 230, 231, 232, 233, 234, 236], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InputValidator.validate_integer_param": {"executed_lines": [256, 257, 258, 259, 260, 261, 262, 264, 268, 269, 273], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InputValidator.validate_string_param": {"executed_lines": [297, 298, 301, 302, 305, 306, 309, 310, 313, 317, 320], "summary": {"covered_lines": 11, "num_statements": 13, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [314, 318], "excluded_lines": []}, "InputValidator.validate_code_content": {"executed_lines": [337, 338, 341, 342, 345, 346, 348], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InputValidator.validate_language": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 11, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 11, "excluded_lines": 0}, "missing_lines": [364, 365, 368, 369, 371, 372, 377, 379, 380, 381, 385], "excluded_lines": []}, "InputValidator.validate_mcp_arguments": {"executed_lines": [404, 405, 407, 410, 411, 413, 415, 418, 420, 425, 432, 441, 442, 444, 452, 454, 455, 457, 458, 460, 463, 467, 471, 473, 474, 475, 479, 481, 487, 489, 510], "summary": {"covered_lines": 31, "num_statements": 45, "percent_covered": 68.88888888888889, "percent_covered_display": "69", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [417, 422, 427, 437, 461, 476, 483, 493, 495, 499, 501, 505, 506, 508], "excluded_lines": []}, "InputValidator.sanitize_input": {"executed_lines": [525, 526, 528, 530, 533, 538], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InputValidator.get_allowed_scan_directories": {"executed_lines": [549, 550, 552, 566, 573, 574, 575, 577], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 12, 13, 15, 18, 19, 21, 22, 23, 24, 27, 28, 31, 32, 33, 37, 40, 94, 95, 139, 140, 186, 187, 212, 213, 238, 239, 275, 276, 322, 323, 350, 351, 387, 388, 512, 513, 540, 541], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SecurityError": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SeverityThreshold": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "InputValidator": {"executed_lines": [111, 112, 115, 116, 119, 120, 125, 126, 127, 130, 131, 134, 135, 137, 158, 162, 163, 166, 167, 172, 177, 181, 184, 199, 200, 202, 204, 205, 206, 210, 226, 227, 229, 230, 231, 232, 233, 234, 236, 256, 257, 258, 259, 260, 261, 262, 264, 268, 269, 273, 297, 298, 301, 302, 305, 306, 309, 310, 313, 317, 320, 337, 338, 341, 342, 345, 346, 348, 404, 405, 407, 410, 411, 413, 415, 418, 420, 425, 432, 441, 442, 444, 452, 454, 455, 457, 458, 460, 463, 467, 471, 473, 474, 475, 479, 481, 487, 489, 510, 525, 526, 528, 530, 533, 538, 549, 550, 552, 566, 573, 574, 575, 577], "summary": {"covered_lines": 113, "num_statements": 149, "percent_covered": 75.83892617449665, "percent_covered_display": "76", "missing_lines": 36, "excluded_lines": 0}, "missing_lines": [121, 122, 159, 168, 169, 173, 174, 178, 182, 314, 318, 364, 365, 368, 369, 371, 372, 377, 379, 380, 381, 385, 417, 422, 427, 437, 461, 476, 483, 493, 495, 499, 501, 505, 506, 508], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 9, 12, 13, 15, 18, 19, 21, 22, 23, 24, 27, 28, 31, 32, 33, 37, 40, 94, 95, 139, 140, 186, 187, 212, 213, 238, 239, 275, 276, 322, 323, 350, 351, 387, 388, 512, 513, 540, 541], "summary": {"covered_lines": 41, "num_statements": 41, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/security/log_sanitizer.py": {"executed_lines": [1, 3, 4, 7, 110, 125, 141, 142, 145, 146, 148, 151, 152, 154, 157, 173, 174, 176, 177, 178, 181, 186, 187, 188, 189, 190, 191, 199, 200, 202, 204, 207, 216, 217, 218, 222, 224, 225], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"sanitize_for_logging": {"executed_lines": [141, 142, 145, 146, 148, 151, 152, 154], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "sanitize_dict_for_logging": {"executed_lines": [173, 174, 176, 177, 178, 181, 186, 187, 188, 189, 190, 191, 199, 200, 202, 204], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "sanitize_env_vars": {"executed_lines": [216, 217, 218, 222, 224, 225], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 7, 110, 125, 157, 207], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 7, 110, 125, 141, 142, 145, 146, 148, 151, 152, 154, 157, 173, 174, 176, 177, 178, 181, 186, 187, 188, 189, 190, 191, 199, 200, 202, 204, 207, 216, 217, 218, 222, 224, 225], "summary": {"covered_lines": 37, "num_statements": 37, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/session/__init__.py": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 5, 7], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/session/context_reuse.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 13, 16, 17, 19, 21, 22, 23, 25, 36, 37, 39, 40, 41, 43, 44, 47, 73, 74, 80, 94, 96, 98, 102, 110, 111, 112, 115, 119, 128, 132, 141, 153, 155, 160, 163, 176, 185, 186, 197, 206, 207, 217, 219, 225, 227, 228, 249, 250, 252, 254, 259, 260, 263, 264, 265, 268, 269, 270, 279, 280, 288, 289, 302, 303, 305, 307, 312, 313, 315, 326, 327, 329, 333, 343, 344, 346, 348, 349, 350, 352, 356, 364, 366, 368, 369, 370, 372, 375, 381, 382, 383, 385, 388, 390, 391, 393, 395, 396, 397, 398, 399, 403, 407, 409, 410, 412, 415, 417, 428, 429, 432, 434, 435, 438, 439, 443], "summary": {"covered_lines": 120, "num_statements": 134, "percent_covered": 89.55223880597015, "percent_covered_display": "90", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [11, 145, 234, 235, 237, 238, 239, 242, 246, 247, 274, 298, 322, 324], "excluded_lines": [], "functions": {"ContextReuseManager.__init__": {"executed_lines": [21, 22, 23], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContextReuseManager.create_reusable_context_template": {"executed_lines": [36, 37, 39, 40, 41, 43, 44, 47, 73, 74, 80, 94, 96], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContextReuseManager._extract_security_patterns": {"executed_lines": [102, 110, 111, 112, 115, 119, 128, 132, 141, 153], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [145], "excluded_lines": []}, "ContextReuseManager._build_common_contexts": {"executed_lines": [160, 163, 176, 185, 186, 197, 206, 207, 217], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ContextReuseManager.get_reusable_context_for_session": {"executed_lines": [225, 227, 228, 249, 250, 252], "summary": {"covered_lines": 6, "num_statements": 14, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [234, 235, 237, 238, 239, 242, 246, 247], "excluded_lines": []}, "ContextReuseManager._customize_template_for_focus": {"executed_lines": [259, 260, 263, 264, 265, 268, 269, 270, 279, 280, 288, 289, 302, 303, 305], "summary": {"covered_lines": 15, "num_statements": 17, "percent_covered": 88.23529411764706, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [274, 298], "excluded_lines": []}, "ContextReuseManager.cache_reusable_context_template": {"executed_lines": [312, 313, 315, 326, 327], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [322, 324], "excluded_lines": []}, "ContextReuseManager.get_context_reuse_statistics": {"executed_lines": [333], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionContextOptimizer.__init__": {"executed_lines": [348, 349, 350], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionContextOptimizer.register_session": {"executed_lines": [356, 364], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionContextOptimizer.optimize_session_context": {"executed_lines": [368, 369, 370, 372, 375, 381, 382, 383, 385, 388, 390, 391], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionContextOptimizer.track_session_completion": {"executed_lines": [395, 396, 397, 398, 399, 403], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionContextOptimizer.get_optimization_metrics": {"executed_lines": [409, 410, 412, 415, 417, 428, 429, 432, 434, 435, 438, 439, 443], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 13, 16, 17, 19, 25, 98, 155, 219, 254, 307, 329, 343, 344, 346, 352, 366, 393, 407], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [11], "excluded_lines": []}}, "classes": {"ContextReuseManager": {"executed_lines": [21, 22, 23, 36, 37, 39, 40, 41, 43, 44, 47, 73, 74, 80, 94, 96, 102, 110, 111, 112, 115, 119, 128, 132, 141, 153, 160, 163, 176, 185, 186, 197, 206, 207, 217, 225, 227, 228, 249, 250, 252, 259, 260, 263, 264, 265, 268, 269, 270, 279, 280, 288, 289, 302, 303, 305, 312, 313, 315, 326, 327, 333], "summary": {"covered_lines": 62, "num_statements": 75, "percent_covered": 82.66666666666667, "percent_covered_display": "83", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [145, 234, 235, 237, 238, 239, 242, 246, 247, 274, 298, 322, 324], "excluded_lines": []}, "SessionContextOptimizer": {"executed_lines": [348, 349, 350, 356, 364, 368, 369, 370, 372, 375, 381, 382, 383, 385, 388, 390, 391, 395, 396, 397, 398, 399, 403, 409, 410, 412, 415, 417, 428, 429, 432, 434, 435, 438, 439, 443], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 13, 16, 17, 19, 25, 98, 155, 219, 254, 307, 329, 343, 344, 346, 352, 366, 393, 407], "summary": {"covered_lines": 22, "num_statements": 23, "percent_covered": 95.65217391304348, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [11], "excluded_lines": []}}}, "src/adversary_mcp_server/session/incremental_utils.py": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 83, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 83, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 7, 9, 12, 15, 17, 19, 21, 22, 30, 31, 32, 33, 34, 35, 37, 38, 40, 41, 42, 43, 44, 45, 47, 49, 51, 59, 60, 61, 62, 63, 64, 66, 69, 71, 72, 73, 74, 75, 76, 78, 80, 81, 83, 85, 93, 94, 95, 96, 97, 105, 106, 108, 109, 110, 111, 112, 113, 116, 123, 129, 130, 131, 132, 134, 135, 137, 140, 143, 173, 205, 207, 209, 210, 211, 214, 215, 216, 217, 219, 222], "excluded_lines": [], "functions": {"GitChangeDetector.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [17], "excluded_lines": []}, "GitChangeDetector.get_changed_files_since_commit": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [21, 22, 30, 31, 32, 33, 34, 35, 37, 38, 40, 41, 42, 43, 44, 45], "excluded_lines": []}, "GitChangeDetector.get_changed_files_in_working_directory": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [49, 51, 59, 60, 61, 62, 63, 64, 66, 69, 71, 72, 73, 74, 75, 76], "excluded_lines": []}, "GitChangeDetector.get_commit_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 17, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 17, "excluded_lines": 0}, "missing_lines": [80, 81, 83, 85, 93, 94, 95, 96, 97, 105, 106, 108, 109, 110, 111, 112, 113], "excluded_lines": []}, "create_incremental_scan_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 8, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [123, 129, 130, 131, 132, 134, 135, 137], "excluded_lines": []}, "filter_security_relevant_changes": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [143, 173, 205, 207, 209, 210, 211, 214, 215, 216, 217, 219, 222], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 12, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 7, 9, 12, 15, 19, 47, 78, 116, 140], "excluded_lines": []}}, "classes": {"GitChangeDetector": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 50, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 50, "excluded_lines": 0}, "missing_lines": [17, 21, 22, 30, 31, 32, 33, 34, 35, 37, 38, 40, 41, 42, 43, 44, 45, 49, 51, 59, 60, 61, 62, 63, 64, 66, 69, 71, 72, 73, 74, 75, 76, 80, 81, 83, 85, 93, 94, 95, 96, 97, 105, 106, 108, 109, 110, 111, 112, 113], "excluded_lines": []}, "": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 33, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 33, "excluded_lines": 0}, "missing_lines": [3, 4, 5, 7, 9, 12, 15, 19, 47, 78, 116, 123, 129, 130, 131, 132, 134, 135, 137, 140, 143, 173, 205, 207, 209, 210, 211, 214, 215, 216, 217, 219, 222], "excluded_lines": []}}}, "src/adversary_mcp_server/session/llm_session_manager.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 34, 52, 53, 54, 55, 58, 59, 60, 62, 63, 66, 67, 72, 73, 81, 82, 83, 90, 96, 113, 116, 120, 123, 128, 132, 134, 135, 138, 142, 144, 145, 150, 151, 153, 154, 156, 164, 167, 170, 171, 174, 175, 177, 183, 191, 208, 209, 210, 212, 213, 218, 219, 220, 223, 224, 226, 227, 228, 230, 231, 232, 236, 239, 242, 245, 246, 251, 252, 255, 258, 259, 264, 265, 267, 268, 271, 272, 276, 277, 279, 280, 281, 282, 283, 285, 300, 302, 305, 308, 309, 314, 316, 317, 319, 320, 322, 324, 325, 327, 329, 330, 342, 344, 346, 348, 349, 350, 351, 352, 353, 355, 357, 359, 360, 362, 365, 367, 373, 377, 405, 406, 408, 424, 461, 585, 699, 765, 866, 870, 872, 875, 879, 886, 893, 895, 896, 898, 901, 902, 907, 916, 918, 920, 923, 927, 955, 956, 959, 962, 963, 964, 965, 966, 967, 969, 970, 971, 974, 978, 986, 988, 994, 995, 999, 1002, 1004, 1006, 1007, 1008, 1012, 1013, 1015, 1022, 1025, 1031, 1034, 1035, 1045, 1050, 1051, 1055, 1084, 1085, 1095, 1096, 1099, 1102, 1103, 1106, 1107, 1108, 1180, 1211, 1214, 1215, 1216, 1220, 1221, 1224, 1228, 1229, 1252, 1253, 1255, 1257, 1260, 1262, 1264, 1265, 1266, 1267, 1268, 1269, 1271, 1272, 1275, 1276, 1277, 1278, 1281, 1282, 1285, 1286, 1287, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1306, 1307, 1311, 1322, 1323, 1325, 1329, 1332, 1333, 1334, 1337, 1476, 1478, 1482, 1483, 1484, 1485, 1487, 1489, 1490, 1491, 1492, 1493, 1496, 1504, 1505, 1506, 1509, 1510, 1511, 1514, 1516, 1519, 1521, 1523, 1525, 1526, 1528, 1529, 1530, 1533, 1534, 1536, 1542, 1543, 1545, 1546, 1547, 1553, 1554, 1557, 1558, 1561, 1562, 1563, 1570, 1571, 1575, 1576, 1577, 1585, 1586, 1592, 1593, 1597, 1598, 1620, 1623, 1642, 1649, 1652, 1664, 1665, 1667, 1668, 1671, 1672, 1675, 1687, 1691, 1692, 1694, 1696, 1721, 1775, 1779, 1783, 1787, 1793, 1797, 1809, 1813, 1830, 1838, 1844, 1860, 1874], "summary": {"covered_lines": 352, "num_statements": 678, "percent_covered": 51.91740412979351, "percent_covered_display": "52", "missing_lines": 326, "excluded_lines": 0}, "missing_lines": [185, 186, 187, 188, 189, 235, 363, 378, 380, 388, 393, 401, 402, 426, 429, 430, 431, 432, 433, 435, 436, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 453, 454, 455, 459, 481, 483, 488, 490, 492, 495, 496, 499, 509, 512, 513, 525, 530, 538, 548, 559, 560, 567, 570, 571, 578, 580, 583, 608, 610, 615, 620, 625, 644, 656, 657, 667, 670, 671, 681, 684, 685, 694, 697, 706, 709, 710, 713, 714, 718, 720, 725, 726, 727, 730, 731, 732, 734, 735, 740, 741, 744, 745, 747, 748, 749, 752, 753, 754, 755, 757, 758, 760, 761, 763, 781, 783, 786, 804, 817, 818, 823, 828, 829, 836, 839, 840, 844, 853, 861, 864, 883, 884, 929, 932, 939, 944, 947, 975, 1036, 1037, 1043, 1052, 1089, 1090, 1093, 1109, 1110, 1114, 1115, 1116, 1118, 1119, 1120, 1121, 1122, 1123, 1125, 1126, 1131, 1134, 1139, 1140, 1141, 1174, 1175, 1176, 1181, 1185, 1186, 1187, 1190, 1193, 1194, 1195, 1199, 1202, 1203, 1204, 1205, 1206, 1208, 1209, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1239, 1240, 1242, 1243, 1246, 1250, 1302, 1303, 1308, 1312, 1313, 1314, 1317, 1319, 1320, 1340, 1351, 1352, 1353, 1355, 1356, 1357, 1359, 1360, 1362, 1363, 1364, 1367, 1369, 1370, 1371, 1372, 1373, 1374, 1378, 1379, 1380, 1382, 1383, 1384, 1385, 1386, 1390, 1391, 1393, 1418, 1421, 1422, 1423, 1424, 1429, 1439, 1440, 1443, 1444, 1446, 1467, 1469, 1473, 1474, 1497, 1498, 1501, 1578, 1579, 1582, 1624, 1625, 1628, 1630, 1633, 1635, 1636, 1637, 1639, 1640, 1673, 1689, 1700, 1703, 1706, 1708, 1724, 1726, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1740, 1754, 1756, 1759, 1761, 1762, 1763, 1764, 1765, 1768, 1771, 1777, 1781, 1785, 1789, 1795, 1799, 1800, 1802, 1811, 1815, 1816, 1817, 1819, 1832, 1833, 1834, 1836, 1840, 1841, 1842, 1846, 1847, 1850, 1851, 1862, 1863, 1864, 1865, 1867, 1881, 1882, 1885, 1886, 1887, 1889, 1890, 1896, 1897, 1898, 1901, 1902, 1903], "excluded_lines": [], "functions": {"LLMSessionManager.__init__": {"executed_lines": [52, 53, 54, 55, 58, 59, 60, 62, 63, 66, 67, 72, 73, 81, 82, 83, 90], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager.create_session": {"executed_lines": [113, 116, 120, 123, 128, 132, 134, 135, 138, 142, 144, 145, 150, 151, 153, 154, 156, 164, 167, 170, 171, 174, 175, 177, 183], "summary": {"covered_lines": 25, "num_statements": 30, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [185, 186, 187, 188, 189], "excluded_lines": []}, "LLMSessionManager.analyze_with_session": {"executed_lines": [208, 209, 210, 212, 213, 218, 219, 220, 223, 224, 226, 227, 228, 230, 231, 232, 236, 239, 242, 245, 246, 251, 252, 255, 258, 259, 264, 265, 267, 268, 271, 272, 276, 277, 279, 280, 281, 282, 283], "summary": {"covered_lines": 39, "num_statements": 40, "percent_covered": 97.5, "percent_covered_display": "98", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [235], "excluded_lines": []}, "LLMSessionManager.continue_analysis": {"executed_lines": [300, 302, 305, 308, 309, 314, 316, 317, 319, 320], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager.get_session_findings": {"executed_lines": [324, 325], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager.get_session_status": {"executed_lines": [329, 330], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager.cleanup_expired_sessions": {"executed_lines": [344], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager.close_session": {"executed_lines": [348, 349, 350, 351, 352, 353], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager._get_active_session": {"executed_lines": [357, 359, 360, 362, 365], "summary": {"covered_lines": 5, "num_statements": 6, "percent_covered": 83.33333333333333, "percent_covered_display": "83", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [363], "excluded_lines": []}, "LLMSessionManager._create_initial_context_prompt": {"executed_lines": [373, 377, 405, 406, 408], "summary": {"covered_lines": 5, "num_statements": 11, "percent_covered": 45.45454545454545, "percent_covered_display": "45", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [378, 380, 388, 393, 401, 402], "excluded_lines": []}, "LLMSessionManager._build_optimized_context_prompt": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 24, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 24, "excluded_lines": 0}, "missing_lines": [426, 429, 430, 431, 432, 433, 435, 436, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 453, 454, 455, 459], "excluded_lines": []}, "LLMSessionManager.analyze_with_focused_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 23, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 23, "excluded_lines": 0}, "missing_lines": [481, 483, 488, 490, 492, 495, 496, 499, 509, 512, 513, 525, 530, 538, 548, 559, 560, 567, 570, 571, 578, 580, 583], "excluded_lines": []}, "LLMSessionManager.analyze_changes_incrementally": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [608, 610, 615, 620, 625, 644, 656, 657, 667, 670, 671, 681, 684, 685, 694, 697], "excluded_lines": []}, "LLMSessionManager._build_incremental_context": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 31, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 31, "excluded_lines": 0}, "missing_lines": [706, 709, 710, 713, 714, 718, 720, 725, 726, 727, 730, 731, 732, 734, 735, 740, 741, 744, 745, 747, 748, 749, 752, 753, 754, 755, 757, 758, 760, 761, 763], "excluded_lines": []}, "LLMSessionManager.establish_incremental_baseline": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 16, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 16, "excluded_lines": 0}, "missing_lines": [781, 783, 786, 804, 817, 818, 823, 828, 829, 836, 839, 840, 844, 853, 861, 864], "excluded_lines": []}, "LLMSessionManager._establish_context": {"executed_lines": [870, 872, 875, 879], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [883, 884], "excluded_lines": []}, "LLMSessionManager._create_analysis_query": {"executed_lines": [893, 895, 896, 898, 901, 902, 907, 916], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager._get_llm_response": {"executed_lines": [920, 923, 927, 955, 956, 959, 962, 963, 964, 965, 966, 967, 969, 970, 971, 974, 978, 986], "summary": {"covered_lines": 18, "num_statements": 24, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [929, 932, 939, 944, 947, 975], "excluded_lines": []}, "LLMSessionManager._parse_findings_from_response": {"executed_lines": [994, 995, 999, 1002, 1004, 1006, 1007, 1008, 1012, 1013, 1015, 1022, 1025, 1031, 1034, 1035, 1045, 1050, 1051, 1055, 1084, 1085, 1095, 1096, 1099, 1102, 1103, 1106, 1107, 1108, 1180, 1211, 1214, 1215, 1216, 1220, 1221, 1224, 1228, 1229, 1252, 1253], "summary": {"covered_lines": 42, "num_statements": 99, "percent_covered": 42.42424242424242, "percent_covered_display": "42", "missing_lines": 57, "excluded_lines": 0}, "missing_lines": [1036, 1037, 1043, 1052, 1089, 1090, 1093, 1109, 1110, 1114, 1115, 1116, 1118, 1119, 1120, 1121, 1122, 1123, 1125, 1126, 1131, 1134, 1139, 1140, 1141, 1174, 1175, 1176, 1181, 1185, 1186, 1187, 1190, 1193, 1194, 1195, 1199, 1202, 1203, 1204, 1205, 1206, 1208, 1209, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1239, 1240, 1242, 1243, 1246, 1250], "excluded_lines": []}, "LLMSessionManager._extract_json_from_response": {"executed_lines": [1257, 1260, 1262, 1264, 1265, 1266, 1267, 1268, 1269, 1271, 1272, 1275, 1276, 1277, 1278, 1281, 1282, 1285, 1286, 1287, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1306, 1307, 1311, 1322, 1323], "summary": {"covered_lines": 37, "num_statements": 46, "percent_covered": 80.43478260869566, "percent_covered_display": "80", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [1302, 1303, 1308, 1312, 1313, 1314, 1317, 1319, 1320], "excluded_lines": []}, "LLMSessionManager._extract_findings_from_json": {"executed_lines": [1329, 1332, 1333, 1334, 1337], "summary": {"covered_lines": 5, "num_statements": 50, "percent_covered": 10.0, "percent_covered_display": "10", "missing_lines": 45, "excluded_lines": 0}, "missing_lines": [1340, 1351, 1352, 1353, 1355, 1356, 1357, 1359, 1360, 1362, 1363, 1364, 1367, 1369, 1370, 1371, 1372, 1373, 1374, 1378, 1379, 1380, 1382, 1383, 1384, 1385, 1386, 1390, 1391, 1393, 1418, 1421, 1422, 1423, 1424, 1429, 1439, 1440, 1443, 1444, 1446, 1467, 1469, 1473, 1474], "excluded_lines": []}, "LLMSessionManager._extract_line_number": {"executed_lines": [1478, 1482, 1483, 1484, 1485, 1487, 1489, 1490, 1491, 1492, 1493, 1496, 1504, 1505, 1506, 1509, 1510, 1511, 1514, 1516, 1519], "summary": {"covered_lines": 21, "num_statements": 24, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1497, 1498, 1501], "excluded_lines": []}, "LLMSessionManager._sanitize_json_string": {"executed_lines": [1523, 1525, 1533, 1534], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager._sanitize_json_string.fix_string_escapes": {"executed_lines": [1526, 1528, 1529, 1530], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "LLMSessionManager._create_finding_from_data": {"executed_lines": [1542, 1543, 1545, 1546, 1547, 1553, 1554, 1557, 1558, 1561, 1562, 1563, 1570, 1571, 1575, 1576, 1577, 1585, 1586, 1592, 1593, 1597, 1598, 1620, 1623], "summary": {"covered_lines": 25, "num_statements": 38, "percent_covered": 65.78947368421052, "percent_covered_display": "66", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [1578, 1579, 1582, 1624, 1625, 1628, 1630, 1633, 1635, 1636, 1637, 1639, 1640], "excluded_lines": []}, "LLMSessionManager._parse_natural_language_findings": {"executed_lines": [1649, 1652, 1664, 1665, 1667, 1668, 1671, 1672, 1675, 1687, 1691, 1692, 1694], "summary": {"covered_lines": 13, "num_statements": 15, "percent_covered": 86.66666666666667, "percent_covered_display": "87", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [1673, 1689], "excluded_lines": []}, "LLMSessionManager._create_generic_finding": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1700, 1703, 1706, 1708], "excluded_lines": []}, "LLMSessionManager._extract_meaningful_description": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 20, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 20, "excluded_lines": 0}, "missing_lines": [1724, 1726, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1740, 1754, 1756, 1759, 1761, 1762, 1763, 1764, 1765, 1768, 1771], "excluded_lines": []}, "LLMSessionManager.get_cache_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1777], "excluded_lines": []}, "LLMSessionManager.warm_project_cache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1781], "excluded_lines": []}, "LLMSessionManager.invalidate_project_cache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1785], "excluded_lines": []}, "LLMSessionManager.optimize_cache_performance": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1789], "excluded_lines": []}, "LLMSessionManager.list_active_sessions": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1795], "excluded_lines": []}, "LLMSessionManager.get_session_statistics": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1799, 1800, 1802], "excluded_lines": []}, "LLMSessionManager.force_session_cleanup": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [1811], "excluded_lines": []}, "LLMSessionManager.get_session_info": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1815, 1816, 1817, 1819], "excluded_lines": []}, "LLMSessionManager.start_cleanup_automation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1832, 1833, 1834, 1836], "excluded_lines": []}, "LLMSessionManager.stop_cleanup_automation": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [1840, 1841, 1842], "excluded_lines": []}, "LLMSessionManager.force_cleanup_now": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [1846, 1847, 1850, 1851], "excluded_lines": []}, "LLMSessionManager.get_cleanup_status": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [1862, 1863, 1864, 1865, 1867], "excluded_lines": []}, "LLMSessionManager._session_health_callback": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [1881, 1882, 1885, 1886, 1887, 1889, 1890, 1896, 1897, 1898, 1901, 1902, 1903], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 34, 96, 191, 285, 322, 327, 342, 346, 355, 367, 424, 461, 585, 699, 765, 866, 886, 918, 988, 1255, 1325, 1476, 1521, 1536, 1642, 1696, 1721, 1775, 1779, 1783, 1787, 1793, 1797, 1809, 1813, 1830, 1838, 1844, 1860, 1874], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"LLMSessionManager": {"executed_lines": [52, 53, 54, 55, 58, 59, 60, 62, 63, 66, 67, 72, 73, 81, 82, 83, 90, 113, 116, 120, 123, 128, 132, 134, 135, 138, 142, 144, 145, 150, 151, 153, 154, 156, 164, 167, 170, 171, 174, 175, 177, 183, 208, 209, 210, 212, 213, 218, 219, 220, 223, 224, 226, 227, 228, 230, 231, 232, 236, 239, 242, 245, 246, 251, 252, 255, 258, 259, 264, 265, 267, 268, 271, 272, 276, 277, 279, 280, 281, 282, 283, 300, 302, 305, 308, 309, 314, 316, 317, 319, 320, 324, 325, 329, 330, 344, 348, 349, 350, 351, 352, 353, 357, 359, 360, 362, 365, 373, 377, 405, 406, 408, 870, 872, 875, 879, 893, 895, 896, 898, 901, 902, 907, 916, 920, 923, 927, 955, 956, 959, 962, 963, 964, 965, 966, 967, 969, 970, 971, 974, 978, 986, 994, 995, 999, 1002, 1004, 1006, 1007, 1008, 1012, 1013, 1015, 1022, 1025, 1031, 1034, 1035, 1045, 1050, 1051, 1055, 1084, 1085, 1095, 1096, 1099, 1102, 1103, 1106, 1107, 1108, 1180, 1211, 1214, 1215, 1216, 1220, 1221, 1224, 1228, 1229, 1252, 1253, 1257, 1260, 1262, 1264, 1265, 1266, 1267, 1268, 1269, 1271, 1272, 1275, 1276, 1277, 1278, 1281, 1282, 1285, 1286, 1287, 1290, 1291, 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1306, 1307, 1311, 1322, 1323, 1329, 1332, 1333, 1334, 1337, 1478, 1482, 1483, 1484, 1485, 1487, 1489, 1490, 1491, 1492, 1493, 1496, 1504, 1505, 1506, 1509, 1510, 1511, 1514, 1516, 1519, 1523, 1525, 1526, 1528, 1529, 1530, 1533, 1534, 1542, 1543, 1545, 1546, 1547, 1553, 1554, 1557, 1558, 1561, 1562, 1563, 1570, 1571, 1575, 1576, 1577, 1585, 1586, 1592, 1593, 1597, 1598, 1620, 1623, 1649, 1652, 1664, 1665, 1667, 1668, 1671, 1672, 1675, 1687, 1691, 1692, 1694], "summary": {"covered_lines": 293, "num_statements": 619, "percent_covered": 47.33441033925686, "percent_covered_display": "47", "missing_lines": 326, "excluded_lines": 0}, "missing_lines": [185, 186, 187, 188, 189, 235, 363, 378, 380, 388, 393, 401, 402, 426, 429, 430, 431, 432, 433, 435, 436, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 453, 454, 455, 459, 481, 483, 488, 490, 492, 495, 496, 499, 509, 512, 513, 525, 530, 538, 548, 559, 560, 567, 570, 571, 578, 580, 583, 608, 610, 615, 620, 625, 644, 656, 657, 667, 670, 671, 681, 684, 685, 694, 697, 706, 709, 710, 713, 714, 718, 720, 725, 726, 727, 730, 731, 732, 734, 735, 740, 741, 744, 745, 747, 748, 749, 752, 753, 754, 755, 757, 758, 760, 761, 763, 781, 783, 786, 804, 817, 818, 823, 828, 829, 836, 839, 840, 844, 853, 861, 864, 883, 884, 929, 932, 939, 944, 947, 975, 1036, 1037, 1043, 1052, 1089, 1090, 1093, 1109, 1110, 1114, 1115, 1116, 1118, 1119, 1120, 1121, 1122, 1123, 1125, 1126, 1131, 1134, 1139, 1140, 1141, 1174, 1175, 1176, 1181, 1185, 1186, 1187, 1190, 1193, 1194, 1195, 1199, 1202, 1203, 1204, 1205, 1206, 1208, 1209, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1239, 1240, 1242, 1243, 1246, 1250, 1302, 1303, 1308, 1312, 1313, 1314, 1317, 1319, 1320, 1340, 1351, 1352, 1353, 1355, 1356, 1357, 1359, 1360, 1362, 1363, 1364, 1367, 1369, 1370, 1371, 1372, 1373, 1374, 1378, 1379, 1380, 1382, 1383, 1384, 1385, 1386, 1390, 1391, 1393, 1418, 1421, 1422, 1423, 1424, 1429, 1439, 1440, 1443, 1444, 1446, 1467, 1469, 1473, 1474, 1497, 1498, 1501, 1578, 1579, 1582, 1624, 1625, 1628, 1630, 1633, 1635, 1636, 1637, 1639, 1640, 1673, 1689, 1700, 1703, 1706, 1708, 1724, 1726, 1729, 1730, 1731, 1732, 1733, 1736, 1737, 1740, 1754, 1756, 1759, 1761, 1762, 1763, 1764, 1765, 1768, 1771, 1777, 1781, 1785, 1789, 1795, 1799, 1800, 1802, 1811, 1815, 1816, 1817, 1819, 1832, 1833, 1834, 1836, 1840, 1841, 1842, 1846, 1847, 1850, 1851, 1862, 1863, 1864, 1865, 1867, 1881, 1882, 1885, 1886, 1887, 1889, 1890, 1896, 1897, 1898, 1901, 1902, 1903], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 25, 26, 34, 96, 191, 285, 322, 327, 342, 346, 355, 367, 424, 461, 585, 699, 765, 866, 886, 918, 988, 1255, 1325, 1476, 1521, 1536, 1642, 1696, 1721, 1775, 1779, 1783, 1787, 1793, 1797, 1809, 1813, 1830, 1838, 1844, 1860, 1874], "summary": {"covered_lines": 59, "num_statements": 59, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/session/project_context.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 49, 80, 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 96, 99, 100, 101, 103, 106, 107, 109, 111, 112, 147, 164, 180, 184, 186, 189, 190, 191, 196, 199, 200, 201, 202, 203, 204, 207, 212, 215, 216, 219, 220, 221, 222, 225, 227, 233, 235, 237, 239, 246, 247, 248, 249, 252, 255, 256, 258, 261, 263, 266, 272, 274, 276, 277, 280, 288, 291, 292, 294, 297, 299, 301, 302, 304, 305, 308, 309, 310, 311, 318, 319, 324, 325, 328, 331, 332, 333, 334, 335, 338, 346, 368, 370, 373, 374, 377, 378, 379, 380, 383, 384, 386, 388, 392, 395, 396, 397, 398, 401, 402, 403, 406, 408, 410, 414, 415, 418, 419, 421, 426, 427, 428, 429, 432, 433, 435, 438, 440, 441, 442, 443, 444, 448, 450, 455, 457, 458, 459, 462, 468, 473, 474, 481, 482, 484, 488, 489, 490, 491, 495, 500, 501, 502, 503, 504, 507, 508, 509, 514, 515, 516, 517, 518, 519, 520, 521, 523, 525, 527, 528, 529, 530, 531, 533, 535, 536, 537, 538, 539, 541, 543, 546, 547, 548, 549, 550, 551, 553, 554, 555, 561, 562, 565, 568, 569, 577, 579, 581, 584, 588, 589, 590, 594, 598, 599, 601, 604, 610, 616, 619, 620, 622, 625, 627, 629], "summary": {"covered_lines": 251, "num_statements": 284, "percent_covered": 88.38028169014085, "percent_covered_display": "88", "missing_lines": 33, "excluded_lines": 0}, "missing_lines": [268, 269, 270, 284, 286, 314, 315, 341, 342, 359, 360, 361, 446, 467, 479, 483, 487, 493, 510, 511, 563, 564, 570, 571, 572, 573, 574, 575, 585, 591, 595, 602, 608], "excluded_lines": [], "functions": {"ProjectContext.to_context_prompt": {"executed_lines": [49], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContext._format_key_files": {"executed_lines": [82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 96, 99, 100, 101, 103], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder.__init__": {"executed_lines": [111, 112, 147, 164], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder.build_context": {"executed_lines": [184, 186, 189, 190, 191, 196, 199, 200, 201, 202, 203, 204, 207, 212, 215, 216, 219, 220, 221, 222, 225, 227, 233], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder._discover_files": {"executed_lines": [237, 239, 246, 247, 248, 249, 252, 255, 256, 258, 261, 263, 266], "summary": {"covered_lines": 13, "num_statements": 16, "percent_covered": 81.25, "percent_covered_display": "81", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [268, 269, 270], "excluded_lines": []}, "ProjectContextBuilder._is_within_scope": {"executed_lines": [274, 276, 277, 280], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [284, 286], "excluded_lines": []}, "ProjectContextBuilder._is_analyzable_file": {"executed_lines": [291, 292, 294, 297], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder._create_project_file": {"executed_lines": [301, 302, 304, 305, 308, 309, 310, 311, 318, 319, 324, 325, 328, 331, 332, 333, 334, 335, 338, 346], "summary": {"covered_lines": 20, "num_statements": 27, "percent_covered": 74.07407407407408, "percent_covered_display": "74", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [314, 315, 341, 342, 359, 360, 361], "excluded_lines": []}, "ProjectContextBuilder._calculate_priority_score": {"executed_lines": [370, 373, 374, 377, 378, 379, 380, 383, 384, 386], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder._calculate_security_relevance": {"executed_lines": [392, 395, 396, 397, 398, 401, 402, 403, 406, 408], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder._select_key_files": {"executed_lines": [414, 415, 418, 419, 421, 426, 427, 428, 429, 432, 433, 435, 438, 440, 441, 442, 443, 444, 448], "summary": {"covered_lines": 19, "num_statements": 20, "percent_covered": 95.0, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [446], "excluded_lines": []}, "ProjectContextBuilder._detect_project_type": {"executed_lines": [455, 457, 458, 459, 462, 468, 473, 474, 481, 482, 484, 488, 489, 490, 491], "summary": {"covered_lines": 15, "num_statements": 20, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [467, 479, 483, 487, 493], "excluded_lines": []}, "ProjectContextBuilder._build_structure_overview": {"executed_lines": [500, 501, 502, 503, 504, 507, 508, 509, 514, 515, 516, 517, 518, 519, 520, 521, 523], "summary": {"covered_lines": 17, "num_statements": 19, "percent_covered": 89.47368421052632, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [510, 511], "excluded_lines": []}, "ProjectContextBuilder._identify_security_modules": {"executed_lines": [527, 528, 529, 530, 531], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder._identify_entry_points": {"executed_lines": [535, 536, 537, 538, 539], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder._extract_dependencies": {"executed_lines": [543, 546, 547, 548, 549, 550, 551, 553, 554, 555, 561, 562, 565, 568, 569, 577], "summary": {"covered_lines": 16, "num_statements": 24, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [563, 564, 570, 571, 572, 573, 574, 575], "excluded_lines": []}, "ProjectContextBuilder._analyze_architecture": {"executed_lines": [581, 584, 588, 589, 590, 594, 598, 599, 601, 604, 610], "summary": {"covered_lines": 11, "num_statements": 16, "percent_covered": 68.75, "percent_covered_display": "69", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [585, 591, 595, 602, 608], "excluded_lines": []}, "ProjectContextBuilder._estimate_tokens": {"executed_lines": [619, 620, 622, 625, 627, 629], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 80, 106, 107, 109, 180, 235, 272, 288, 299, 368, 388, 410, 450, 495, 525, 533, 541, 579, 616], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ProjectFile": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContext": {"executed_lines": [49, 82, 83, 84, 85, 86, 87, 88, 89, 90, 92, 93, 96, 99, 100, 101, 103], "summary": {"covered_lines": 17, "num_statements": 17, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ProjectContextBuilder": {"executed_lines": [111, 112, 147, 164, 184, 186, 189, 190, 191, 196, 199, 200, 201, 202, 203, 204, 207, 212, 215, 216, 219, 220, 221, 222, 225, 227, 233, 237, 239, 246, 247, 248, 249, 252, 255, 256, 258, 261, 263, 266, 274, 276, 277, 280, 291, 292, 294, 297, 301, 302, 304, 305, 308, 309, 310, 311, 318, 319, 324, 325, 328, 331, 332, 333, 334, 335, 338, 346, 370, 373, 374, 377, 378, 379, 380, 383, 384, 386, 392, 395, 396, 397, 398, 401, 402, 403, 406, 408, 414, 415, 418, 419, 421, 426, 427, 428, 429, 432, 433, 435, 438, 440, 441, 442, 443, 444, 448, 455, 457, 458, 459, 462, 468, 473, 474, 481, 482, 484, 488, 489, 490, 491, 500, 501, 502, 503, 504, 507, 508, 509, 514, 515, 516, 517, 518, 519, 520, 521, 523, 527, 528, 529, 530, 531, 535, 536, 537, 538, 539, 543, 546, 547, 548, 549, 550, 551, 553, 554, 555, 561, 562, 565, 568, 569, 577, 581, 584, 588, 589, 590, 594, 598, 599, 601, 604, 610, 619, 620, 622, 625, 627, 629], "summary": {"covered_lines": 182, "num_statements": 215, "percent_covered": 84.65116279069767, "percent_covered_display": "85", "missing_lines": 33, "excluded_lines": 0}, "missing_lines": [268, 269, 270, 284, 286, 314, 315, 341, 342, 359, 360, 361, 446, 467, 479, 483, 487, 493, 510, 511, 563, 564, 570, 571, 572, 573, 574, 575, 585, 591, 595, 602, 608], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 9, 11, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 47, 80, 106, 107, 109, 180, 235, 272, 288, 299, 368, 388, 410, 450, 495, 525, 533, 541, 579, 616], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/session/session_cache.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 27, 29, 30, 31, 32, 33, 34, 36, 43, 45, 47, 54, 73, 74, 76, 80, 81, 83, 89, 90, 94, 97, 98, 99, 102, 103, 105, 107, 109, 110, 112, 113, 114, 116, 124, 126, 128, 134, 142, 143, 145, 147, 148, 150, 157, 158, 160, 166, 168, 169, 172, 173, 175, 176, 178, 179, 181, 183, 184, 185, 187, 189, 190, 194, 196, 197, 199, 202, 204, 206, 216, 217, 218, 220, 221, 224, 231, 233, 234, 236, 239, 240, 242, 244, 256, 260, 263, 264, 265, 276, 279, 294, 296, 304, 306, 307, 311, 318, 326, 327, 329, 333, 334, 336, 343, 345, 346, 350, 356, 357, 359, 360, 362, 363, 364, 367, 369, 371, 372, 374, 375, 376, 377, 379, 381, 382, 385, 386, 387, 390, 392, 393, 396, 398, 399, 401, 402, 403, 405, 407, 408, 412, 418, 424, 440, 442, 443, 446, 452, 453, 457, 458, 462, 463, 466, 467, 469, 471, 473, 481, 482, 484, 494, 497, 498, 504, 506, 507, 509, 510, 511, 514, 517, 518, 519, 520, 522, 524, 526, 527, 529, 546, 547, 550, 551, 552, 553, 554, 557, 558, 561, 562, 565, 569, 570, 572, 575, 577, 579, 581, 596, 605, 606, 609, 610, 613, 614, 615, 616, 617, 622, 623, 625, 628, 630, 631, 633, 634, 635, 636, 646, 665, 666, 667, 668, 670, 672, 674, 675, 683, 684, 688, 689, 696, 697, 707, 717, 718, 720, 729, 742, 745, 746], "summary": {"covered_lines": 251, "num_statements": 258, "percent_covered": 97.28682170542636, "percent_covered_display": "97", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [618, 619, 649, 650, 651, 652, 663], "excluded_lines": [], "functions": {"SessionCache.__init__": {"executed_lines": [29, 30, 31, 32, 33, 34], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.cache_project_context": {"executed_lines": [43, 45, 47, 54, 73, 74, 76, 80, 81], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.get_cached_project_context": {"executed_lines": [89, 90, 94, 97, 98, 99, 102, 103, 105, 107, 109, 110, 112, 113, 114], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.cache_session_analysis": {"executed_lines": [124, 126, 128, 134, 142, 143, 145, 147, 148], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.get_cached_session_analysis": {"executed_lines": [157, 158, 160, 166, 168, 169, 172, 173, 175, 176, 178, 179, 181, 183, 184, 185], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.invalidate_project_cache": {"executed_lines": [189, 190, 194, 196, 197], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache._create_project_signature": {"executed_lines": [202, 204, 206, 216, 217, 218, 220, 221, 224, 231, 233, 234, 236, 239, 240], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache._serialize_project_file": {"executed_lines": [244], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache._deserialize_project_context": {"executed_lines": [260, 263, 264, 265, 276, 279, 294], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.cache_analysis_result": {"executed_lines": [304, 306, 307, 311, 318, 326, 327, 329, 333, 334], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.get_cached_analysis_result": {"executed_lines": [343, 345, 346, 350, 356, 357, 359, 360, 362, 363, 364, 367, 369, 371, 372, 374, 375, 376, 377], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.warm_project_cache": {"executed_lines": [381, 382, 385, 386, 387, 390, 392, 393, 396, 398, 399, 401, 402, 403], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.get_cache_statistics": {"executed_lines": [407, 408, 412, 418, 424], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCache.optimize_cache_usage": {"executed_lines": [442, 443, 446, 452, 453, 457, 458, 462, 463], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer.__init__": {"executed_lines": [471], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer.record_token_usage": {"executed_lines": [481, 482, 484, 494, 497, 498], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer.get_optimal_context_size": {"executed_lines": [506, 507, 509, 510, 511, 514, 517, 518, 519, 520, 522], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer.should_use_sliding_window": {"executed_lines": [526, 527], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer.create_sliding_window": {"executed_lines": [546, 547, 550, 551, 552, 553, 554, 557, 558, 561, 562, 565, 569, 570, 572, 575, 577, 579], "summary": {"covered_lines": 18, "num_statements": 18, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer.optimize_context_for_sliding_window": {"executed_lines": [596, 605, 606, 609, 610, 613, 614, 615, 616, 617, 622, 623, 625, 628, 630, 631, 633, 634, 635, 636, 646, 665, 666, 667, 668, 670], "summary": {"covered_lines": 26, "num_statements": 33, "percent_covered": 78.78787878787878, "percent_covered_display": "79", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [618, 619, 649, 650, 651, 652, 663], "excluded_lines": []}, "TokenUsageOptimizer.get_incremental_analysis_metadata": {"executed_lines": [674, 675, 683, 684, 688, 689, 696, 697], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer.record_incremental_analysis": {"executed_lines": [717, 718, 720, 729, 742, 745, 746], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 27, 36, 83, 116, 150, 187, 199, 242, 256, 296, 336, 379, 405, 440, 466, 467, 469, 473, 504, 524, 529, 581, 672, 707], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SessionCache": {"executed_lines": [29, 30, 31, 32, 33, 34, 43, 45, 47, 54, 73, 74, 76, 80, 81, 89, 90, 94, 97, 98, 99, 102, 103, 105, 107, 109, 110, 112, 113, 114, 124, 126, 128, 134, 142, 143, 145, 147, 148, 157, 158, 160, 166, 168, 169, 172, 173, 175, 176, 178, 179, 181, 183, 184, 185, 189, 190, 194, 196, 197, 202, 204, 206, 216, 217, 218, 220, 221, 224, 231, 233, 234, 236, 239, 240, 244, 260, 263, 264, 265, 276, 279, 294, 304, 306, 307, 311, 318, 326, 327, 329, 333, 334, 343, 345, 346, 350, 356, 357, 359, 360, 362, 363, 364, 367, 369, 371, 372, 374, 375, 376, 377, 381, 382, 385, 386, 387, 390, 392, 393, 396, 398, 399, 401, 402, 403, 407, 408, 412, 418, 424, 442, 443, 446, 452, 453, 457, 458, 462, 463], "summary": {"covered_lines": 140, "num_statements": 140, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TokenUsageOptimizer": {"executed_lines": [471, 481, 482, 484, 494, 497, 498, 506, 507, 509, 510, 511, 514, 517, 518, 519, 520, 522, 526, 527, 546, 547, 550, 551, 552, 553, 554, 557, 558, 561, 562, 565, 569, 570, 572, 575, 577, 579, 596, 605, 606, 609, 610, 613, 614, 615, 616, 617, 622, 623, 625, 628, 630, 631, 633, 634, 635, 636, 646, 665, 666, 667, 668, 670, 674, 675, 683, 684, 688, 689, 696, 697, 717, 718, 720, 729, 742, 745, 746], "summary": {"covered_lines": 79, "num_statements": 86, "percent_covered": 91.86046511627907, "percent_covered_display": "92", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [618, 619, 649, 650, 651, 652, 663], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 27, 36, 83, 116, 150, 187, 199, 242, 256, 296, 336, 379, 405, 440, 466, 467, 469, 473, 504, 524, 529, 581, 672, 707], "summary": {"covered_lines": 32, "num_statements": 32, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/session/session_cleanup.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 27, 31, 32, 33, 34, 35, 36, 38, 39, 41, 43, 54, 55, 57, 67, 68, 69, 70, 71, 72, 73, 75, 76, 78, 80, 81, 83, 85, 86, 88, 90, 91, 93, 96, 97, 109, 116, 117, 118, 119, 121, 122, 123, 124, 126, 132, 134, 138, 139, 140, 142, 144, 147, 148, 149, 150, 151, 152, 153, 154, 156, 158, 160, 161, 163, 180, 182, 183, 191, 193, 194, 197, 198, 201, 202, 203, 205, 206, 208, 209, 211, 212, 219, 220, 225, 227, 228, 229, 230, 231, 232, 234, 236, 238, 239, 240, 243, 245, 251, 252, 253, 255, 257, 258, 264, 265, 266, 268, 274, 276, 277, 278, 280, 282, 284, 286, 287, 288, 289, 291, 293, 294, 295, 296, 302, 304, 326, 345, 353, 361], "summary": {"covered_lines": 145, "num_statements": 169, "percent_covered": 85.79881656804734, "percent_covered_display": "86", "missing_lines": 24, "excluded_lines": 0}, "missing_lines": [135, 136, 145, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178, 259, 260, 270, 271, 272, 298, 299, 300], "excluded_lines": [], "functions": {"SessionCleanupMetrics.__init__": {"executed_lines": [19, 20, 21, 22, 23, 24, 25], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupMetrics.record_cleanup": {"executed_lines": [31, 32, 33, 34, 35, 36, 38, 39], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupMetrics.get_stats": {"executed_lines": [43], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupConfig.__init__": {"executed_lines": [67, 68, 69, 70, 71, 72, 73], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupConfig.cleanup_interval_seconds": {"executed_lines": [78], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupConfig.max_session_age_seconds": {"executed_lines": [83], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupConfig.orphaned_session_age_seconds": {"executed_lines": [88], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupConfig.vacuum_interval_seconds": {"executed_lines": [93], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupService.__init__": {"executed_lines": [116, 117, 118, 119, 121, 122, 123, 124, 126], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupService.start": {"executed_lines": [134, 138, 139, 140], "summary": {"covered_lines": 4, "num_statements": 6, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [135, 136], "excluded_lines": []}, "SessionCleanupService.stop": {"executed_lines": [144, 147, 148, 149, 150, 151, 152, 153, 154, 156], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [145], "excluded_lines": []}, "SessionCleanupService.force_cleanup": {"executed_lines": [160, 161], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupService._cleanup_loop": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 13, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178], "excluded_lines": []}, "SessionCleanupService._perform_cleanup": {"executed_lines": [182, 183, 191, 193, 194, 197, 198, 201, 202, 203, 205, 206, 208, 209, 211, 212, 219, 220, 225, 227, 228, 229, 230, 231, 232, 234], "summary": {"covered_lines": 26, "num_statements": 26, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupService._cleanup_orphaned_sessions": {"executed_lines": [238, 239, 240, 243, 245, 251, 252, 253, 255, 257, 258, 264, 265, 266, 268], "summary": {"covered_lines": 15, "num_statements": 20, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [259, 260, 270, 271, 272], "excluded_lines": []}, "SessionCleanupService._maybe_vacuum_database": {"executed_lines": [276, 277, 278, 280, 282, 293, 294, 295, 296], "summary": {"covered_lines": 9, "num_statements": 12, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [298, 299, 300], "excluded_lines": []}, "SessionCleanupService._maybe_vacuum_database.vacuum_database": {"executed_lines": [284, 286, 287, 288, 289, 291], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupService.get_status": {"executed_lines": [304], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "create_session_cleanup_service": {"executed_lines": [345, 353, 361], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 27, 41, 54, 55, 57, 75, 76, 80, 81, 85, 86, 90, 91, 96, 97, 109, 132, 142, 158, 163, 180, 236, 274, 302, 326], "summary": {"covered_lines": 33, "num_statements": 33, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SessionCleanupMetrics": {"executed_lines": [19, 20, 21, 22, 23, 24, 25, 31, 32, 33, 34, 35, 36, 38, 39, 43], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupConfig": {"executed_lines": [67, 68, 69, 70, 71, 72, 73, 78, 83, 88, 93], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionCleanupService": {"executed_lines": [116, 117, 118, 119, 121, 122, 123, 124, 126, 134, 138, 139, 140, 144, 147, 148, 149, 150, 151, 152, 153, 154, 156, 160, 161, 182, 183, 191, 193, 194, 197, 198, 201, 202, 203, 205, 206, 208, 209, 211, 212, 219, 220, 225, 227, 228, 229, 230, 231, 232, 234, 238, 239, 240, 243, 245, 251, 252, 253, 255, 257, 258, 264, 265, 266, 268, 276, 277, 278, 280, 282, 284, 286, 287, 288, 289, 291, 293, 294, 295, 296, 304], "summary": {"covered_lines": 82, "num_statements": 106, "percent_covered": 77.35849056603773, "percent_covered_display": "77", "missing_lines": 24, "excluded_lines": 0}, "missing_lines": [135, 136, 145, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 178, 259, 260, 270, 271, 272, 298, 299, 300], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 27, 41, 54, 55, 57, 75, 76, 80, 81, 85, 86, 90, 91, 96, 97, 109, 132, 142, 158, 163, 180, 236, 274, 302, 326, 345, 353, 361], "summary": {"covered_lines": 36, "num_statements": 36, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/session/session_persistence.py": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 27, 43, 44, 45, 46, 49, 50, 51, 53, 58, 68, 71, 72, 75, 76, 79, 82, 85, 87, 88, 90, 91, 92, 94, 104, 106, 107, 110, 111, 112, 115, 116, 117, 120, 121, 123, 124, 125, 127, 128, 129, 134, 140, 150, 151, 154, 155, 156, 157, 160, 161, 163, 164, 166, 172, 179, 180, 181, 184, 185, 186, 192, 193, 194, 195, 196, 197, 198, 200, 202, 203, 209, 216, 217, 218, 221, 222, 223, 224, 226, 227, 228, 231, 232, 233, 234, 235, 236, 237, 239, 240, 242, 248, 255, 256, 265, 266, 267, 269, 271, 273, 279, 280, 282, 283, 285, 289, 291, 292, 293, 294, 296, 298, 299, 300, 303, 310, 353, 355, 356, 357, 360, 367, 369, 370, 372, 373, 374, 376, 378, 379, 380, 382, 388, 389, 391, 394, 411, 413, 414, 420, 423, 424, 426, 427, 442, 444, 446, 447, 448, 450, 452, 453, 454, 456, 462, 463, 464, 465, 467, 469, 470, 471, 473, 475, 476, 477, 479, 480, 482, 483, 484, 486, 490, 491, 493, 494, 495, 496, 498, 502, 504, 505, 506, 508, 510, 512, 514, 517, 518, 520, 521, 548, 550, 551, 552, 553, 556, 558, 559, 560, 561, 563, 564, 567, 573, 575, 576, 578, 579, 581, 616, 618, 619, 620], "summary": {"covered_lines": 224, "num_statements": 248, "percent_covered": 90.3225806451613, "percent_covered_display": "90", "missing_lines": 24, "excluded_lines": 0}, "missing_lines": [131, 132, 136, 137, 138, 168, 169, 170, 189, 205, 206, 207, 244, 245, 246, 499, 515, 569, 570, 571, 582, 583, 584, 600], "excluded_lines": [], "functions": {"SessionPersistenceStore.__init__": {"executed_lines": [43, 44, 45, 46, 49, 50, 51, 53], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore.store_session": {"executed_lines": [68, 71, 72, 75, 76, 79, 82, 85, 87, 88, 90, 91, 92], "summary": {"covered_lines": 13, "num_statements": 13, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore.get_session": {"executed_lines": [104, 106, 107, 110, 111, 112, 115, 116, 117, 120, 121, 123, 124, 125, 127, 128, 129, 134], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [131, 132, 136, 137, 138], "excluded_lines": []}, "SessionPersistenceStore.remove_session": {"executed_lines": [150, 151, 154, 155, 156, 157, 160, 161, 163, 164, 166], "summary": {"covered_lines": 11, "num_statements": 14, "percent_covered": 78.57142857142857, "percent_covered_display": "79", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [168, 169, 170], "excluded_lines": []}, "SessionPersistenceStore.list_active_sessions": {"executed_lines": [179, 180, 181, 184, 185, 186, 192, 193, 194, 195, 196, 197, 198, 200, 202, 203], "summary": {"covered_lines": 16, "num_statements": 20, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [189, 205, 206, 207], "excluded_lines": []}, "SessionPersistenceStore.cleanup_expired_sessions": {"executed_lines": [216, 217, 218, 221, 222, 223, 224, 226, 227, 228, 231, 232, 233, 234, 235, 236, 237, 239, 240, 242], "summary": {"covered_lines": 20, "num_statements": 23, "percent_covered": 86.95652173913044, "percent_covered_display": "87", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [244, 245, 246], "excluded_lines": []}, "SessionPersistenceStore.get_statistics": {"executed_lines": [255, 256, 265, 266, 267], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore._enforce_memory_limits": {"executed_lines": [271, 273, 279, 280, 282, 283, 285], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore._periodic_cleanup": {"executed_lines": [291, 292, 293, 294], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore._persist_session_to_database": {"executed_lines": [298, 299, 300, 303, 310, 353, 355, 356, 357, 360, 367, 369, 370, 372, 373, 374], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore._load_session_from_database": {"executed_lines": [378, 379, 380, 382, 388, 389, 391, 394, 411, 413, 414, 420, 423, 424, 426, 427, 442, 444, 446, 447, 448], "summary": {"covered_lines": 21, "num_statements": 21, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore._remove_session_from_database": {"executed_lines": [452, 453, 454, 456, 462, 463, 464, 465, 467, 469, 470, 471], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore._list_database_sessions": {"executed_lines": [475, 476, 477, 479, 480, 482, 483, 484], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SessionPersistenceStore._serialize_session_context": {"executed_lines": [490, 491, 493, 494, 495, 496, 498, 502, 504, 505, 506, 508, 510], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [499], "excluded_lines": []}, "SessionPersistenceStore._serialize_project_context": {"executed_lines": [514, 517, 518, 520, 521, 548, 550, 551, 552, 553, 556, 558, 559, 560, 561, 563, 564, 567], "summary": {"covered_lines": 18, "num_statements": 22, "percent_covered": 81.81818181818181, "percent_covered_display": "82", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [515, 569, 570, 571], "excluded_lines": []}, "SessionPersistenceStore._deserialize_project_context": {"executed_lines": [575, 576, 578, 579, 581, 616, 618, 619, 620], "summary": {"covered_lines": 9, "num_statements": 13, "percent_covered": 69.23076923076923, "percent_covered_display": "69", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [582, 583, 584, 600], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 27, 58, 94, 140, 172, 209, 248, 269, 289, 296, 376, 450, 473, 486, 512, 573], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SessionPersistenceStore": {"executed_lines": [43, 44, 45, 46, 49, 50, 51, 53, 68, 71, 72, 75, 76, 79, 82, 85, 87, 88, 90, 91, 92, 104, 106, 107, 110, 111, 112, 115, 116, 117, 120, 121, 123, 124, 125, 127, 128, 129, 134, 150, 151, 154, 155, 156, 157, 160, 161, 163, 164, 166, 179, 180, 181, 184, 185, 186, 192, 193, 194, 195, 196, 197, 198, 200, 202, 203, 216, 217, 218, 221, 222, 223, 224, 226, 227, 228, 231, 232, 233, 234, 235, 236, 237, 239, 240, 242, 255, 256, 265, 266, 267, 271, 273, 279, 280, 282, 283, 285, 291, 292, 293, 294, 298, 299, 300, 303, 310, 353, 355, 356, 357, 360, 367, 369, 370, 372, 373, 374, 378, 379, 380, 382, 388, 389, 391, 394, 411, 413, 414, 420, 423, 424, 426, 427, 442, 444, 446, 447, 448, 452, 453, 454, 456, 462, 463, 464, 465, 467, 469, 470, 471, 475, 476, 477, 479, 480, 482, 483, 484, 490, 491, 493, 494, 495, 496, 498, 502, 504, 505, 506, 508, 510, 514, 517, 518, 520, 521, 548, 550, 551, 552, 553, 556, 558, 559, 560, 561, 563, 564, 567, 575, 576, 578, 579, 581, 616, 618, 619, 620], "summary": {"covered_lines": 199, "num_statements": 223, "percent_covered": 89.23766816143498, "percent_covered_display": "89", "missing_lines": 24, "excluded_lines": 0}, "missing_lines": [131, 132, 136, 137, 138, 168, 169, 170, 189, 205, 206, 207, 244, 245, 246, 499, 515, 569, 570, 571, 582, 583, 584, 600], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 27, 58, 94, 140, 172, 209, 248, 269, 289, 296, 376, 450, 473, 486, 512, 573], "summary": {"covered_lines": 25, "num_statements": 25, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/session/session_types.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 13, 14, 16, 17, 18, 19, 20, 21, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 44, 47, 48, 52, 76, 77, 78, 80, 81, 82, 83, 85, 87, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 111, 114, 115, 117, 119, 121, 123, 125, 127, 128, 130, 132, 133, 134], "summary": {"covered_lines": 68, "num_statements": 68, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"SecurityFinding.to_threat_match": {"executed_lines": [44, 47, 48, 52], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConversationMessage.to_dict": {"executed_lines": [87], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnalysisSession.add_message": {"executed_lines": [111, 114, 115], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnalysisSession.get_conversation_history": {"executed_lines": [119], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnalysisSession.is_expired": {"executed_lines": [123], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnalysisSession.update_state": {"executed_lines": [127, 128], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnalysisSession.add_finding": {"executed_lines": [132, 133, 134], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 13, 14, 16, 17, 18, 19, 20, 21, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 76, 77, 78, 80, 81, 82, 83, 85, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 117, 121, 125, 130], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"SessionState": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 0, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "SecurityFinding": {"executed_lines": [44, 47, 48, 52], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ConversationMessage": {"executed_lines": [87], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "AnalysisSession": {"executed_lines": [111, 114, 115, 119, 123, 127, 128, 132, 133, 134], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 10, 13, 14, 16, 17, 18, 19, 20, 21, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 76, 77, 78, 80, 81, 82, 83, 85, 93, 94, 95, 97, 98, 99, 100, 101, 102, 103, 104, 105, 107, 117, 121, 125, 130], "summary": {"covered_lines": 53, "num_statements": 53, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/sync_main.py": {"executed_lines": [1, 8, 9, 12, 19, 21, 22, 23, 26, 27, 29, 30, 33, 36, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59], "summary": {"covered_lines": 25, "num_statements": 32, "percent_covered": 78.125, "percent_covered_display": "78", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [35, 41, 43, 44, 45, 46, 60], "excluded_lines": [], "functions": {"main": {"executed_lines": [19, 21, 22, 23, 26, 27, 29, 30, 33, 36, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56], "summary": {"covered_lines": 21, "num_statements": 22, "percent_covered": 95.45454545454545, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [35], "excluded_lines": []}, "main.async_main": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [41, 43, 44, 45, 46], "excluded_lines": []}, "": {"executed_lines": [1, 8, 9, 12, 59], "summary": {"covered_lines": 4, "num_statements": 5, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [60], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 8, 9, 12, 19, 21, 22, 23, 26, 27, 29, 30, 33, 36, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 59], "summary": {"covered_lines": 25, "num_statements": 32, "percent_covered": 78.125, "percent_covered_display": "78", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [35, 41, 43, 44, 45, 46, 60], "excluded_lines": []}}}, "src/adversary_mcp_server/telemetry/__init__.py": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"": {"executed_lines": [1, 3, 4, 6], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/telemetry/bulk_operations.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 20, 21, 23, 24, 25, 26, 27, 29, 31, 32, 34, 37, 38, 40, 42, 44, 46, 47, 50, 51, 54, 55, 56, 57, 58, 60, 62, 64, 65, 67, 69, 70, 71, 72, 73, 75, 77, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 94, 96, 100, 101, 103, 104, 106, 109, 110, 112, 113, 114, 115, 117, 119, 121, 123, 124, 126, 130, 139, 140, 143, 144, 145, 147, 151, 159, 160, 162, 163, 164, 166, 168, 169, 170, 172, 173, 174, 176, 179, 181, 183, 184, 185, 187, 188, 189, 191, 192, 194, 196, 204, 208, 211, 212, 217, 218, 224, 225, 227, 228, 229, 231, 235, 246, 249, 250, 251, 252, 255, 256, 257, 260, 278, 279, 281, 284, 285, 286, 287, 288, 290, 292, 296, 305, 306, 307, 308, 309, 310, 312, 315, 316, 318, 319, 320, 321, 323], "summary": {"covered_lines": 150, "num_statements": 164, "percent_covered": 91.46341463414635, "percent_covered_display": "91", "missing_lines": 14, "excluded_lines": 0}, "missing_lines": [215, 221, 261, 262, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276], "excluded_lines": [], "functions": {"BulkOperationManager.__init__": {"executed_lines": [24, 25, 26, 27], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BulkOperationManager.queue_insert": {"executed_lines": [31, 32, 34, 37, 38], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BulkOperationManager.flush_inserts": {"executed_lines": [42, 44, 46, 47, 50, 51, 54, 55, 56, 57, 58, 60], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BulkOperationManager._bulk_insert": {"executed_lines": [64, 65, 67, 69, 70, 71, 72, 73, 75], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BulkOperationManager._fallback_individual_inserts": {"executed_lines": [81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92], "summary": {"covered_lines": 11, "num_statements": 11, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BulkOperationManager.get_pending_count": {"executed_lines": [96], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BulkOperationManager.bulk_context": {"executed_lines": [103, 104, 106], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.__init__": {"executed_lines": [113, 114, 115], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.enable_bulk_mode": {"executed_lines": [119], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.disable_bulk_mode": {"executed_lines": [123, 124], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.track_mcp_tool_execution_bulk": {"executed_lines": [130, 139, 140, 143, 144, 145], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.track_cli_command_execution_bulk": {"executed_lines": [151, 159, 160, 162, 163, 164], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.track_cache_operations_bulk": {"executed_lines": [168, 169, 170, 172, 173, 174, 176, 179], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.track_threat_findings_bulk": {"executed_lines": [183, 184, 185, 187, 188, 189, 191, 192], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService.get_bulk_stats": {"executed_lines": [196], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "optimize_session_for_bulk_operations": {"executed_lines": [208, 211, 212, 217, 218], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "optimize_session_for_bulk_operations.before_bulk_insert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [215], "excluded_lines": []}, "optimize_session_for_bulk_operations.after_bulk_insert": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [221], "excluded_lines": []}, "BatchProcessor.__init__": {"executed_lines": [228, 229], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor.process_telemetry_batch": {"executed_lines": [235, 246, 249, 250, 251, 252, 255, 256, 257, 260, 278, 279, 281, 284, 285, 286, 287, 288, 290], "summary": {"covered_lines": 19, "num_statements": 31, "percent_covered": 61.29032258064516, "percent_covered_display": "61", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [261, 262, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276], "excluded_lines": []}, "BatchProcessor._group_telemetry_data": {"executed_lines": [296, 305, 306, 307, 308, 309, 310, 312], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "bulk_telemetry_context": {"executed_lines": [318, 319, 320, 321, 323], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 20, 21, 23, 29, 40, 62, 77, 94, 100, 101, 109, 110, 112, 117, 121, 126, 147, 166, 181, 194, 204, 224, 225, 227, 231, 292, 315, 316], "summary": {"covered_lines": 31, "num_statements": 31, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"BulkOperationManager": {"executed_lines": [24, 25, 26, 27, 31, 32, 34, 37, 38, 42, 44, 46, 47, 50, 51, 54, 55, 56, 57, 58, 60, 64, 65, 67, 69, 70, 71, 72, 73, 75, 81, 82, 83, 84, 85, 86, 87, 88, 89, 91, 92, 96, 103, 104, 106], "summary": {"covered_lines": 45, "num_statements": 45, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "OptimizedTelemetryService": {"executed_lines": [113, 114, 115, 119, 123, 124, 130, 139, 140, 143, 144, 145, 151, 159, 160, 162, 163, 164, 168, 169, 170, 172, 173, 174, 176, 179, 183, 184, 185, 187, 188, 189, 191, 192, 196], "summary": {"covered_lines": 35, "num_statements": 35, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "BatchProcessor": {"executed_lines": [228, 229, 235, 246, 249, 250, 251, 252, 255, 256, 257, 260, 278, 279, 281, 284, 285, 286, 287, 288, 290, 296, 305, 306, 307, 308, 309, 310, 312], "summary": {"covered_lines": 29, "num_statements": 41, "percent_covered": 70.73170731707317, "percent_covered_display": "71", "missing_lines": 12, "excluded_lines": 0}, "missing_lines": [261, 262, 265, 266, 267, 268, 269, 270, 273, 274, 275, 276], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 20, 21, 23, 29, 40, 62, 77, 94, 100, 101, 109, 110, 112, 117, 121, 126, 147, 166, 181, 194, 204, 208, 211, 212, 217, 218, 224, 225, 227, 231, 292, 315, 316, 318, 319, 320, 321, 323], "summary": {"covered_lines": 41, "num_statements": 43, "percent_covered": 95.34883720930233, "percent_covered_display": "95", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [215, 221], "excluded_lines": []}}}, "src/adversary_mcp_server/telemetry/cache.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 33, 35, 36, 38, 39, 48, 50, 51, 53, 55, 56, 57, 58, 59, 60, 61, 63, 65, 66, 67, 68, 70, 72, 73, 74, 78, 79, 87, 88, 92, 106, 108, 109, 111, 112, 118, 119, 120, 122, 126, 129, 132, 133, 134, 136, 137, 138, 141, 142, 143, 146, 147, 148, 151, 152, 155, 157, 159, 162, 164, 167, 171, 172, 176, 179, 180, 182, 183, 184, 186, 188, 189, 190, 192, 193, 194, 196, 198, 199, 201, 203, 205], "summary": {"covered_lines": 102, "num_statements": 102, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": [], "functions": {"QueryResultCache.__init__": {"executed_lines": [14, 15, 16], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "QueryResultCache.get": {"executed_lines": [20, 21, 22, 24, 25, 26, 27, 29, 30, 31], "summary": {"covered_lines": 10, "num_statements": 10, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "QueryResultCache.set": {"executed_lines": [35, 36, 38, 39], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "QueryResultCache.invalidate": {"executed_lines": [50, 51], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "QueryResultCache.invalidate_pattern": {"executed_lines": [55, 56, 57, 58, 59, 60, 61], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "QueryResultCache.clear": {"executed_lines": [65, 66, 67, 68], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "QueryResultCache.get_stats": {"executed_lines": [72, 73, 74, 78, 79, 87, 88, 92], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "QueryResultCache.cleanup_expired": {"executed_lines": [108, 109, 111, 112, 118, 119, 120, 122], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "cached_query": {"executed_lines": [132, 133, 159], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "cached_query.decorator": {"executed_lines": [134, 151, 152, 155, 157], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "cached_query.decorator.wrapper": {"executed_lines": [136, 137, 138, 141, 142, 143, 146, 147, 148], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_global_cache": {"executed_lines": [164], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "cache_dashboard_queries": {"executed_lines": [171, 172, 176], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CachedRepositoryMixin.__init__": {"executed_lines": [183, 184], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CachedRepositoryMixin.cached_query": {"executed_lines": [188, 189, 190, 192, 193, 194], "summary": {"covered_lines": 6, "num_statements": 6, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CachedRepositoryMixin.invalidate_cache": {"executed_lines": [198, 199, 201], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CachedRepositoryMixin.get_cache_stats": {"executed_lines": [205], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 18, 33, 48, 53, 63, 70, 106, 126, 129, 162, 167, 179, 180, 182, 186, 196, 203], "summary": {"covered_lines": 23, "num_statements": 23, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"QueryResultCache": {"executed_lines": [14, 15, 16, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 35, 36, 38, 39, 50, 51, 55, 56, 57, 58, 59, 60, 61, 65, 66, 67, 68, 72, 73, 74, 78, 79, 87, 88, 92, 108, 109, 111, 112, 118, 119, 120, 122], "summary": {"covered_lines": 46, "num_statements": 46, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "CachedRepositoryMixin": {"executed_lines": [183, 184, 188, 189, 190, 192, 193, 194, 198, 199, 201, 205], "summary": {"covered_lines": 12, "num_statements": 12, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 10, 11, 13, 18, 33, 48, 53, 63, 70, 106, 126, 129, 132, 133, 134, 136, 137, 138, 141, 142, 143, 146, 147, 148, 151, 152, 155, 157, 159, 162, 164, 167, 171, 172, 176, 179, 180, 182, 186, 196, 203], "summary": {"covered_lines": 44, "num_statements": 44, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/telemetry/integration.py": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 18, 19, 21, 24, 25, 27, 28, 29, 30, 34, 37, 38, 39, 41, 44, 45, 46, 57, 58, 68, 73, 78, 81, 84, 85, 87, 89, 90, 93, 99, 112, 114, 116, 120, 123, 124, 125, 127, 128, 129, 139, 140, 150, 153, 154, 155, 160, 166, 176, 178, 180, 184, 185, 189, 190, 193, 202, 204, 205, 208, 235, 239, 243, 246, 248, 256, 258, 261, 262, 263, 264, 267, 268, 269, 270, 271, 272, 275, 282, 286, 290, 293, 295, 320, 322, 323, 324, 325, 327, 329, 331, 332, 333, 336, 337, 338, 341, 342, 343, 344, 347, 350, 352, 366, 368, 370, 372, 383, 385, 386, 387, 389, 390, 392, 393, 394, 395, 396, 398, 399, 400, 401, 402, 404, 409, 410, 412, 413, 414, 415, 418, 419, 420, 421, 424, 425, 426, 427, 428, 429, 430, 432, 434, 436, 438, 440, 442, 444, 448, 449, 451, 452, 453, 455, 456, 458, 460, 463, 466, 488, 489, 492, 493, 494, 497, 499, 501, 503, 505, 507, 513, 514, 516, 517, 518, 519, 521, 526, 527, 529, 534], "summary": {"covered_lines": 186, "num_statements": 230, "percent_covered": 80.8695652173913, "percent_covered_display": "81", "missing_lines": 44, "excluded_lines": 0}, "missing_lines": [59, 61, 62, 63, 75, 88, 101, 103, 104, 109, 141, 143, 144, 145, 156, 157, 168, 170, 171, 174, 223, 225, 233, 276, 277, 278, 279, 280, 362, 364, 380, 381, 405, 406, 446, 495, 523, 530, 532, 537, 538, 540, 541, 542], "excluded_lines": [], "functions": {"MetricsCollectionOrchestrator.__init__": {"executed_lines": [28, 29, 30], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator.mcp_tool_wrapper": {"executed_lines": [37, 38, 116], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator.mcp_tool_wrapper.decorator": {"executed_lines": [39, 114], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator.mcp_tool_wrapper.decorator.wrapper": {"executed_lines": [41, 44, 45, 46, 57, 58, 68, 73, 78, 81, 84, 85, 87, 89, 90, 93, 99, 112], "summary": {"covered_lines": 18, "num_statements": 28, "percent_covered": 64.28571428571429, "percent_covered_display": "64", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [59, 61, 62, 63, 75, 88, 101, 103, 104, 109], "excluded_lines": []}, "MetricsCollectionOrchestrator.cli_command_wrapper": {"executed_lines": [123, 124, 180], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator.cli_command_wrapper.decorator": {"executed_lines": [125, 178], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator.cli_command_wrapper.decorator.wrapper": {"executed_lines": [127, 128, 129, 139, 140, 150, 153, 154, 155, 160, 166, 176], "summary": {"covered_lines": 12, "num_statements": 22, "percent_covered": 54.54545454545455, "percent_covered_display": "55", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [141, 143, 144, 145, 156, 157, 168, 170, 171, 174], "excluded_lines": []}, "MetricsCollectionOrchestrator.track_scan_execution": {"executed_lines": [189, 190, 193, 202, 204, 205, 208, 235], "summary": {"covered_lines": 8, "num_statements": 11, "percent_covered": 72.72727272727273, "percent_covered_display": "73", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [223, 225, 233], "excluded_lines": []}, "MetricsCollectionOrchestrator.track_cache_operation": {"executed_lines": [243, 246, 248], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator._extract_key_metadata": {"executed_lines": [258, 261, 262, 263, 264, 267, 268, 269, 270, 271, 272, 275, 282], "summary": {"covered_lines": 13, "num_statements": 18, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [276, 277, 278, 279, 280], "excluded_lines": []}, "MetricsCollectionOrchestrator.record_threat_finding_with_context": {"executed_lines": [290, 293, 295], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator._maybe_record_health": {"executed_lines": [322, 323, 324, 325], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MetricsCollectionOrchestrator._record_system_health": {"executed_lines": [329, 331, 332, 333, 336, 337, 338, 341, 342, 343, 344, 347, 350, 352], "summary": {"covered_lines": 14, "num_statements": 16, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [362, 364], "excluded_lines": []}, "MetricsCollectionOrchestrator._calculate_recent_performance": {"executed_lines": [368, 370, 372], "summary": {"covered_lines": 3, "num_statements": 5, "percent_covered": 60.0, "percent_covered_display": "60", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [380, 381], "excluded_lines": []}, "MetricsCollectionOrchestrator._calculate_error_rate": {"executed_lines": [385, 386, 387, 389, 390, 392, 393, 394, 395, 396, 398, 399, 400, 401, 402, 404], "summary": {"covered_lines": 16, "num_statements": 18, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [405, 406], "excluded_lines": []}, "ScanTrackingContext.__init__": {"executed_lines": [413, 414, 415, 418, 419, 420, 421, 424, 425, 426, 427, 428, 429, 430], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanTrackingContext.time_semgrep_scan": {"executed_lines": [434], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanTrackingContext.time_llm_analysis": {"executed_lines": [438], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanTrackingContext.time_validation": {"executed_lines": [442], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanTrackingContext.time_cache_lookup": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [446], "excluded_lines": []}, "ScanTrackingContext._time_operation": {"executed_lines": [451, 452, 453, 455, 456], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanTrackingContext.add_threat_finding": {"executed_lines": [460, 463, 466, 488, 489, 492, 493, 494], "summary": {"covered_lines": 8, "num_statements": 9, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [495], "excluded_lines": []}, "ScanTrackingContext.mark_cache_hit": {"executed_lines": [499], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanTrackingContext.set_validation_results": {"executed_lines": [503], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ScanTrackingContext.get_total_duration": {"executed_lines": [507], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MCPToolTelemetryContext.__init__": {"executed_lines": [517, 518, 519], "summary": {"covered_lines": 3, "num_statements": 3, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "MCPToolTelemetryContext.report_findings_count": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 1, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [523], "excluded_lines": []}, "MetricsIntegrationMixin.__init__": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [530, 532], "excluded_lines": []}, "MetricsIntegrationMixin._get_metrics_orchestrator": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 5, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [537, 538, 540, 541, 542], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 18, 19, 21, 24, 25, 27, 34, 120, 184, 185, 239, 256, 286, 320, 327, 366, 383, 409, 410, 412, 432, 436, 440, 444, 448, 449, 458, 497, 501, 505, 513, 514, 516, 521, 526, 527, 529, 534], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"MetricsCollectionOrchestrator": {"executed_lines": [28, 29, 30, 37, 38, 39, 41, 44, 45, 46, 57, 58, 68, 73, 78, 81, 84, 85, 87, 89, 90, 93, 99, 112, 114, 116, 123, 124, 125, 127, 128, 129, 139, 140, 150, 153, 154, 155, 160, 166, 176, 178, 180, 189, 190, 193, 202, 204, 205, 208, 235, 243, 246, 248, 258, 261, 262, 263, 264, 267, 268, 269, 270, 271, 272, 275, 282, 290, 293, 295, 322, 323, 324, 325, 329, 331, 332, 333, 336, 337, 338, 341, 342, 343, 344, 347, 350, 352, 368, 370, 372, 385, 386, 387, 389, 390, 392, 393, 394, 395, 396, 398, 399, 400, 401, 402, 404], "summary": {"covered_lines": 107, "num_statements": 141, "percent_covered": 75.88652482269504, "percent_covered_display": "76", "missing_lines": 34, "excluded_lines": 0}, "missing_lines": [59, 61, 62, 63, 75, 88, 101, 103, 104, 109, 141, 143, 144, 145, 156, 157, 168, 170, 171, 174, 223, 225, 233, 276, 277, 278, 279, 280, 362, 364, 380, 381, 405, 406], "excluded_lines": []}, "ScanTrackingContext": {"executed_lines": [413, 414, 415, 418, 419, 420, 421, 424, 425, 426, 427, 428, 429, 430, 434, 438, 442, 451, 452, 453, 455, 456, 460, 463, 466, 488, 489, 492, 493, 494, 499, 503, 507], "summary": {"covered_lines": 33, "num_statements": 35, "percent_covered": 94.28571428571429, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [446, 495], "excluded_lines": []}, "MCPToolTelemetryContext": {"executed_lines": [517, 518, 519], "summary": {"covered_lines": 3, "num_statements": 4, "percent_covered": 75.0, "percent_covered_display": "75", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [523], "excluded_lines": []}, "MetricsIntegrationMixin": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 7, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [530, 532, 537, 538, 540, 541, 542], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 6, 7, 8, 9, 11, 13, 18, 19, 21, 24, 25, 27, 34, 120, 184, 185, 239, 256, 286, 320, 327, 366, 383, 409, 410, 412, 432, 436, 440, 444, 448, 449, 458, 497, 501, 505, 513, 514, 516, 521, 526, 527, 529, 534], "summary": {"covered_lines": 43, "num_statements": 43, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/telemetry/maintenance.py": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 12, 15, 16, 18, 19, 20, 21, 22, 23, 25, 27, 34, 43, 44, 46, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 64, 66, 67, 68, 71, 72, 74, 77, 78, 79, 80, 82, 85, 88, 91, 95, 96, 97, 101, 104, 108, 110, 112, 117, 119, 121, 123, 124, 131, 132, 134, 137, 138, 141, 142, 143, 145, 148, 149, 155, 157, 158, 164, 165, 172, 174, 176, 177, 183, 185, 186, 188, 189, 191, 192, 193, 195, 206, 207, 213, 215, 217, 218, 224, 225, 227, 228, 230, 231, 233, 234, 235, 237, 238, 246, 247, 255, 257, 259, 260, 266, 267, 269, 270, 272, 273, 274, 276, 278, 279, 282, 285, 288, 290, 294, 310, 311, 312, 314, 323, 324, 330, 332, 333, 335, 344, 345, 347, 348, 355, 356, 357, 358, 360, 361, 363, 364, 368, 371, 374, 379, 385, 387, 389, 396, 400, 402, 403, 409, 411, 412, 431, 433, 434, 436, 444, 445, 448, 450, 451, 454, 464, 465, 467, 468, 469, 472, 473, 475, 476, 477, 479, 482, 485, 488, 490, 500, 505, 506, 507, 508, 509, 516, 518, 519, 521, 524, 528, 529, 531, 532, 535, 537, 540, 541, 544, 545, 548, 550, 551, 552, 554, 555, 560, 561, 562, 563, 565, 566, 571, 572, 575, 576, 581, 582, 583, 587, 588, 592, 593, 595], "summary": {"covered_lines": 233, "num_statements": 248, "percent_covered": 93.95161290322581, "percent_covered_display": "94", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [150, 152, 153, 303, 305, 308, 421, 422, 446, 495, 497, 498, 510, 511, 514], "excluded_lines": [], "functions": {"DatabaseMaintenanceManager.__init__": {"executed_lines": [19, 20, 21, 22, 23], "summary": {"covered_lines": 5, "num_statements": 5, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMaintenanceManager.run_maintenance": {"executed_lines": [27, 34, 43, 44, 46, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 64, 66, 67, 68, 71, 72, 74, 77, 78, 79, 80, 82, 85, 88, 91, 95, 96, 97, 101, 104, 108], "summary": {"covered_lines": 38, "num_statements": 38, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMaintenanceManager._initialize_engine": {"executed_lines": [112, 117], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMaintenanceManager._run_analyze": {"executed_lines": [121, 123, 124, 131, 132, 134, 137, 138, 141, 142, 143, 145, 148, 149, 155, 157, 158, 164, 165], "summary": {"covered_lines": 19, "num_statements": 22, "percent_covered": 86.36363636363636, "percent_covered_display": "86", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [150, 152, 153], "excluded_lines": []}, "DatabaseMaintenanceManager._run_vacuum": {"executed_lines": [174, 176, 177, 183, 185, 186, 188, 189, 191, 192, 193, 195, 206, 207], "summary": {"covered_lines": 14, "num_statements": 14, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMaintenanceManager._run_integrity_check": {"executed_lines": [215, 217, 218, 224, 225, 227, 228, 230, 231, 233, 234, 235, 237, 238, 246, 247], "summary": {"covered_lines": 16, "num_statements": 16, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "DatabaseMaintenanceManager._check_indexes": {"executed_lines": [257, 259, 260, 266, 267, 269, 270, 272, 273, 274, 276, 278, 279, 282, 285, 288, 290, 294, 310, 311, 312, 314, 323, 324], "summary": {"covered_lines": 24, "num_statements": 27, "percent_covered": 88.88888888888889, "percent_covered_display": "89", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [303, 305, 308], "excluded_lines": []}, "DatabaseMaintenanceManager._cleanup_old_data": {"executed_lines": [332, 333, 335, 344, 345, 347, 348, 355, 356, 357, 358, 360, 361, 363, 364, 368, 371, 374, 379, 385, 387, 389, 396, 400, 402, 403, 409, 411, 412], "summary": {"covered_lines": 29, "num_statements": 31, "percent_covered": 93.54838709677419, "percent_covered_display": "94", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [421, 422], "excluded_lines": []}, "DatabaseMaintenanceManager.get_database_info": {"executed_lines": [433, 434, 436, 444, 445, 448, 450, 451, 454, 464, 465, 467, 468, 469, 472, 473, 475, 476, 477, 479, 482, 485, 488, 490, 500, 505, 506, 507, 508, 509, 516, 518, 519, 521], "summary": {"covered_lines": 34, "num_statements": 41, "percent_covered": 82.92682926829268, "percent_covered_display": "83", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [446, 495, 497, 498, 510, 511, 514], "excluded_lines": []}, "run_database_maintenance": {"executed_lines": [528, 529, 531, 532], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "get_maintenance_recommendations": {"executed_lines": [537, 540, 541, 544, 545, 548, 550, 551, 552, 554, 555, 560, 561, 562, 563, 565, 566, 571, 572, 575, 576, 581, 582, 583, 587, 588, 592, 593, 595], "summary": {"covered_lines": 29, "num_statements": 29, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 12, 15, 16, 18, 25, 110, 119, 172, 213, 255, 330, 431, 524, 535], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"DatabaseMaintenanceManager": {"executed_lines": [19, 20, 21, 22, 23, 27, 34, 43, 44, 46, 49, 50, 51, 52, 53, 54, 55, 56, 59, 60, 61, 62, 64, 66, 67, 68, 71, 72, 74, 77, 78, 79, 80, 82, 85, 88, 91, 95, 96, 97, 101, 104, 108, 112, 117, 121, 123, 124, 131, 132, 134, 137, 138, 141, 142, 143, 145, 148, 149, 155, 157, 158, 164, 165, 174, 176, 177, 183, 185, 186, 188, 189, 191, 192, 193, 195, 206, 207, 215, 217, 218, 224, 225, 227, 228, 230, 231, 233, 234, 235, 237, 238, 246, 247, 257, 259, 260, 266, 267, 269, 270, 272, 273, 274, 276, 278, 279, 282, 285, 288, 290, 294, 310, 311, 312, 314, 323, 324, 332, 333, 335, 344, 345, 347, 348, 355, 356, 357, 358, 360, 361, 363, 364, 368, 371, 374, 379, 385, 387, 389, 396, 400, 402, 403, 409, 411, 412, 433, 434, 436, 444, 445, 448, 450, 451, 454, 464, 465, 467, 468, 469, 472, 473, 475, 476, 477, 479, 482, 485, 488, 490, 500, 505, 506, 507, 508, 509, 516, 518, 519, 521], "summary": {"covered_lines": 181, "num_statements": 196, "percent_covered": 92.34693877551021, "percent_covered_display": "92", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [150, 152, 153, 303, 305, 308, 421, 422, 446, 495, 497, 498, 510, 511, 514], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 5, 7, 8, 10, 12, 15, 16, 18, 25, 110, 119, 172, 213, 255, 330, 431, 524, 528, 529, 531, 532, 535, 537, 540, 541, 544, 545, 548, 550, 551, 552, 554, 555, 560, 561, 562, 563, 565, 566, 571, 572, 575, 576, 581, 582, 583, 587, 588, 592, 593, 595], "summary": {"covered_lines": 52, "num_statements": 52, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/telemetry/repository.py": {"executed_lines": [1, 3, 4, 6, 7, 9, 19, 20, 22, 23, 24, 26, 28, 29, 33, 37, 45, 46, 47, 48, 51, 63, 64, 66, 68, 76, 79, 80, 81, 82, 83, 84, 88, 92, 99, 100, 101, 102, 105, 117, 118, 120, 122, 131, 134, 135, 136, 137, 138, 139, 140, 144, 155, 166, 167, 168, 169, 172, 183, 184, 186, 190, 199, 212, 213, 214, 215, 218, 243, 244, 246, 248, 250, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 265, 266, 267, 268, 272, 286, 310, 311, 312, 313, 316, 340, 341, 343, 345, 356, 361, 372, 376, 378, 393, 394, 395, 396, 399, 414, 415, 417, 421, 423, 426, 454, 482, 502, 533, 547, 566, 574], "summary": {"covered_lines": 119, "num_statements": 128, "percent_covered": 92.96875, "percent_covered_display": "93", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371], "excluded_lines": [], "functions": {"ComprehensiveTelemetryRepository.__init__": {"executed_lines": [23, 24], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository._maybe_commit": {"executed_lines": [28, 29], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.track_mcp_tool_execution": {"executed_lines": [37, 45, 46, 47, 48, 51, 63, 64, 66], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.complete_mcp_tool_execution": {"executed_lines": [76, 79, 80, 81, 82, 83, 84], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.track_cli_command_execution": {"executed_lines": [92, 99, 100, 101, 102, 105, 117, 118, 120], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.complete_cli_command_execution": {"executed_lines": [131, 134, 135, 136, 137, 138, 139, 140], "summary": {"covered_lines": 8, "num_statements": 8, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.track_cache_operation": {"executed_lines": [155, 166, 167, 168, 169, 172, 183, 184, 186], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.track_scan_execution": {"executed_lines": [199, 212, 213, 214, 215, 218, 243, 244, 246], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.complete_scan_execution": {"executed_lines": [250, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 265, 266, 267, 268], "summary": {"covered_lines": 15, "num_statements": 15, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.record_threat_finding": {"executed_lines": [286, 310, 311, 312, 313, 316, 340, 341, 343], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.update_threat_finding_validation": {"executed_lines": [356, 361, 372], "summary": {"covered_lines": 3, "num_statements": 12, "percent_covered": 25.0, "percent_covered_display": "25", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371], "excluded_lines": []}, "ComprehensiveTelemetryRepository.record_system_health_snapshot": {"executed_lines": [378, 393, 394, 395, 396, 399, 414, 415, 417], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "ComprehensiveTelemetryRepository.get_dashboard_data": {"executed_lines": [423, 426, 454, 482, 502, 533, 547, 566, 574], "summary": {"covered_lines": 9, "num_statements": 9, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 19, 20, 22, 26, 33, 68, 88, 122, 144, 190, 248, 272, 345, 376, 421], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"ComprehensiveTelemetryRepository": {"executed_lines": [23, 24, 28, 29, 37, 45, 46, 47, 48, 51, 63, 64, 66, 76, 79, 80, 81, 82, 83, 84, 92, 99, 100, 101, 102, 105, 117, 118, 120, 131, 134, 135, 136, 137, 138, 139, 140, 155, 166, 167, 168, 169, 172, 183, 184, 186, 199, 212, 213, 214, 215, 218, 243, 244, 246, 250, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 265, 266, 267, 268, 286, 310, 311, 312, 313, 316, 340, 341, 343, 356, 361, 372, 378, 393, 394, 395, 396, 399, 414, 415, 417, 423, 426, 454, 482, 502, 533, 547, 566, 574], "summary": {"covered_lines": 100, "num_statements": 109, "percent_covered": 91.74311926605505, "percent_covered_display": "92", "missing_lines": 9, "excluded_lines": 0}, "missing_lines": [362, 363, 364, 365, 366, 367, 368, 370, 371], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 9, 19, 20, 22, 26, 33, 68, 88, 122, 144, 190, 248, 272, 345, 376, 421], "summary": {"covered_lines": 19, "num_statements": 19, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}, "src/adversary_mcp_server/telemetry/service.py": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 14, 15, 17, 18, 20, 21, 22, 24, 26, 27, 29, 30, 31, 33, 34, 36, 42, 46, 50, 51, 55, 63, 64, 70, 72, 73, 75, 79, 80, 84, 88, 89, 95, 104, 105, 109, 111, 112, 114, 128, 129, 144, 146, 147, 151, 160, 162, 163, 166, 167, 168, 178, 185, 206, 221, 222, 224, 225, 229, 234], "summary": {"covered_lines": 66, "num_statements": 81, "percent_covered": 81.48148148148148, "percent_covered_display": "81", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [37, 39, 40, 193, 195, 196, 199, 208, 209, 210, 231, 232, 236, 237, 238], "excluded_lines": [], "functions": {"TelemetryService.__init__": {"executed_lines": [15], "summary": {"covered_lines": 1, "num_statements": 1, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.get_repository": {"executed_lines": [20, 21, 22, 24], "summary": {"covered_lines": 4, "num_statements": 4, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.transaction": {"executed_lines": [29, 30, 31, 33, 34, 36, 42], "summary": {"covered_lines": 7, "num_statements": 10, "percent_covered": 70.0, "percent_covered_display": "70", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [37, 39, 40], "excluded_lines": []}, "TelemetryService.start_mcp_tool_tracking": {"executed_lines": [50, 51], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.complete_mcp_tool_tracking": {"executed_lines": [63, 64], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.start_cli_command_tracking": {"executed_lines": [72, 73], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.complete_cli_command_tracking": {"executed_lines": [79, 80], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.track_cache_operation": {"executed_lines": [88, 89], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.start_scan_tracking": {"executed_lines": [104, 105], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.complete_scan_tracking": {"executed_lines": [111, 112], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.record_threat_finding": {"executed_lines": [128, 129], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.record_system_health_snapshot": {"executed_lines": [146, 147], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.record_scan_results_atomic": {"executed_lines": [160, 162, 163, 166, 167, 168, 178], "summary": {"covered_lines": 7, "num_statements": 7, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.record_mcp_results_atomic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 4, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [193, 195, 196, 199], "excluded_lines": []}, "TelemetryService.update_validation_results_atomic": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [208, 209, 210], "excluded_lines": []}, "TelemetryService.get_dashboard_data": {"executed_lines": [224, 225], "summary": {"covered_lines": 2, "num_statements": 2, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "TelemetryService.invalidate_dashboard_cache": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 2, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [231, 232], "excluded_lines": []}, "TelemetryService.get_cache_stats": {"executed_lines": [], "summary": {"covered_lines": 0, "num_statements": 3, "percent_covered": 0.0, "percent_covered_display": "0", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [236, 237, 238], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 14, 17, 18, 26, 27, 46, 55, 70, 75, 84, 95, 109, 114, 144, 151, 185, 206, 221, 222, 229, 234], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}, "classes": {"TelemetryService": {"executed_lines": [15, 20, 21, 22, 24, 29, 30, 31, 33, 34, 36, 42, 50, 51, 63, 64, 72, 73, 79, 80, 88, 89, 104, 105, 111, 112, 128, 129, 146, 147, 160, 162, 163, 166, 167, 168, 178, 224, 225], "summary": {"covered_lines": 39, "num_statements": 54, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [37, 39, 40, 193, 195, 196, 199, 208, 209, 210, 231, 232, 236, 237, 238], "excluded_lines": []}, "": {"executed_lines": [1, 3, 4, 6, 7, 8, 11, 12, 14, 17, 18, 26, 27, 46, 55, 70, 75, 84, 95, 109, 114, 144, 151, 185, 206, 221, 222, 229, 234], "summary": {"covered_lines": 27, "num_statements": 27, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}}}}, "totals": {"covered_lines": 14193, "num_statements": 18477, "percent_covered": 76.81441792498782, "percent_covered_display": "77", "missing_lines": 4284, "excluded_lines": 47}}

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brettbergin/adversary-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server