diff --git a/.codesage/snapshots/index.json b/.codesage/snapshots/index.json deleted file mode 100644 index 37a68c8..0000000 --- a/.codesage/snapshots/index.json +++ /dev/null @@ -1,284 +0,0 @@ -[ - { - "version": "v1", - "timestamp": "2025-11-23T14:09:37.420472", - "path": ".codesage/snapshots/v1.json", - "git_commit": null - }, - { - "version": "v2", - "timestamp": "2025-11-25T04:21:39.559962", - "path": ".codesage/snapshots/v2.json", - "git_commit": null - }, - { - "version": "v3", - "timestamp": "2025-11-25T04:24:00.711615", - "path": ".codesage/snapshots/v3.json", - "git_commit": null - }, - { - "version": "v4", - "timestamp": "2025-11-25T04:28:47.355799", - "path": ".codesage/snapshots/v4.json", - "git_commit": null - }, - { - "version": "v5", - "timestamp": "2025-11-25T04:30:10.619591", - "path": ".codesage/snapshots/v5.json", - "git_commit": null - }, - { - "version": "v6", - "timestamp": "2025-11-25T04:30:11.264485", - "path": ".codesage/snapshots/v6.json", - "git_commit": null - }, - { - "version": "v7", - "timestamp": "2025-11-25T04:32:04.166257", - "path": ".codesage/snapshots/v7.json", - "git_commit": null - }, - { - "version": "v8", - "timestamp": "2025-11-25T04:32:04.781621", - "path": ".codesage/snapshots/v8.json", - "git_commit": null - }, - { - "version": "v9", - "timestamp": "2025-11-25T04:33:37.187839", - "path": ".codesage/snapshots/v9.json", - "git_commit": null - }, - { - "version": "v10", - "timestamp": "2025-11-25T04:33:37.842891", - "path": ".codesage/snapshots/v10.json", - "git_commit": null - }, - { - "version": "v11", - "timestamp": "2025-11-25T04:36:15.082563", - "path": ".codesage/snapshots/v11.json", - "git_commit": null - }, - { - "version": "v12", - "timestamp": "2025-11-25T04:36:15.709401", - "path": ".codesage/snapshots/v12.json", - "git_commit": null - }, - { - "version": "v13", - "timestamp": "2025-11-25T04:38:09.454288", - "path": ".codesage/snapshots/v13.json", - "git_commit": null - }, - { - "version": "v14", - "timestamp": "2025-11-25T04:38:10.093066", - "path": ".codesage/snapshots/v14.json", - "git_commit": null - }, - { - "version": "v15", - "timestamp": "2025-11-25T04:40:15.680065", - "path": ".codesage/snapshots/v15.json", - "git_commit": null - }, - { - "version": "v16", - "timestamp": "2025-11-25T04:40:16.312136", - "path": ".codesage/snapshots/v16.json", - "git_commit": null - }, - { - "version": "v17", - "timestamp": "2025-11-25T04:42:10.275275", - "path": ".codesage/snapshots/v17.json", - "git_commit": null - }, - { - "version": "v18", - "timestamp": "2025-11-25T04:42:10.909066", - "path": ".codesage/snapshots/v18.json", - "git_commit": null - }, - { - "version": "v19", - "timestamp": "2025-11-25T04:43:59.179533", - "path": ".codesage/snapshots/v19.json", - "git_commit": null - }, - { - "version": "v20", - "timestamp": "2025-11-25T04:43:59.847730", - "path": ".codesage/snapshots/v20.json", - "git_commit": null - }, - { - "version": "v21", - "timestamp": "2025-11-25T04:45:44.168145", - "path": ".codesage/snapshots/v21.json", - "git_commit": null - }, - { - "version": "v22", - "timestamp": "2025-11-25T04:45:44.852722", - "path": ".codesage/snapshots/v22.json", - "git_commit": null - }, - { - "version": "v23", - "timestamp": "2025-11-25T04:50:31.825692", - "path": ".codesage/snapshots/v23.json", - "git_commit": null - }, - { - "version": "v24", - "timestamp": "2025-11-25T04:50:32.463125", - "path": ".codesage/snapshots/v24.json", - "git_commit": null - }, - { - "version": "v25", - "timestamp": "2025-11-25T05:01:14.890149", - "path": ".codesage/snapshots/v25.json", - "git_commit": null - }, - { - "version": "v26", - "timestamp": "2025-11-25T05:01:15.461499", - "path": ".codesage/snapshots/v26.json", - "git_commit": null - }, - { - "version": "v27", - "timestamp": "2025-11-25T05:03:21.183017", - "path": ".codesage/snapshots/v27.json", - "git_commit": null - }, - { - "version": "v28", - "timestamp": "2025-11-25T05:03:21.770417", - "path": ".codesage/snapshots/v28.json", - "git_commit": null - }, - { - "version": "v29", - "timestamp": "2025-11-25T05:06:22.051834", - "path": ".codesage/snapshots/v29.json", - "git_commit": null - }, - { - "version": "v30", - "timestamp": "2025-11-25T05:06:22.667723", - "path": ".codesage/snapshots/v30.json", - "git_commit": null - }, - { - "version": "v31", - "timestamp": "2025-11-25T05:09:03.854139", - "path": ".codesage/snapshots/v31.json", - "git_commit": null - }, - { - "version": "v32", - "timestamp": "2025-11-25T05:09:04.450657", - "path": ".codesage/snapshots/v32.json", - "git_commit": null - }, - { - "version": "v33", - "timestamp": "2025-11-25T05:11:15.843910", - "path": ".codesage/snapshots/v33.json", - "git_commit": null - }, - { - "version": "v34", - "timestamp": "2025-11-25T05:11:16.639005", - "path": ".codesage/snapshots/v34.json", - "git_commit": null - }, - { - "version": "v35", - "timestamp": "2025-11-25T05:14:06.613920", - "path": ".codesage/snapshots/v35.json", - "git_commit": null - }, - { - "version": "v36", - "timestamp": "2025-11-25T05:14:07.231591", - "path": ".codesage/snapshots/v36.json", - "git_commit": null - }, - { - "version": "v37", - "timestamp": "2025-11-25T05:27:19.842583", - "path": ".codesage/snapshots/v37.json", - "git_commit": null - }, - { - "version": "v38", - "timestamp": "2025-11-25T05:27:20.538230", - "path": ".codesage/snapshots/v38.json", - "git_commit": null - }, - { - "version": "v39", - "timestamp": "2025-11-25T05:31:10.639024", - "path": ".codesage/snapshots/v39.json", - "git_commit": null - }, - { - "version": "v40", - "timestamp": "2025-11-25T05:31:11.294129", - "path": ".codesage/snapshots/v40.json", - "git_commit": null - }, - { - "version": "v41", - "timestamp": "2025-11-25T05:32:43.758546", - "path": ".codesage/snapshots/v41.json", - "git_commit": null - }, - { - "version": "v42", - "timestamp": "2025-11-25T05:32:44.395369", - "path": ".codesage/snapshots/v42.json", - "git_commit": null - }, - { - "version": "v43", - "timestamp": "2025-11-25T05:38:52.603654", - "path": ".codesage/snapshots/v43.json", - "git_commit": null - }, - { - "version": "v44", - "timestamp": "2025-11-25T05:38:53.420694", - "path": ".codesage/snapshots/v44.json", - "git_commit": null - }, - { - "version": "v45", - "timestamp": "2025-11-25T05:53:15.334756", - "path": ".codesage/snapshots/v45.json", - "git_commit": null - }, - { - "version": "v46", - "timestamp": "2025-11-25T05:53:15.980323", - "path": ".codesage/snapshots/v46.json", - "git_commit": null - }, - { - "version": "v47", - "timestamp": "2025-11-25T06:00:03.637259", - "path": ".codesage/snapshots/v47.json", - "git_commit": null - } -] \ No newline at end of file diff --git a/.codesage/snapshots/v1.json b/.codesage/snapshots/v1.json deleted file mode 100644 index 055b898..0000000 --- a/.codesage/snapshots/v1.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v1","timestamp":"2025-11-23T14:09:37.420472","project_name":"my_project","file_count":2,"total_size":263,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-12/test_e2e_lifecycle0/my_project/script.py","language":"python","metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-12/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"dea0e8f0430295fd5ae50d3f7b9797162f0f3e67b81c2dfe3ec2ac160328605f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v10.json b/.codesage/snapshots/v10.json deleted file mode 100644 index d0da3d6..0000000 --- a/.codesage/snapshots/v10.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v10","timestamp":"2025-11-25T04:33:37.842891","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-5/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v11.json b/.codesage/snapshots/v11.json deleted file mode 100644 index 76aa40b..0000000 --- a/.codesage/snapshots/v11.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v11","timestamp":"2025-11-25T04:36:15.082563","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-6/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-6/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v12.json b/.codesage/snapshots/v12.json deleted file mode 100644 index c35a2bb..0000000 --- a/.codesage/snapshots/v12.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v12","timestamp":"2025-11-25T04:36:15.709401","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-6/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v13.json b/.codesage/snapshots/v13.json deleted file mode 100644 index 2a1af6b..0000000 --- a/.codesage/snapshots/v13.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v13","timestamp":"2025-11-25T04:38:09.454288","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-7/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-7/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v14.json b/.codesage/snapshots/v14.json deleted file mode 100644 index 21d6ffd..0000000 --- a/.codesage/snapshots/v14.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v14","timestamp":"2025-11-25T04:38:10.093066","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-7/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v15.json b/.codesage/snapshots/v15.json deleted file mode 100644 index b01fc76..0000000 --- a/.codesage/snapshots/v15.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v15","timestamp":"2025-11-25T04:40:15.680065","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-8/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-8/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v16.json b/.codesage/snapshots/v16.json deleted file mode 100644 index 99071ab..0000000 --- a/.codesage/snapshots/v16.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v16","timestamp":"2025-11-25T04:40:16.312136","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-8/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v17.json b/.codesage/snapshots/v17.json deleted file mode 100644 index 5d4af05..0000000 --- a/.codesage/snapshots/v17.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v17","timestamp":"2025-11-25T04:42:10.275275","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-9/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-9/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v18.json b/.codesage/snapshots/v18.json deleted file mode 100644 index f710694..0000000 --- a/.codesage/snapshots/v18.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v18","timestamp":"2025-11-25T04:42:10.909066","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-9/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v19.json b/.codesage/snapshots/v19.json deleted file mode 100644 index 296ef21..0000000 --- a/.codesage/snapshots/v19.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v19","timestamp":"2025-11-25T04:43:59.179533","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-10/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-10/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v2.json b/.codesage/snapshots/v2.json deleted file mode 100644 index c3bcb4c..0000000 --- a/.codesage/snapshots/v2.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v2","timestamp":"2025-11-25T04:21:39.559962","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-0/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v20.json b/.codesage/snapshots/v20.json deleted file mode 100644 index 3e5e0cc..0000000 --- a/.codesage/snapshots/v20.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v20","timestamp":"2025-11-25T04:43:59.847730","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-10/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v21.json b/.codesage/snapshots/v21.json deleted file mode 100644 index e9d659a..0000000 --- a/.codesage/snapshots/v21.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v21","timestamp":"2025-11-25T04:45:44.168145","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-11/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-11/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v22.json b/.codesage/snapshots/v22.json deleted file mode 100644 index 1a12657..0000000 --- a/.codesage/snapshots/v22.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v22","timestamp":"2025-11-25T04:45:44.852722","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-11/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v23.json b/.codesage/snapshots/v23.json deleted file mode 100644 index 0e82fc5..0000000 --- a/.codesage/snapshots/v23.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v23","timestamp":"2025-11-25T04:50:31.825692","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-12/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-12/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v24.json b/.codesage/snapshots/v24.json deleted file mode 100644 index cc9b2b0..0000000 --- a/.codesage/snapshots/v24.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v24","timestamp":"2025-11-25T04:50:32.463125","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-12/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v25.json b/.codesage/snapshots/v25.json deleted file mode 100644 index 99b60ce..0000000 --- a/.codesage/snapshots/v25.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v25","timestamp":"2025-11-25T05:01:14.890149","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-12/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-12/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v26.json b/.codesage/snapshots/v26.json deleted file mode 100644 index 4c9e9db..0000000 --- a/.codesage/snapshots/v26.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v26","timestamp":"2025-11-25T05:01:15.461499","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-12/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v27.json b/.codesage/snapshots/v27.json deleted file mode 100644 index ae3c040..0000000 --- a/.codesage/snapshots/v27.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v27","timestamp":"2025-11-25T05:03:21.183017","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-13/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-13/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v28.json b/.codesage/snapshots/v28.json deleted file mode 100644 index 18fac7b..0000000 --- a/.codesage/snapshots/v28.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v28","timestamp":"2025-11-25T05:03:21.770417","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-13/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v29.json b/.codesage/snapshots/v29.json deleted file mode 100644 index d2e8ed7..0000000 --- a/.codesage/snapshots/v29.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v29","timestamp":"2025-11-25T05:06:22.051834","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-14/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-14/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v3.json b/.codesage/snapshots/v3.json deleted file mode 100644 index e77c338..0000000 --- a/.codesage/snapshots/v3.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v3","timestamp":"2025-11-25T04:24:00.711615","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-1/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v30.json b/.codesage/snapshots/v30.json deleted file mode 100644 index d8dea59..0000000 --- a/.codesage/snapshots/v30.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v30","timestamp":"2025-11-25T05:06:22.667723","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-14/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v31.json b/.codesage/snapshots/v31.json deleted file mode 100644 index 97b793f..0000000 --- a/.codesage/snapshots/v31.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v31","timestamp":"2025-11-25T05:09:03.854139","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-15/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-15/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v32.json b/.codesage/snapshots/v32.json deleted file mode 100644 index 21a450a..0000000 --- a/.codesage/snapshots/v32.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v32","timestamp":"2025-11-25T05:09:04.450657","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-15/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v33.json b/.codesage/snapshots/v33.json deleted file mode 100644 index 03a4959..0000000 --- a/.codesage/snapshots/v33.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v33","timestamp":"2025-11-25T05:11:15.843910","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-16/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-16/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v34.json b/.codesage/snapshots/v34.json deleted file mode 100644 index 753eb98..0000000 --- a/.codesage/snapshots/v34.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v34","timestamp":"2025-11-25T05:11:16.639005","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-16/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v35.json b/.codesage/snapshots/v35.json deleted file mode 100644 index 237abfa..0000000 --- a/.codesage/snapshots/v35.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v35","timestamp":"2025-11-25T05:14:06.613920","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-17/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-17/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v36.json b/.codesage/snapshots/v36.json deleted file mode 100644 index aa31057..0000000 --- a/.codesage/snapshots/v36.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v36","timestamp":"2025-11-25T05:14:07.231591","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-17/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v37.json b/.codesage/snapshots/v37.json deleted file mode 100644 index 7a7ec29..0000000 --- a/.codesage/snapshots/v37.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v37","timestamp":"2025-11-25T05:27:19.842583","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-18/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-18/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v38.json b/.codesage/snapshots/v38.json deleted file mode 100644 index 95960a1..0000000 --- a/.codesage/snapshots/v38.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v38","timestamp":"2025-11-25T05:27:20.538230","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-18/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v39.json b/.codesage/snapshots/v39.json deleted file mode 100644 index 3a68854..0000000 --- a/.codesage/snapshots/v39.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v39","timestamp":"2025-11-25T05:31:10.639024","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-19/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-19/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v4.json b/.codesage/snapshots/v4.json deleted file mode 100644 index 35bd748..0000000 --- a/.codesage/snapshots/v4.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v4","timestamp":"2025-11-25T04:28:47.355799","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-2/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v40.json b/.codesage/snapshots/v40.json deleted file mode 100644 index 12b14f5..0000000 --- a/.codesage/snapshots/v40.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v40","timestamp":"2025-11-25T05:31:11.294129","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-19/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v41.json b/.codesage/snapshots/v41.json deleted file mode 100644 index eeec305..0000000 --- a/.codesage/snapshots/v41.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v41","timestamp":"2025-11-25T05:32:43.758546","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-20/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-20/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v42.json b/.codesage/snapshots/v42.json deleted file mode 100644 index 2e090c5..0000000 --- a/.codesage/snapshots/v42.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v42","timestamp":"2025-11-25T05:32:44.395369","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-20/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v43.json b/.codesage/snapshots/v43.json deleted file mode 100644 index c2f5e6f..0000000 --- a/.codesage/snapshots/v43.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v43","timestamp":"2025-11-25T05:38:52.603654","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-21/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-21/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v44.json b/.codesage/snapshots/v44.json deleted file mode 100644 index c5fafbf..0000000 --- a/.codesage/snapshots/v44.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v44","timestamp":"2025-11-25T05:38:53.420694","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-21/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v45.json b/.codesage/snapshots/v45.json deleted file mode 100644 index c34ff87..0000000 --- a/.codesage/snapshots/v45.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v45","timestamp":"2025-11-25T05:53:15.334756","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-22/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-22/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v46.json b/.codesage/snapshots/v46.json deleted file mode 100644 index de45e8a..0000000 --- a/.codesage/snapshots/v46.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v46","timestamp":"2025-11-25T05:53:15.980323","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-22/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v5.json b/.codesage/snapshots/v5.json deleted file mode 100644 index e06dee9..0000000 --- a/.codesage/snapshots/v5.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v5","timestamp":"2025-11-25T04:30:10.619591","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-3/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-3/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v6.json b/.codesage/snapshots/v6.json deleted file mode 100644 index 8a62f2e..0000000 --- a/.codesage/snapshots/v6.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v6","timestamp":"2025-11-25T04:30:11.264485","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-3/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v7.json b/.codesage/snapshots/v7.json deleted file mode 100644 index 8b07ec1..0000000 --- a/.codesage/snapshots/v7.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v7","timestamp":"2025-11-25T04:32:04.166257","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-4/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-4/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v8.json b/.codesage/snapshots/v8.json deleted file mode 100644 index 7ae0482..0000000 --- a/.codesage/snapshots/v8.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v8","timestamp":"2025-11-25T04:32:04.781621","project_name":"project","file_count":1,"total_size":14,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-4/test_legacy_snapshot_command0/project/file.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"96f43d529af3430cb6b0e2c02f6b38ef1a121e8a31d2d09a3ebb716f2f35c9de","lines":1,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":1},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.codesage/snapshots/v9.json b/.codesage/snapshots/v9.json deleted file mode 100644 index cec4731..0000000 --- a/.codesage/snapshots/v9.json +++ /dev/null @@ -1 +0,0 @@ -{"metadata":{"version":"v9","timestamp":"2025-11-25T04:33:37.187839","project_name":"my_project","file_count":2,"total_size":261,"git_commit":null,"tool_version":"0.2.0","config_hash":"not_implemented"},"files":[{"path":"/tmp/pytest-of-jules/pytest-5/test_e2e_lifecycle0/my_project/script.py","language":"python","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"9a257e5c622b07b72881e37ad9e6ff479332827d1a871aab1bdae8a6347729f5","lines":5,"ast_summary":{"function_count":1,"class_count":0,"import_count":0,"comment_lines":1},"complexity_metrics":{"cyclomatic":2},"detected_patterns":[],"analysis_issues":[]},{"path":"/tmp/pytest-of-jules/pytest-5/test_e2e_lifecycle0/my_project/Complex.java","language":"unknown","content":null,"size":null,"metrics":null,"symbols":{},"risk":null,"issues":[],"compression_level":"full","hash":"c0bf98aa7370af235a7c2057ad7bf9c2c5ad277f9b417918c227abb20f004d1f","lines":7,"ast_summary":{"function_count":0,"class_count":0,"import_count":0,"comment_lines":0},"complexity_metrics":{"cyclomatic":0},"detected_patterns":[],"analysis_issues":[]}],"dependencies":null,"risk_summary":null,"issues_summary":null,"llm_stats":null,"languages":[],"language_stats":{},"global_metrics":{},"dependency_graph":{"internal":[],"external":[],"edges":[]},"detected_patterns":[],"issues":[]} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 9924e44..074cb91 100644 --- a/.gitignore +++ b/.gitignore @@ -114,5 +114,14 @@ dmypy.json # Pyre type checker .pyre/ + +# CodeSage files +.codesage/ +test_project/ +report.md +diff_report.md +report.json +report.xml +semantic_digest.yaml /ai/ /.ai/ diff --git a/codesage/audit/logger.py b/codesage/audit/logger.py index d440ad6..bfbfae7 100644 --- a/codesage/audit/logger.py +++ b/codesage/audit/logger.py @@ -1,5 +1,5 @@ import json -from datetime import datetime, UTC +from datetime import datetime, timezone from pathlib import Path from typing import Optional @@ -59,7 +59,7 @@ def _open_new_file(self) -> None: self._log_dir.mkdir(parents=True, exist_ok=True) self._log_dir_created = True - ts = datetime.now(UTC).strftime("%Y%m%d%H%M%S") + ts = datetime.now(timezone.utc).strftime("%Y%m%d%H%M%S") self._current_file = self._log_dir / f"audit_{ts}.log" self._current_file.touch() self._current_size = 0 diff --git a/codesage/cli/commands/analyze.py b/codesage/cli/commands/analyze.py index c966345..cc7db05 100644 --- a/codesage/cli/commands/analyze.py +++ b/codesage/cli/commands/analyze.py @@ -75,13 +75,16 @@ def analyze(path, language, exclude, output, format, no_progress): click.echo(f"Warning: Skipping file {file_path} due to syntax errors.", err=True) continue - functions = parser.extract_functions() imports = parser.extract_imports() + ast_summary = parser.get_ast_summary(source_code) + complexity_metrics = parser.get_complexity_metrics(source_code) file_result = { "file_path": file_path, + "lines": len(source_code.splitlines()), + "complexity": complexity_metrics.cyclomatic, "imports": [i.path for i in imports], - "functions": [f.name for f in functions], + "functions": ast_summary.function_count, } analysis_results.append(file_result) @@ -96,19 +99,21 @@ def analyze(path, language, exclude, output, format, no_progress): with open(output, 'w') as f: for result in analysis_results: f.write(f"## {result['file_path']}\n\n") + f.write(f"- **Lines of code:** {result['lines']}\n") + f.write(f"- **Cyclomatic complexity:** {result['complexity']}\n") + f.write(f"- **Functions:** {result['functions']}\n\n") f.write("### Imports\n\n") for imp in result['imports']: f.write(f"- `{imp}`\n") - f.write("\n### Functions\n\n") - for func in result['functions']: - f.write(f"- `{func}`\n") f.write("\n") click.echo(f"Analysis results saved to {output}") else: for result in analysis_results: click.echo(f"File: {result['file_path']}") - click.echo(f" Imports: {result['imports']}") + click.echo(f" Lines: {result['lines']}") + click.echo(f" Complexity: {result['complexity']}") click.echo(f" Functions: {result['functions']}") + click.echo(f" Imports: {result['imports']}") if __name__ == '__main__': analyze() diff --git a/codesage/cli/commands/diff.py b/codesage/cli/commands/diff.py index e463025..c19c75d 100644 --- a/codesage/cli/commands/diff.py +++ b/codesage/cli/commands/diff.py @@ -39,15 +39,45 @@ def diff(version1, version2, output, format): diff_data = differ.diff(snapshot1, snapshot2) if output: - # TODO: Implement file output - click.echo(f"Diff report will be saved to {output} in {format} format.") - - click.echo(f"Comparing {version1} and {version2}:") - click.echo(f" Added files: {len(diff_data.added_files)}") - click.echo(f" Removed files: {len(diff_data.removed_files)}") - click.echo(f" Modified files: {len(diff_data.modified_files)}") - click.echo(f" Added dependencies: {len(diff_data.dependency_changes.added_edges)}") - click.echo(f" Removed dependencies: {len(diff_data.dependency_changes.removed_edges)}") + if format == 'json': + with open(output, 'w') as f: + f.write(diff_data.model_dump_json(indent=2)) + elif format == 'markdown': + with open(output, 'w') as f: + f.write(f"# Snapshot Diff: {version1} vs {version2}\n\n") + f.write(f"## Summary\n\n") + f.write(f"- **Added files:** {len(diff_data.added_files)}\n") + f.write(f"- **Removed files:** {len(diff_data.removed_files)}\n") + f.write(f"- **Modified files:** {len(diff_data.modified_files)}\n") + f.write(f"- **Added dependencies:** {len(diff_data.dependency_changes.added_edges)}\n") + f.write(f"- **Removed dependencies:** {len(diff_data.dependency_changes.removed_edges)}\n\n") + + if diff_data.added_files: + f.write("## Added Files\n\n") + for file in diff_data.added_files: + f.write(f"- `{file.path}`\n") + f.write("\n") + + if diff_data.removed_files: + f.write("## Removed Files\n\n") + for file in diff_data.removed_files: + f.write(f"- `{file.path}`\n") + f.write("\n") + + if diff_data.modified_files: + f.write("## Modified Files\n\n") + for file in diff_data.modified_files: + f.write(f"- `{file.path}`\n") + f.write("\n") + + click.echo(f"Diff report saved to {output}") + else: + click.echo(f"Comparing {version1} and {version2}:") + click.echo(f" Added files: {len(diff_data.added_files)}") + click.echo(f" Removed files: {len(diff_data.removed_files)}") + click.echo(f" Modified files: {len(diff_data.modified_files)}") + click.echo(f" Added dependencies: {len(diff_data.dependency_changes.added_edges)}") + click.echo(f" Removed dependencies: {len(diff_data.dependency_changes.removed_edges)}") if __name__ == '__main__': diff --git a/codesage/cli/commands/report.py b/codesage/cli/commands/report.py index f486f71..126bf91 100644 --- a/codesage/cli/commands/report.py +++ b/codesage/cli/commands/report.py @@ -14,8 +14,33 @@ from codesage.audit.models import AuditEvent from datetime import datetime +import os +from codesage.snapshot.versioning import SnapshotVersionManager + +# This would be loaded from the config file +# For now, we'll use a default config. +DEFAULT_CONFIG = { + "snapshot": { + "versioning": { + "max_versions": 10, + "retention_days": 30 + } + } +} +SNAPSHOT_DIR = ".codesage/snapshots" + +def find_project_root(path): + current = os.path.abspath(path) + while True: + if ".codesage" in os.listdir(current): + return current + parent = os.path.dirname(current) + if parent == current: + return None + current = parent + @click.command('report', help='Generate reports from a project snapshot.') -@click.option('--input', 'input_path', required=True, type=click.Path(exists=True), help='Path to the snapshot YAML file.') +@click.option('--input', 'input_path', required=True, type=click.Path(exists=True), help='Path to the snapshot YAML file or project directory.') @click.option('--out-json', 'out_json_path', type=click.Path(), help='Path to save the JSON report.') @click.option('--out-md', 'out_md_path', type=click.Path(), help='Path to save the Markdown report.') @click.option('--out-junit', 'out_junit_path', type=click.Path(), help='Path to save the JUnit XML report.') @@ -25,7 +50,23 @@ def report(ctx, input_path: str, out_json_path: Optional[str], out_md_path: Opti audit_logger = ctx.obj.audit_logger project_name = None try: - with open(input_path, 'r') as f: + if os.path.isdir(input_path): + project_root = find_project_root(input_path) + if not project_root: + click.echo("Could not find a .codesage directory in the project.", err=True) + return + snapshot_dir = os.path.join(project_root, SNAPSHOT_DIR) + manager = SnapshotVersionManager(snapshot_dir, DEFAULT_CONFIG['snapshot']) + snapshots = manager.list_snapshots() + if not snapshots: + click.echo("No snapshots found for this project. Please create a snapshot first using 'codesage snapshot create'.", err=True) + return + latest_snapshot = sorted(snapshots, key=lambda s: s['timestamp'], reverse=True)[0] + snapshot_file = latest_snapshot['path'] + else: + snapshot_file = input_path + + with open(snapshot_file, 'r') as f: snapshot_data = yaml.safe_load(f) snapshot = ProjectSnapshot.model_validate(snapshot_data) diff --git a/codesage/snapshot/versioning.py b/codesage/snapshot/versioning.py index 9cce69b..be73309 100644 --- a/codesage/snapshot/versioning.py +++ b/codesage/snapshot/versioning.py @@ -85,10 +85,22 @@ def cleanup_expired_snapshots(self): index = self._load_index() now = datetime.now(timezone.utc) - valid_snapshots = [ - s for s in index - if now - datetime.fromisoformat(s["timestamp"]) <= timedelta(days=self.retention_days) - ] + now = datetime.now(timezone.utc) + valid_snapshots = [] + for s in index: + timestamp_str = s["timestamp"] + try: + # Attempt to parse as timezone-aware datetime + timestamp = datetime.fromisoformat(timestamp_str) + if timestamp.tzinfo is None: + # If naive, assume local timezone and convert to UTC + timestamp = timestamp.astimezone(timezone.utc) + except ValueError: + # Fallback for older/invalid formats + continue + + if now - timestamp <= timedelta(days=self.retention_days): + valid_snapshots.append(s) if len(valid_snapshots) > self.max_versions: valid_snapshots = sorted( diff --git a/tests/cli/test_analyze_command.py b/tests/cli/test_analyze_command.py index 6a1f047..caa7a43 100644 --- a/tests/cli/test_analyze_command.py +++ b/tests/cli/test_analyze_command.py @@ -13,7 +13,7 @@ def test_analyze_single_file(tmp_path): assert result.exit_code == 0 assert "File:" in result.output assert "test.py" in result.output - assert "Functions: ['hello']" in result.output + assert "Functions: 1" in result.output def test_analyze_directory(tmp_path): """Test analyzing a directory."""