| {"meta": {"format": 3, "version": "7.10.7", "timestamp": "2025-09-27T01:35:40.633233", "branch_coverage": false, "show_contexts": false}, "files": {"src/claude_agent/__init__.py": {"executed_lines": [1, 6, 7], "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, 6, 7], "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, 6, 7], "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/claude_agent/cli/enhanced_interface.py": {"executed_lines": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 25, 26, 27, 30, 31, 33, 34, 35, 36, 37, 38, 41, 42, 48, 54, 55, 57, 59, 66, 68, 69, 73, 74, 78, 80, 81, 86, 89, 90, 93, 94, 95, 97, 100, 102, 104, 106, 107, 108, 110, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 129, 131, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 152, 153, 154, 155, 156, 159, 160, 161, 163, 165, 166, 167, 170, 171, 172, 173, 175, 178, 179, 180, 181, 185, 187, 190, 191, 192, 193, 194, 195, 196, 199, 200, 201, 203, 205, 207, 208, 209, 211, 212, 213, 214, 216, 218, 220, 223, 230, 232, 233, 235, 237, 240, 241, 243, 244, 246, 247, 249, 250, 252, 253, 255, 256, 257, 259, 260, 261, 262, 264, 265, 267, 268, 271, 272, 276, 278, 280, 282, 283, 286, 287, 288, 290, 292, 293, 294, 296, 298, 299, 300, 302, 303, 304, 306, 307, 308, 309, 311, 313, 315, 316, 317, 319, 321, 322, 323, 325, 326, 327, 328, 330, 331, 332, 334, 336, 338, 340, 341, 342, 344, 345, 347, 348, 349, 351, 353, 355, 356, 357, 358, 360, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 375, 377, 379, 380, 381, 383, 385, 390, 392, 394, 395, 396, 398, 399, 401, 403, 404, 405, 407, 409, 411, 413, 416, 418, 420, 422, 425, 427, 428, 430, 432, 433, 434, 436, 438, 439, 440, 442, 445, 446, 448, 449, 450, 453, 454, 455, 456, 458, 459, 460, 462, 463, 468, 470, 472, 473, 474, 476, 478, 479, 481, 483, 485, 487, 489, 495, 498, 499, 502, 503, 504, 505, 506, 508, 520, 521, 522, 524, 526, 529, 531, 535, 539, 544, 547, 550, 553, 554, 556, 557, 559, 561, 563, 564, 566, 568, 569, 572, 573, 574, 576, 577, 578, 580, 581, 582, 583, 584, 585, 586, 588, 590, 591, 593, 594, 596], "summary": {"covered_lines": 343, "num_statements": 351, "percent_covered": 97.72079772079772, "percent_covered_display": "98", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [71, 76, 183, 198, 510, 514, 516, 517], "excluded_lines": [], "functions": {"EnhancedCLIInterface.__init__": {"executed_lines": [34, 35, 36, 37, 38, 41, 42, 48, 54, 55], "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": []}, "EnhancedCLIInterface.setup_logging": {"executed_lines": [59], "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": []}, "EnhancedCLIInterface.setup_key_bindings": {"executed_lines": [68, 69, 73, 74], "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": []}, "EnhancedCLIInterface.setup_key_bindings._": {"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": [76], "excluded_lines": []}, "EnhancedCLIInterface.initialize": {"executed_lines": [80, 81, 86, 89, 90, 93, 94, 95, 97, 100, 102, 104, 106, 107, 108], "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": []}, "EnhancedCLIInterface.show_welcome": {"executed_lines": [112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 129], "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": []}, "EnhancedCLIInterface.show_help": {"executed_lines": [133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 152, 153, 154, 155, 156, 159, 160, 161], "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": []}, "EnhancedCLIInterface.show_status": {"executed_lines": [165, 166, 167, 170, 171, 172, 173, 175, 178, 179, 180, 181, 185, 187, 190, 191, 192, 193, 194, 195, 196, 199, 200, 201, 203], "summary": {"covered_lines": 25, "num_statements": 27, "percent_covered": 92.5925925925926, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [183, 198], "excluded_lines": []}, "EnhancedCLIInterface.show_command_history": {"executed_lines": [207, 208, 209, 211, 212, 213, 214], "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": []}, "EnhancedCLIInterface.get_user_input": {"executed_lines": [218, 220, 223, 230, 232, 233], "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": []}, "EnhancedCLIInterface.process_command": {"executed_lines": [237, 240, 241, 243, 244, 246, 247, 249, 250, 252, 253, 255, 256, 257, 259, 260, 261, 262, 264, 265, 267, 268, 271, 272, 276, 278], "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": []}, "EnhancedCLIInterface.confirm_action": {"executed_lines": [282, 283, 286, 287, 288], "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": []}, "EnhancedCLIInterface.show_tools": {"executed_lines": [292, 293, 294, 296, 298, 299, 300, 302, 303, 304, 306, 307, 308, 309, 311], "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": []}, "EnhancedCLIInterface.show_conversation_history": {"executed_lines": [315, 316, 317, 319, 321, 322, 323, 325, 326, 327, 328, 330, 331, 332, 334], "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": []}, "EnhancedCLIInterface.switch_mode": {"executed_lines": [338, 340, 341, 342, 344, 345, 347, 348, 349, 351], "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": []}, "EnhancedCLIInterface.handle_sshout_command": {"executed_lines": [355, 356, 357, 358, 360, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 375], "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": []}, "EnhancedCLIInterface._sshout_connect": {"executed_lines": [379, 380, 381, 383, 385, 390, 392, 394, 395, 396, 398, 399], "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": []}, "EnhancedCLIInterface._sshout_disconnect": {"executed_lines": [403, 404, 405, 407], "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": []}, "EnhancedCLIInterface._connect_sshout": {"executed_lines": [411, 413, 416], "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": []}, "EnhancedCLIInterface._disconnect_sshout": {"executed_lines": [420, 422, 425, 427, 428], "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": []}, "EnhancedCLIInterface._sshout_status": {"executed_lines": [432, 433, 434, 436, 438, 439, 440, 442, 445, 446, 448, 449, 450, 453, 454, 455, 456, 458, 459, 460, 462, 463, 468], "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": []}, "EnhancedCLIInterface._sshout_send_message": {"executed_lines": [472, 473, 474, 476, 478, 479, 481], "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": []}, "EnhancedCLIInterface.process_user_input": {"executed_lines": [485, 487, 489, 495, 498, 499, 502, 503, 508, 520, 521, 522, 524, 526, 529, 531, 535, 539, 544, 547, 550, 553, 554, 556, 557], "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": []}, "EnhancedCLIInterface.process_user_input.ProgressLogHandler.__init__": {"executed_lines": [504, 505, 506], "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": []}, "EnhancedCLIInterface.process_user_input.ProgressLogHandler.emit": {"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": [510, 514, 516, 517], "excluded_lines": []}, "EnhancedCLIInterface.run_interactive_loop": {"executed_lines": [561, 563, 564, 566, 568, 569, 572, 573, 574, 576, 577, 578, 580, 581, 582, 583, 584, 585, 586], "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": []}, "EnhancedCLIInterface.shutdown": {"executed_lines": [590, 591, 593, 594, 596], "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, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 25, 26, 27, 30, 31, 33, 57, 66, 78, 110, 131, 163, 205, 216, 235, 280, 290, 313, 336, 353, 377, 401, 409, 418, 430, 470, 483, 559, 588], "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": {"EnhancedCLIInterface": {"executed_lines": [34, 35, 36, 37, 38, 41, 42, 48, 54, 55, 59, 68, 69, 73, 74, 80, 81, 86, 89, 90, 93, 94, 95, 97, 100, 102, 104, 106, 107, 108, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 123, 129, 133, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 149, 152, 153, 154, 155, 156, 159, 160, 161, 165, 166, 167, 170, 171, 172, 173, 175, 178, 179, 180, 181, 185, 187, 190, 191, 192, 193, 194, 195, 196, 199, 200, 201, 203, 207, 208, 209, 211, 212, 213, 214, 218, 220, 223, 230, 232, 233, 237, 240, 241, 243, 244, 246, 247, 249, 250, 252, 253, 255, 256, 257, 259, 260, 261, 262, 264, 265, 267, 268, 271, 272, 276, 278, 282, 283, 286, 287, 288, 292, 293, 294, 296, 298, 299, 300, 302, 303, 304, 306, 307, 308, 309, 311, 315, 316, 317, 319, 321, 322, 323, 325, 326, 327, 328, 330, 331, 332, 334, 338, 340, 341, 342, 344, 345, 347, 348, 349, 351, 355, 356, 357, 358, 360, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 375, 379, 380, 381, 383, 385, 390, 392, 394, 395, 396, 398, 399, 403, 404, 405, 407, 411, 413, 416, 420, 422, 425, 427, 428, 432, 433, 434, 436, 438, 439, 440, 442, 445, 446, 448, 449, 450, 453, 454, 455, 456, 458, 459, 460, 462, 463, 468, 472, 473, 474, 476, 478, 479, 481, 485, 487, 489, 495, 498, 499, 502, 503, 508, 520, 521, 522, 524, 526, 529, 531, 535, 539, 544, 547, 550, 553, 554, 556, 557, 561, 563, 564, 566, 568, 569, 572, 573, 574, 576, 577, 578, 580, 581, 582, 583, 584, 585, 586, 590, 591, 593, 594, 596], "summary": {"covered_lines": 295, "num_statements": 299, "percent_covered": 98.66220735785953, "percent_covered_display": "99", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [71, 76, 183, 198], "excluded_lines": []}, "EnhancedCLIInterface.process_user_input.ProgressLogHandler": {"executed_lines": [504, 505, 506], "summary": {"covered_lines": 3, "num_statements": 7, "percent_covered": 42.857142857142854, "percent_covered_display": "43", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [510, 514, 516, 517], "excluded_lines": []}, "": {"executed_lines": [1, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 25, 26, 27, 30, 31, 33, 57, 66, 78, 110, 131, 163, 205, 216, 235, 280, 290, 313, 336, 353, 377, 401, 409, 418, 430, 470, 483, 559, 588], "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/claude_agent/cli/interface.py": {"executed_lines": [1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 23, 24, 26, 27, 28, 29, 30, 32, 34, 41, 43, 44, 49, 52, 53, 56, 57, 58, 60, 62, 64, 65, 66, 67, 69, 71, 72, 73, 74, 75, 77, 83, 85, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 99, 101, 103, 104, 105, 107, 108, 109, 111, 112, 113, 115, 116, 118, 120, 122, 124, 125, 126, 128, 130, 131, 132, 134, 135, 136, 138, 139, 140, 141, 143, 145, 147, 148, 149, 151, 153, 154, 155, 157, 158, 159, 161, 162, 165, 167, 169, 170, 171, 173, 175, 176, 177, 179, 180, 182, 183, 184, 186, 188, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 210, 212, 213, 214, 216, 217, 221, 223, 225, 227, 228, 229, 231, 233, 235, 241, 244, 245, 248, 249, 250, 251, 252, 254, 256, 260, 262, 263, 266, 267, 268, 270, 272, 275, 277, 281, 285, 290, 293, 296, 299, 300, 301, 303, 304, 305, 307, 309, 311, 312, 314, 316, 317, 320, 321, 322, 324, 325, 326, 328, 329, 330, 331, 332, 333, 334, 336, 338, 339, 340, 343, 344, 345, 346, 347, 348, 383], "summary": {"covered_lines": 206, "num_statements": 223, "percent_covered": 92.37668161434978, "percent_covered_display": "92", "missing_lines": 17, "excluded_lines": 2}, "missing_lines": [163, 351, 352, 354, 356, 357, 358, 361, 364, 365, 368, 369, 372, 374, 375, 377, 380], "excluded_lines": [383, 384], "functions": {"CLIInterface.__init__": {"executed_lines": [27, 28, 29, 30], "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": []}, "CLIInterface.setup_logging": {"executed_lines": [34], "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": []}, "CLIInterface.initialize": {"executed_lines": [43, 44, 49, 52, 53, 56, 57, 58, 60, 62, 64, 65, 66, 67], "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": []}, "CLIInterface.show_welcome": {"executed_lines": [71, 72, 73, 74, 75, 77, 83], "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": []}, "CLIInterface.show_help": {"executed_lines": [87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 99], "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": []}, "CLIInterface.show_status": {"executed_lines": [103, 104, 105, 107, 108, 109, 111, 112, 113, 115, 116, 118, 120], "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": []}, "CLIInterface.show_tools": {"executed_lines": [124, 125, 126, 128, 130, 131, 132, 134, 135, 136, 138, 139, 140, 141, 143], "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": []}, "CLIInterface.show_history": {"executed_lines": [147, 148, 149, 151, 153, 154, 155, 157, 158, 159, 161, 162, 165], "summary": {"covered_lines": 13, "num_statements": 14, "percent_covered": 92.85714285714286, "percent_covered_display": "93", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [163], "excluded_lines": []}, "CLIInterface.switch_mode": {"executed_lines": [169, 170, 171, 173, 175, 176, 177, 179, 180, 182, 183, 184, 186], "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": []}, "CLIInterface.process_command": {"executed_lines": [190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 210, 212, 213, 214, 216, 217, 221, 223], "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": []}, "CLIInterface.process_user_input": {"executed_lines": [227, 228, 229, 231, 233, 235, 241, 244, 245, 248, 249, 254, 266, 267, 268, 270, 272, 275, 277, 281, 285, 290, 293, 296, 299, 300, 301, 303, 304, 305], "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": []}, "CLIInterface.process_user_input.ProgressLogHandler.__init__": {"executed_lines": [250, 251, 252], "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": []}, "CLIInterface.process_user_input.ProgressLogHandler.emit": {"executed_lines": [256, 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": []}, "CLIInterface.run_interactive_loop": {"executed_lines": [309, 311, 312, 314, 316, 317, 320, 321, 322, 324, 325, 326, 328, 329, 330, 331, 332, 333, 334], "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": []}, "CLIInterface.shutdown": {"executed_lines": [338, 339, 340], "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": [351, 380], "excluded_lines": []}, "main.run": {"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": [352, 354, 356, 357, 358, 361, 364, 365, 368, 369, 372, 374, 375, 377], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 23, 24, 26, 32, 41, 69, 85, 101, 122, 145, 167, 188, 225, 307, 336, 343, 344, 345, 346, 347, 348, 383], "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": [383, 384]}}, "classes": {"CLIInterface": {"executed_lines": [27, 28, 29, 30, 34, 43, 44, 49, 52, 53, 56, 57, 58, 60, 62, 64, 65, 66, 67, 71, 72, 73, 74, 75, 77, 83, 87, 88, 89, 91, 92, 93, 94, 95, 96, 97, 99, 103, 104, 105, 107, 108, 109, 111, 112, 113, 115, 116, 118, 120, 124, 125, 126, 128, 130, 131, 132, 134, 135, 136, 138, 139, 140, 141, 143, 147, 148, 149, 151, 153, 154, 155, 157, 158, 159, 161, 162, 165, 169, 170, 171, 173, 175, 176, 177, 179, 180, 182, 183, 184, 186, 190, 192, 193, 195, 196, 198, 199, 201, 202, 204, 205, 207, 208, 209, 210, 212, 213, 214, 216, 217, 221, 223, 227, 228, 229, 231, 233, 235, 241, 244, 245, 248, 249, 254, 266, 267, 268, 270, 272, 275, 277, 281, 285, 290, 293, 296, 299, 300, 301, 303, 304, 305, 309, 311, 312, 314, 316, 317, 320, 321, 322, 324, 325, 326, 328, 329, 330, 331, 332, 333, 334, 338, 339, 340], "summary": {"covered_lines": 165, "num_statements": 166, "percent_covered": 99.39759036144578, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [163], "excluded_lines": []}, "CLIInterface.process_user_input.ProgressLogHandler": {"executed_lines": [250, 251, 252, 256, 260, 262, 263], "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, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 20, 23, 24, 26, 32, 41, 69, 85, 101, 122, 145, 167, 188, 225, 307, 336, 343, 344, 345, 346, 347, 348, 383], "summary": {"covered_lines": 34, "num_statements": 50, "percent_covered": 68.0, "percent_covered_display": "68", "missing_lines": 16, "excluded_lines": 2}, "missing_lines": [351, 352, 354, 356, 357, 358, 361, 364, 365, 368, 369, 372, 374, 375, 377, 380], "excluded_lines": [383, 384]}}}, "src/claude_agent/core/agent.py": {"executed_lines": [1, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 33, 34, 36, 38, 43, 44, 45, 46, 47, 48, 49, 51, 53, 54, 56, 58, 60, 61, 63, 65, 67, 69, 77, 78, 79, 80, 81, 83, 84, 86, 87, 88, 90, 92, 94, 95, 97, 104, 105, 110, 111, 112, 113, 114, 116, 119, 122, 123, 125, 128, 129, 140, 141, 146, 147, 148, 149, 150, 153, 156, 157, 159, 161, 162, 164, 165, 167, 168, 170, 172, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 189, 190, 191, 193, 195, 201, 202, 205, 206, 208, 209, 210, 212, 213, 214, 218, 219, 221, 222, 223, 228, 229, 231, 232, 237, 238, 239, 241, 242, 244, 246, 248, 255, 260, 261, 262, 263, 264, 266, 268, 270, 284, 289, 290, 291, 292, 293, 295, 297, 299, 300, 302, 304, 306, 308, 309], "summary": {"covered_lines": 156, "num_statements": 157, "percent_covered": 99.36305732484077, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [215], "excluded_lines": [], "functions": {"Task.__post_init__": {"executed_lines": [29, 30], "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": []}, "AgentCore.__init__": {"executed_lines": [38, 43, 44, 45, 46, 47, 48, 49], "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": []}, "AgentCore.set_thinking_mode": {"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": []}, "AgentCore.process_user_input": {"executed_lines": [58, 60, 61, 63], "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": []}, "AgentCore._interactive_process": {"executed_lines": [67, 69, 77, 78, 79, 80, 81, 83, 84, 86, 87, 88], "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": []}, "AgentCore._yolo_process": {"executed_lines": [92, 94, 95, 97, 104, 105, 110, 111, 112, 113, 114, 116, 119, 122, 123, 125, 128, 129, 140, 141, 146, 147, 148, 149, 150, 153, 156, 157, 159, 161, 162, 164, 165, 167, 168], "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": []}, "AgentCore._extract_json_from_response": {"executed_lines": [172, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 189, 190, 191], "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": []}, "AgentCore._execute_task_plan": {"executed_lines": [195, 201, 202, 205, 206, 208, 209, 210, 212, 213, 214, 218, 219, 221, 222, 223, 228, 229, 231, 232, 237, 238, 239, 241, 242, 244], "summary": {"covered_lines": 26, "num_statements": 27, "percent_covered": 96.29629629629629, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [215], "excluded_lines": []}, "AgentCore._execute_single_task": {"executed_lines": [248, 255, 260, 261, 262, 263, 264, 266], "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": []}, "AgentCore._summarize_execution": {"executed_lines": [270, 284, 289, 290, 291, 292, 293, 295], "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": []}, "AgentCore.add_mcp_tool": {"executed_lines": [299, 300], "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": []}, "AgentCore.get_conversation_history": {"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": []}, "AgentCore.clear_history": {"executed_lines": [308, 309], "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, 6, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 28, 33, 34, 36, 51, 56, 65, 90, 170, 193, 246, 268, 297, 302, 306], "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": {"ThinkingMode": {"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": []}, "Task": {"executed_lines": [29, 30], "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": []}, "AgentCore": {"executed_lines": [38, 43, 44, 45, 46, 47, 48, 49, 53, 54, 58, 60, 61, 63, 67, 69, 77, 78, 79, 80, 81, 83, 84, 86, 87, 88, 92, 94, 95, 97, 104, 105, 110, 111, 112, 113, 114, 116, 119, 122, 123, 125, 128, 129, 140, 141, 146, 147, 148, 149, 150, 153, 156, 157, 159, 161, 162, 164, 165, 167, 168, 172, 174, 175, 177, 178, 179, 180, 181, 182, 183, 184, 187, 189, 190, 191, 195, 201, 202, 205, 206, 208, 209, 210, 212, 213, 214, 218, 219, 221, 222, 223, 228, 229, 231, 232, 237, 238, 239, 241, 242, 244, 248, 255, 260, 261, 262, 263, 264, 266, 270, 284, 289, 290, 291, 292, 293, 295, 299, 300, 304, 308, 309], "summary": {"covered_lines": 123, "num_statements": 124, "percent_covered": 99.19354838709677, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [215], "excluded_lines": []}, "": {"executed_lines": [1, 5, 6, 7, 8, 9, 10, 11, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 26, 28, 33, 34, 36, 51, 56, 65, 90, 170, 193, 246, 268, 297, 302, 306], "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/claude_agent/mcp/integration.py": {"executed_lines": [1, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 20, 22, 24, 25, 27, 28, 34, 35, 37, 40, 41, 43, 46, 47, 48, 53, 55, 57, 58, 59, 61, 63, 64, 65, 67, 68, 69, 70, 73, 75, 76, 78, 79, 80, 82, 84, 86, 88, 89, 91, 92, 94, 100, 102, 103, 106, 110, 111, 114, 115, 117, 118, 119, 120, 122, 131, 133, 136, 139, 140, 143, 146, 147, 148, 149, 150, 152, 153, 161, 163, 169, 171, 174, 175, 176, 180, 186, 187, 188, 189, 191, 193, 195, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 210, 212, 214], "summary": {"covered_lines": 105, "num_statements": 107, "percent_covered": 98.13084112149532, "percent_covered_display": "98", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [107, 108], "excluded_lines": [], "functions": {"MCPToolManager.__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": []}, "MCPToolManager.load_mcp_server": {"executed_lines": [24, 25, 27, 28, 34, 35, 37, 40, 41, 43, 46, 47, 48, 53, 55, 57, 58, 59], "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": []}, "MCPToolManager.call_tool": {"executed_lines": [63, 64, 65, 67, 68, 69, 70, 73, 75, 76, 78, 79, 80], "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": []}, "MCPToolManager.get_available_tools": {"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": []}, "MCPToolManager.get_tool_info": {"executed_lines": [88, 89, 91, 92, 94], "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": []}, "MCPToolManager.shutdown": {"executed_lines": [102, 103, 106, 110, 111], "summary": {"covered_lines": 5, "num_statements": 7, "percent_covered": 71.42857142857143, "percent_covered_display": "71", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [107, 108], "excluded_lines": []}, "MCPToolIntegration.__init__": {"executed_lines": [118, 119, 120], "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": []}, "MCPToolIntegration.setup_default_tools": {"executed_lines": [131], "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": []}, "MCPToolIntegration.enhance_agent_with_tools": {"executed_lines": [136, 139, 143, 146, 147, 148, 149, 150, 152, 153, 161], "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": []}, "MCPToolIntegration.enhance_agent_with_tools.call_mcp_tool": {"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": []}, "MCPToolIntegration.process_tool_calls_in_response": {"executed_lines": [169, 171, 174, 175, 176, 180, 186, 187, 188, 189, 191, 193], "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": []}, "MCPToolIntegration._extract_tool_calls": {"executed_lines": [198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 210], "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": []}, "MCPToolIntegration.shutdown": {"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": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 10, 11, 14, 15, 17, 22, 61, 82, 86, 100, 114, 115, 117, 122, 133, 163, 195, 212], "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": {"MCPToolManager": {"executed_lines": [18, 19, 20, 24, 25, 27, 28, 34, 35, 37, 40, 41, 43, 46, 47, 48, 53, 55, 57, 58, 59, 63, 64, 65, 67, 68, 69, 70, 73, 75, 76, 78, 79, 80, 84, 88, 89, 91, 92, 94, 102, 103, 106, 110, 111], "summary": {"covered_lines": 45, "num_statements": 47, "percent_covered": 95.74468085106383, "percent_covered_display": "96", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [107, 108], "excluded_lines": []}, "MCPToolIntegration": {"executed_lines": [118, 119, 120, 131, 136, 139, 140, 143, 146, 147, 148, 149, 150, 152, 153, 161, 169, 171, 174, 175, 176, 180, 186, 187, 188, 189, 191, 193, 198, 200, 201, 202, 203, 204, 205, 206, 207, 208, 210, 214], "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, 6, 7, 8, 9, 10, 11, 14, 15, 17, 22, 61, 82, 86, 100, 114, 115, 117, 122, 133, 163, 195, 212], "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/claude_agent/sshout/__init__.py": {"executed_lines": [2, 9, 10, 12, 22, 27, 29, 30, 33, 35, 36, 37, 38, 40], "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": [], "functions": {"create_sshout_integration": {"executed_lines": [27, 29, 30, 33, 35, 36, 37, 38, 40], "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": [2, 9, 10, 12, 22], "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": [2, 9, 10, 12, 22, 27, 29, 30, 33, 35, 36, 37, 38, 40], "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/claude_agent/sshout/api_client.py": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 78, 80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 93, 96, 97, 100, 101, 104, 105, 108, 115, 117, 118, 121, 122, 125, 126, 127, 128, 129, 130, 133, 142, 145, 146, 147, 148, 151, 153, 156, 157, 158, 160, 161, 164, 167, 170, 172, 174, 175, 176, 177, 179, 181, 182, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 196, 197, 199, 200, 201, 203, 205, 206, 208, 210, 212, 213, 216, 217, 218, 219, 222, 223, 224, 226, 227, 228, 229, 231, 232, 233, 234, 237, 238, 239, 240, 241, 243, 245, 246, 247, 249, 251, 252, 255, 256, 258, 259, 261, 263, 264, 267, 268, 271, 272, 275, 276, 277, 278, 280, 281, 283, 285, 286, 287, 289, 290, 291, 293, 294, 295, 296, 297, 298, 300, 301, 302, 303, 305, 311, 313, 315, 316, 319, 320, 321, 323, 324, 325, 327, 328, 337, 341, 342, 344, 347, 348, 349, 350, 352, 353, 354, 356, 357, 358, 366, 367, 369, 372, 373, 374, 376, 378, 379, 381, 382, 383, 384, 385, 387, 388, 389, 395, 398, 400, 402, 404, 405, 407, 408, 409, 410, 440, 442, 444, 446, 447, 448, 470, 478, 480, 481, 482, 483, 554, 556, 557, 560, 567, 568, 570, 572, 573, 574, 585, 587, 588, 589, 599, 601, 603, 604, 606, 607, 608, 610, 615, 616, 618, 620, 622, 624, 626, 628, 630, 632, 634, 635, 636, 637, 638, 639, 640, 642, 644, 645, 653, 670, 671, 673, 674, 675, 676, 679, 680, 683, 685, 687, 689, 690, 691, 694, 695, 697, 698, 699, 702, 703, 704, 707, 708, 709, 711, 713, 714, 715, 716, 717, 719, 729, 730, 732, 733, 734, 736, 742, 744, 745, 746, 748, 750, 753, 755, 756, 759, 762, 768, 769, 777, 783, 786, 789, 790, 796, 797, 799, 801, 804, 805, 806, 809, 810, 813, 816, 817, 819, 821, 823, 824, 836, 838, 839], "summary": {"covered_lines": 369, "num_statements": 497, "percent_covered": 74.24547283702213, "percent_covered_display": "74", "missing_lines": 128, "excluded_lines": 0}, "missing_lines": [304, 306, 307, 308, 309, 330, 331, 333, 334, 338, 339, 360, 361, 363, 364, 391, 392, 393, 412, 413, 414, 417, 419, 420, 421, 422, 423, 424, 425, 426, 428, 430, 431, 432, 434, 435, 436, 437, 438, 450, 451, 453, 454, 455, 456, 459, 460, 461, 463, 464, 466, 467, 468, 471, 472, 473, 474, 476, 485, 488, 489, 490, 493, 494, 495, 496, 499, 500, 501, 502, 505, 506, 509, 510, 511, 514, 523, 524, 525, 528, 529, 530, 531, 533, 534, 535, 538, 539, 540, 542, 543, 544, 545, 547, 548, 549, 551, 552, 558, 561, 562, 564, 565, 576, 577, 578, 580, 582, 583, 591, 592, 594, 596, 597, 613, 738, 739, 740, 770, 771, 772, 773, 774, 791, 792, 794, 831, 841], "excluded_lines": [], "functions": {"SSHOUTApiClient.__init__": {"executed_lines": [80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 93, 96, 97, 100, 101, 104, 105, 108], "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": []}, "SSHOUTApiClient.connect": {"executed_lines": [117, 118, 121, 122, 125, 126, 127, 128, 129, 130, 133, 142, 145, 146, 147, 148, 151, 153, 156, 157, 158, 160, 161, 164, 167, 170, 172, 174, 175, 176, 177], "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": []}, "SSHOUTApiClient.disconnect": {"executed_lines": [181, 182, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 196, 197, 199, 200, 201, 203, 205, 206], "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": []}, "SSHOUTApiClient._handshake": {"executed_lines": [210, 212, 213, 216, 217, 218, 219, 222, 223, 224, 226, 227, 228, 229, 231, 232, 233, 234, 237, 238, 239, 240, 241, 243, 245, 246, 247], "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": []}, "SSHOUTApiClient._send_packet": {"executed_lines": [251, 252, 255, 256, 258, 259], "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": []}, "SSHOUTApiClient._receive_packet": {"executed_lines": [263, 264, 267, 268, 271, 272, 275, 276, 277, 278, 280, 281], "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": []}, "SSHOUTApiClient._read_exact": {"executed_lines": [285, 286, 287, 289, 290, 291, 293, 294, 295, 296, 297, 298, 300, 301, 302, 303, 305, 311], "summary": {"covered_lines": 18, "num_statements": 23, "percent_covered": 78.26086956521739, "percent_covered_display": "78", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [304, 306, 307, 308, 309], "excluded_lines": []}, "SSHOUTApiClient._get_online_users": {"executed_lines": [315, 316, 319, 320, 321, 323, 324, 325, 327, 328, 337, 341, 342, 344, 347, 348, 349, 350, 352, 353, 354, 356, 357, 358, 366, 367], "summary": {"covered_lines": 26, "num_statements": 36, "percent_covered": 72.22222222222223, "percent_covered_display": "72", "missing_lines": 10, "excluded_lines": 0}, "missing_lines": [330, 331, 333, 334, 338, 339, 360, 361, 363, 364], "excluded_lines": []}, "SSHOUTApiClient.send_message": {"executed_lines": [372, 373, 374, 376, 378, 379, 381, 382, 383, 384, 385, 387, 388, 389], "summary": {"covered_lines": 14, "num_statements": 17, "percent_covered": 82.3529411764706, "percent_covered_display": "82", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [391, 392, 393], "excluded_lines": []}, "SSHOUTApiClient.send_global_message": {"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": []}, "SSHOUTApiClient._message_listener": {"executed_lines": [402, 404, 405, 407, 408, 409, 410, 440], "summary": {"covered_lines": 8, "num_statements": 29, "percent_covered": 27.586206896551722, "percent_covered_display": "28", "missing_lines": 21, "excluded_lines": 0}, "missing_lines": [412, 413, 414, 417, 419, 420, 421, 422, 423, 424, 425, 426, 428, 430, 431, 432, 434, 435, 436, 437, 438], "excluded_lines": []}, "SSHOUTApiClient._keep_alive": {"executed_lines": [444, 446, 447, 448, 470], "summary": {"covered_lines": 5, "num_statements": 24, "percent_covered": 20.833333333333332, "percent_covered_display": "21", "missing_lines": 19, "excluded_lines": 0}, "missing_lines": [450, 451, 453, 454, 455, 456, 459, 460, 461, 463, 464, 466, 467, 468, 471, 472, 473, 474, 476], "excluded_lines": []}, "SSHOUTApiClient._process_receive_message": {"executed_lines": [480, 481, 482, 483], "summary": {"covered_lines": 4, "num_statements": 44, "percent_covered": 9.090909090909092, "percent_covered_display": "9", "missing_lines": 40, "excluded_lines": 0}, "missing_lines": [485, 488, 489, 490, 493, 494, 495, 496, 499, 500, 501, 502, 505, 506, 509, 510, 511, 514, 523, 524, 525, 528, 529, 530, 531, 533, 534, 535, 538, 539, 540, 542, 543, 544, 545, 547, 548, 549, 551, 552], "excluded_lines": []}, "SSHOUTApiClient._process_user_state_change": {"executed_lines": [556, 557, 560, 567, 568], "summary": {"covered_lines": 5, "num_statements": 10, "percent_covered": 50.0, "percent_covered_display": "50", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [558, 561, 562, 564, 565], "excluded_lines": []}, "SSHOUTApiClient._process_error": {"executed_lines": [572, 573, 574], "summary": {"covered_lines": 3, "num_statements": 9, "percent_covered": 33.333333333333336, "percent_covered_display": "33", "missing_lines": 6, "excluded_lines": 0}, "missing_lines": [576, 577, 578, 580, 582, 583], "excluded_lines": []}, "SSHOUTApiClient._process_motd": {"executed_lines": [587, 588, 589], "summary": {"covered_lines": 3, "num_statements": 8, "percent_covered": 37.5, "percent_covered_display": "38", "missing_lines": 5, "excluded_lines": 0}, "missing_lines": [591, 592, 594, 596, 597], "excluded_lines": []}, "SSHOUTApiClient._is_claude_mention": {"executed_lines": [601, 603, 604, 606, 607, 608, 610, 615, 616, 618], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [613], "excluded_lines": []}, "SSHOUTApiClient.add_message_callback": {"executed_lines": [622], "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": []}, "SSHOUTApiClient.add_mention_callback": {"executed_lines": [626], "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": []}, "SSHOUTApiClient.get_recent_messages": {"executed_lines": [630], "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": []}, "SSHOUTApiClient.get_context_messages": {"executed_lines": [634, 635, 636, 637, 638, 639, 640], "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": []}, "SSHOUTApiClient.get_connection_status": {"executed_lines": [644, 645, 653], "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": []}, "SSHOUTApiIntegration.__init__": {"executed_lines": [674, 675, 676, 679, 680, 683], "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": []}, "SSHOUTApiIntegration._validate_config": {"executed_lines": [687, 689, 690, 691, 694, 695, 697, 698, 699, 702, 703, 704, 707, 708, 709], "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": []}, "SSHOUTApiIntegration.connect_to_sshout_api": {"executed_lines": [713, 714, 715, 716, 717, 719, 729, 730, 732, 733, 734, 736], "summary": {"covered_lines": 12, "num_statements": 15, "percent_covered": 80.0, "percent_covered_display": "80", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [738, 739, 740], "excluded_lines": []}, "SSHOUTApiIntegration.disconnect_from_sshout_api": {"executed_lines": [744, 745, 746], "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": []}, "SSHOUTApiIntegration._on_message_received": {"executed_lines": [750], "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": []}, "SSHOUTApiIntegration._on_claude_mentioned": {"executed_lines": [755, 756, 759, 762, 768, 769, 777, 783, 786, 789, 790, 796, 797], "summary": {"covered_lines": 13, "num_statements": 21, "percent_covered": 61.904761904761905, "percent_covered_display": "62", "missing_lines": 8, "excluded_lines": 0}, "missing_lines": [770, 771, 772, 773, 774, 791, 792, 794], "excluded_lines": []}, "SSHOUTApiIntegration._clean_response_for_sshout": {"executed_lines": [801, 804, 805, 806, 809, 810, 813, 816, 817, 819], "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": []}, "SSHOUTApiIntegration.get_connection_status": {"executed_lines": [823, 824], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [831], "excluded_lines": []}, "SSHOUTApiIntegration.send_message": {"executed_lines": [838, 839], "summary": {"covered_lines": 2, "num_statements": 3, "percent_covered": 66.66666666666667, "percent_covered_display": "67", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [841], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 78, 115, 179, 208, 249, 261, 283, 313, 369, 395, 400, 442, 478, 554, 570, 585, 599, 620, 624, 628, 632, 642, 670, 671, 673, 685, 711, 742, 748, 753, 799, 821, 836], "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": []}}, "classes": {"SSHOUTPacketType": {"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": []}, "SSHOUTMessageType": {"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": []}, "SSHOUTErrorCode": {"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": []}, "SSHOUTMessage": {"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": []}, "SSHOUTUser": {"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": []}, "SSHOUTApiClient": {"executed_lines": [80, 81, 82, 83, 84, 86, 87, 88, 89, 90, 91, 93, 96, 97, 100, 101, 104, 105, 108, 117, 118, 121, 122, 125, 126, 127, 128, 129, 130, 133, 142, 145, 146, 147, 148, 151, 153, 156, 157, 158, 160, 161, 164, 167, 170, 172, 174, 175, 176, 177, 181, 182, 185, 186, 187, 188, 189, 190, 191, 192, 193, 195, 196, 197, 199, 200, 201, 203, 205, 206, 210, 212, 213, 216, 217, 218, 219, 222, 223, 224, 226, 227, 228, 229, 231, 232, 233, 234, 237, 238, 239, 240, 241, 243, 245, 246, 247, 251, 252, 255, 256, 258, 259, 263, 264, 267, 268, 271, 272, 275, 276, 277, 278, 280, 281, 285, 286, 287, 289, 290, 291, 293, 294, 295, 296, 297, 298, 300, 301, 302, 303, 305, 311, 315, 316, 319, 320, 321, 323, 324, 325, 327, 328, 337, 341, 342, 344, 347, 348, 349, 350, 352, 353, 354, 356, 357, 358, 366, 367, 372, 373, 374, 376, 378, 379, 381, 382, 383, 384, 385, 387, 388, 389, 398, 402, 404, 405, 407, 408, 409, 410, 440, 444, 446, 447, 448, 470, 480, 481, 482, 483, 556, 557, 560, 567, 568, 572, 573, 574, 587, 588, 589, 601, 603, 604, 606, 607, 608, 610, 615, 616, 618, 622, 626, 630, 634, 635, 636, 637, 638, 639, 640, 644, 645, 653], "summary": {"covered_lines": 225, "num_statements": 340, "percent_covered": 66.17647058823529, "percent_covered_display": "66", "missing_lines": 115, "excluded_lines": 0}, "missing_lines": [304, 306, 307, 308, 309, 330, 331, 333, 334, 338, 339, 360, 361, 363, 364, 391, 392, 393, 412, 413, 414, 417, 419, 420, 421, 422, 423, 424, 425, 426, 428, 430, 431, 432, 434, 435, 436, 437, 438, 450, 451, 453, 454, 455, 456, 459, 460, 461, 463, 464, 466, 467, 468, 471, 472, 473, 474, 476, 485, 488, 489, 490, 493, 494, 495, 496, 499, 500, 501, 502, 505, 506, 509, 510, 511, 514, 523, 524, 525, 528, 529, 530, 531, 533, 534, 535, 538, 539, 540, 542, 543, 544, 545, 547, 548, 549, 551, 552, 558, 561, 562, 564, 565, 576, 577, 578, 580, 582, 583, 591, 592, 594, 596, 597, 613], "excluded_lines": []}, "SSHOUTApiIntegration": {"executed_lines": [674, 675, 676, 679, 680, 683, 687, 689, 690, 691, 694, 695, 697, 698, 699, 702, 703, 704, 707, 708, 709, 713, 714, 715, 716, 717, 719, 729, 730, 732, 733, 734, 736, 744, 745, 746, 750, 755, 756, 759, 762, 768, 769, 777, 783, 786, 789, 790, 796, 797, 801, 804, 805, 806, 809, 810, 813, 816, 817, 819, 823, 824, 838, 839], "summary": {"covered_lines": 64, "num_statements": 77, "percent_covered": 83.11688311688312, "percent_covered_display": "83", "missing_lines": 13, "excluded_lines": 0}, "missing_lines": [738, 739, 740, 770, 771, 772, 773, 774, 791, 792, 794, 831, 841], "excluded_lines": []}, "": {"executed_lines": [1, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 21, 22, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 38, 39, 40, 41, 42, 45, 46, 47, 48, 49, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 67, 68, 69, 70, 71, 72, 75, 76, 78, 115, 179, 208, 249, 261, 283, 313, 369, 395, 400, 442, 478, 554, 570, 585, 599, 620, 624, 628, 632, 642, 670, 671, 673, 685, 711, 742, 748, 753, 799, 821, 836], "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": []}}}, "src/claude_agent/sshout/integration.py": {"executed_lines": [1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 28, 29, 31, 33, 34, 35, 36, 38, 39, 40, 42, 45, 46, 49, 50, 53, 65, 67, 68, 71, 72, 75, 76, 77, 78, 79, 80, 83, 92, 93, 95, 96, 99, 101, 103, 104, 105, 106, 108, 110, 111, 113, 114, 115, 117, 118, 119, 121, 123, 124, 126, 128, 129, 130, 132, 134, 135, 136, 138, 139, 140, 142, 144, 146, 148, 150, 152, 154, 156, 157, 158, 159, 160, 161, 162, 164, 166, 168, 170, 171, 172, 174, 175, 187, 188, 189, 190, 194, 196, 201, 202, 204, 205, 209, 210, 211, 212, 213, 216, 217, 218, 220, 221, 222, 224, 227, 231, 232, 234, 236, 238, 239, 242, 243, 245, 247, 249, 251, 254, 265, 266, 267, 268, 270, 272, 273, 275, 277, 279, 280, 286, 288, 289, 293, 299, 301, 302, 303, 305, 307, 310, 312, 315, 316, 317, 319, 324, 325, 327, 330, 331, 333, 334, 335, 336, 339, 340, 343, 345, 347, 349, 350, 351, 354, 355, 357, 358, 359, 362, 363, 364, 367, 368, 369, 371, 373, 374, 375, 376, 378, 387, 388, 390, 391, 392, 394, 396, 397, 398, 400, 402, 403, 404, 406, 408, 410, 412, 413, 416, 419, 425, 426, 427, 428, 429, 430, 433, 439, 442, 445, 446, 447, 448, 450, 452, 453, 455, 458, 459, 460, 463, 464, 467, 470, 471, 473, 475, 477, 478, 484, 498, 500, 501, 503], "summary": {"covered_lines": 248, "num_statements": 263, "percent_covered": 94.29657794676807, "percent_covered_display": "94", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [178, 179, 181, 182, 183, 185, 192, 206, 228, 229, 283, 284, 285, 291, 322], "excluded_lines": [], "functions": {"SSHOUTConnection.__init__": {"executed_lines": [33, 34, 35, 36, 38, 39, 40, 42, 45, 46, 49, 50, 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": []}, "SSHOUTConnection.connect": {"executed_lines": [67, 68, 71, 72, 75, 76, 77, 78, 79, 80, 83, 92, 93, 95, 96, 99, 101, 103, 104, 105, 106], "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": []}, "SSHOUTConnection.disconnect": {"executed_lines": [110, 111, 113, 114, 115, 117, 118, 119, 121, 123, 124], "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": []}, "SSHOUTConnection.send_message": {"executed_lines": [128, 129, 130, 132, 134, 135, 136, 138, 139, 140], "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": []}, "SSHOUTConnection.add_message_callback": {"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": []}, "SSHOUTConnection.add_mention_callback": {"executed_lines": [148], "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": []}, "SSHOUTConnection.get_recent_messages": {"executed_lines": [152], "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": []}, "SSHOUTConnection.get_context_messages": {"executed_lines": [156, 157, 158, 159, 160, 161, 162], "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": []}, "SSHOUTConnection._message_listener": {"executed_lines": [166, 168, 170, 171, 172, 174, 175, 187, 188, 189, 190], "summary": {"covered_lines": 11, "num_statements": 18, "percent_covered": 61.111111111111114, "percent_covered_display": "61", "missing_lines": 7, "excluded_lines": 0}, "missing_lines": [178, 179, 181, 182, 183, 185, 192], "excluded_lines": []}, "SSHOUTConnection._process_line": {"executed_lines": [196, 201, 202, 204, 205, 209, 210, 211, 212, 213, 216, 217, 218, 220, 221, 222, 224, 227, 231, 232], "summary": {"covered_lines": 20, "num_statements": 23, "percent_covered": 86.95652173913044, "percent_covered_display": "87", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [206, 228, 229], "excluded_lines": []}, "SSHOUTConnection._clean_ansi_codes": {"executed_lines": [236, 238, 239, 242, 243, 245], "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": []}, "SSHOUTConnection._parse_message": {"executed_lines": [249, 251, 254, 265, 266, 267, 268, 270, 272, 273, 275, 277, 279, 280, 286, 288, 289, 293, 299, 301, 302, 303], "summary": {"covered_lines": 22, "num_statements": 26, "percent_covered": 84.61538461538461, "percent_covered_display": "85", "missing_lines": 4, "excluded_lines": 0}, "missing_lines": [283, 284, 285, 291], "excluded_lines": []}, "SSHOUTConnection._is_claude_mention": {"executed_lines": [307, 310, 312, 315, 316, 317, 319, 324, 325, 327], "summary": {"covered_lines": 10, "num_statements": 11, "percent_covered": 90.9090909090909, "percent_covered_display": "91", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [322], "excluded_lines": []}, "SSHOUTIntegration.__init__": {"executed_lines": [334, 335, 336, 339, 340, 343], "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": []}, "SSHOUTIntegration._validate_config": {"executed_lines": [347, 349, 350, 351, 354, 355, 357, 358, 359, 362, 363, 364, 367, 368, 369], "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": []}, "SSHOUTIntegration.connect_to_sshout": {"executed_lines": [373, 374, 375, 376, 378, 387, 388, 390, 391, 392, 394, 396, 397, 398], "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": []}, "SSHOUTIntegration.disconnect_from_sshout": {"executed_lines": [402, 403, 404], "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": []}, "SSHOUTIntegration._on_message_received": {"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": []}, "SSHOUTIntegration._on_claude_mentioned": {"executed_lines": [412, 413, 416, 419, 425, 426, 427, 428, 429, 430, 433, 439, 442, 445, 446, 447, 448, 450, 452, 453], "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": []}, "SSHOUTIntegration._clean_response_for_sshout": {"executed_lines": [458, 459, 460, 463, 464, 467, 470, 471, 473], "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": []}, "SSHOUTIntegration.get_connection_status": {"executed_lines": [477, 478, 484], "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": []}, "SSHOUTIntegration.send_message": {"executed_lines": [500, 501, 503], "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, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 28, 29, 31, 65, 108, 126, 142, 146, 150, 154, 164, 194, 234, 247, 305, 330, 331, 333, 345, 371, 400, 406, 410, 455, 475, 498], "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": {"SSHOUTMessage": {"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": []}, "SSHOUTConnection": {"executed_lines": [33, 34, 35, 36, 38, 39, 40, 42, 45, 46, 49, 50, 53, 67, 68, 71, 72, 75, 76, 77, 78, 79, 80, 83, 92, 93, 95, 96, 99, 101, 103, 104, 105, 106, 110, 111, 113, 114, 115, 117, 118, 119, 121, 123, 124, 128, 129, 130, 132, 134, 135, 136, 138, 139, 140, 144, 148, 152, 156, 157, 158, 159, 160, 161, 162, 166, 168, 170, 171, 172, 174, 175, 187, 188, 189, 190, 196, 201, 202, 204, 205, 209, 210, 211, 212, 213, 216, 217, 218, 220, 221, 222, 224, 227, 231, 232, 236, 238, 239, 242, 243, 245, 249, 251, 254, 265, 266, 267, 268, 270, 272, 273, 275, 277, 279, 280, 286, 288, 289, 293, 299, 301, 302, 303, 307, 310, 312, 315, 316, 317, 319, 324, 325, 327], "summary": {"covered_lines": 134, "num_statements": 149, "percent_covered": 89.93288590604027, "percent_covered_display": "90", "missing_lines": 15, "excluded_lines": 0}, "missing_lines": [178, 179, 181, 182, 183, 185, 192, 206, 228, 229, 283, 284, 285, 291, 322], "excluded_lines": []}, "SSHOUTIntegration": {"executed_lines": [334, 335, 336, 339, 340, 343, 347, 349, 350, 351, 354, 355, 357, 358, 359, 362, 363, 364, 367, 368, 369, 373, 374, 375, 376, 378, 387, 388, 390, 391, 392, 394, 396, 397, 398, 402, 403, 404, 408, 412, 413, 416, 419, 425, 426, 427, 428, 429, 430, 433, 439, 442, 445, 446, 447, 448, 450, 452, 453, 458, 459, 460, 463, 464, 467, 470, 471, 473, 477, 478, 484, 500, 501, 503], "summary": {"covered_lines": 74, "num_statements": 74, "percent_covered": 100.0, "percent_covered_display": "100", "missing_lines": 0, "excluded_lines": 0}, "missing_lines": [], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 19, 20, 21, 22, 23, 24, 25, 28, 29, 31, 65, 108, 126, 142, 146, 150, 154, 164, 194, 234, 247, 305, 330, 331, 333, 345, 371, 400, 406, 410, 455, 475, 498], "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": []}}}, "src/claude_agent/utils/config.py": {"executed_lines": [1, 6, 7, 8, 9, 12, 13, 18, 19, 21, 28, 29, 30, 31, 34, 36, 38, 40, 42, 44, 46, 47, 49, 50, 51, 52, 53, 55, 66, 67, 69, 70, 71, 72, 73, 74, 76, 86, 88, 90, 93, 94, 95, 97, 101, 103, 105, 107, 109, 111, 113, 115, 117, 119, 121, 123, 124, 130, 133, 145, 146, 147, 149, 152], "summary": {"covered_lines": 62, "num_statements": 65, "percent_covered": 95.38461538461539, "percent_covered_display": "95", "missing_lines": 3, "excluded_lines": 0}, "missing_lines": [15, 126, 163], "excluded_lines": [], "functions": {"ConfigManager.__init__": {"executed_lines": [28, 29, 30, 31, 34], "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._get_project_root": {"executed_lines": [38, 40], "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": []}, "ConfigManager._load_config": {"executed_lines": [44, 46, 47, 49, 50, 51, 52, 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": []}, "ConfigManager.get": {"executed_lines": [66, 67, 69, 70, 71, 72, 73, 74], "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": []}, "ConfigManager.get_section": {"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": []}, "ConfigManager.get_sshout_config": {"executed_lines": [90, 93, 94, 95, 97, 101], "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": []}, "ConfigManager.get_agent_config": {"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": []}, "ConfigManager.get_cli_config": {"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": []}, "ConfigManager.get_mcp_config": {"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": []}, "ConfigManager.get_logging_config": {"executed_lines": [117], "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": []}, "ConfigManager.reload": {"executed_lines": [121], "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": []}, "ConfigManager.project_root": {"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": [126], "excluded_lines": []}, "get_config_manager": {"executed_lines": [145, 146, 147, 149], "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_config": {"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": [163], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 12, 13, 18, 19, 21, 36, 42, 55, 76, 88, 103, 107, 111, 115, 119, 123, 124, 130, 133, 152], "summary": {"covered_lines": 23, "num_statements": 24, "percent_covered": 95.83333333333333, "percent_covered_display": "96", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [15], "excluded_lines": []}}, "classes": {"ConfigManager": {"executed_lines": [28, 29, 30, 31, 34, 38, 40, 44, 46, 47, 49, 50, 51, 52, 53, 66, 67, 69, 70, 71, 72, 73, 74, 86, 90, 93, 94, 95, 97, 101, 105, 109, 113, 117, 121], "summary": {"covered_lines": 35, "num_statements": 36, "percent_covered": 97.22222222222223, "percent_covered_display": "97", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [126], "excluded_lines": []}, "": {"executed_lines": [1, 6, 7, 8, 9, 12, 13, 18, 19, 21, 36, 42, 55, 76, 88, 103, 107, 111, 115, 119, 123, 124, 130, 133, 145, 146, 147, 149, 152], "summary": {"covered_lines": 27, "num_statements": 29, "percent_covered": 93.10344827586206, "percent_covered_display": "93", "missing_lines": 2, "excluded_lines": 0}, "missing_lines": [15, 163], "excluded_lines": []}}}, "src/claude_agent/utils/helpers.py": {"executed_lines": [1, 6, 7, 8, 9, 10, 11, 14, 15, 17, 18, 19, 21, 23, 24, 26, 28, 29, 31, 32, 33, 34, 35, 36, 38, 40, 41, 42, 43, 44, 46, 48, 57, 59, 61, 63, 64, 66, 68, 69, 72, 73, 75, 76, 78, 79, 80, 81, 83, 85, 86, 87, 90, 91, 93, 96, 97, 99, 100, 102, 103, 106, 108, 109, 111, 112, 114, 115, 116, 118, 119, 121, 122, 124, 126, 127, 129, 132, 133, 134, 136, 137, 139, 142, 143, 145, 146, 148, 149, 150, 152, 153, 155, 157, 158, 159, 161, 162, 164, 166, 168, 170, 172, 173, 175, 176, 178, 179, 181, 182, 184, 187, 188, 190, 191, 193, 195, 196, 198, 199, 200, 201, 202, 203, 205, 206, 208, 209, 210, 211, 212, 214, 215, 217, 218, 219, 220, 221, 222], "summary": {"covered_lines": 133, "num_statements": 134, "percent_covered": 99.25373134328358, "percent_covered_display": "99", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [130], "excluded_lines": [], "functions": {"ConfigManager.__init__": {"executed_lines": [18, 19, 21, 23, 24], "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.load_config": {"executed_lines": [28, 29, 31, 32, 33, 34, 35, 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": []}, "ConfigManager.save_config": {"executed_lines": [40, 41, 42, 43, 44], "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.get_default_config": {"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": []}, "ConfigManager.get": {"executed_lines": [59], "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": []}, "ConfigManager.set": {"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": []}, "ConfigManager.update": {"executed_lines": [68, 69], "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": []}, "Logger.setup_logger": {"executed_lines": [78, 79, 80, 81, 83, 85, 86, 87, 90, 91, 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": []}, "DataValidator.validate_api_key": {"executed_lines": [102, 103, 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": []}, "DataValidator.validate_task_plan": {"executed_lines": [111, 112, 114, 115, 116, 118, 119, 121, 122, 124], "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": []}, "DataValidator.validate_tool_call": {"executed_lines": [129, 132, 133, 134, 136, 137, 139], "summary": {"covered_lines": 7, "num_statements": 8, "percent_covered": 87.5, "percent_covered_display": "88", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [130], "excluded_lines": []}, "TextUtils.truncate_text": {"executed_lines": [148, 149, 150], "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": []}, "TextUtils.clean_json_string": {"executed_lines": [155, 157, 158, 159], "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": []}, "TextUtils.extract_code_blocks": {"executed_lines": [164, 166, 168, 170, 172, 173], "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": []}, "TextUtils.format_error_message": {"executed_lines": [178, 179, 181, 182, 184], "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": []}, "FileUtils.ensure_directory": {"executed_lines": [193], "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": []}, "FileUtils.read_json_file": {"executed_lines": [198, 199, 200, 201, 202, 203], "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": []}, "FileUtils.write_json_file": {"executed_lines": [208, 209, 210, 211, 212], "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": []}, "FileUtils.get_project_root": {"executed_lines": [217, 218, 219, 220, 221, 222], "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, 6, 7, 8, 9, 10, 11, 14, 15, 17, 26, 38, 46, 57, 61, 66, 72, 73, 75, 76, 96, 97, 99, 100, 108, 109, 126, 127, 142, 143, 145, 146, 152, 153, 161, 162, 175, 176, 187, 188, 190, 191, 195, 196, 205, 206, 214, 215], "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": {"ConfigManager": {"executed_lines": [18, 19, 21, 23, 24, 28, 29, 31, 32, 33, 34, 35, 36, 40, 41, 42, 43, 44, 48, 59, 63, 64, 68, 69], "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": []}, "Logger": {"executed_lines": [78, 79, 80, 81, 83, 85, 86, 87, 90, 91, 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": []}, "DataValidator": {"executed_lines": [102, 103, 106, 111, 112, 114, 115, 116, 118, 119, 121, 122, 124, 129, 132, 133, 134, 136, 137, 139], "summary": {"covered_lines": 20, "num_statements": 21, "percent_covered": 95.23809523809524, "percent_covered_display": "95", "missing_lines": 1, "excluded_lines": 0}, "missing_lines": [130], "excluded_lines": []}, "TextUtils": {"executed_lines": [148, 149, 150, 155, 157, 158, 159, 164, 166, 168, 170, 172, 173, 178, 179, 181, 182, 184], "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": []}, "FileUtils": {"executed_lines": [193, 198, 199, 200, 201, 202, 203, 208, 209, 210, 211, 212, 217, 218, 219, 220, 221, 222], "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, 6, 7, 8, 9, 10, 11, 14, 15, 17, 26, 38, 46, 57, 61, 66, 72, 73, 75, 76, 96, 97, 99, 100, 108, 109, 126, 127, 142, 143, 145, 146, 152, 153, 161, 162, 175, 176, 187, 188, 190, 191, 195, 196, 205, 206, 214, 215], "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": []}}}}, "totals": {"covered_lines": 1637, "num_statements": 1812, "percent_covered": 90.34216335540839, "percent_covered_display": "90", "missing_lines": 175, "excluded_lines": 2}} |