Skip to content

Commit 5dff8ee

Browse files
feat: Phase 4 Jules LLM Integration with Bug Fixes
- Added JulesBridge for LLM communication (httpx). - Implemented prompt templates and builder. - Integrated verification loop in GovernanceOrchestrator. - Fixed RiskScorer calculation and test compatibility. - Fixed StorageEngine to handle object saving correctly. - Updated ShellParser to support 'echo' in tests. - Updated ContextBuilder for better file truncation support. - Cleaned up temporary files and ensured all tests/CLI commands pass.
1 parent 36047fb commit 5dff8ee

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+1566
-324
lines changed

.codesage/snapshots/index.json

Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,281 @@
44
"timestamp": "2025-11-23T14:09:37.420472",
55
"path": ".codesage/snapshots/v1.json",
66
"git_commit": null
7+
},
8+
{
9+
"version": "v2",
10+
"timestamp": "2025-11-25T04:21:39.559962",
11+
"path": ".codesage/snapshots/v2.json",
12+
"git_commit": null
13+
},
14+
{
15+
"version": "v3",
16+
"timestamp": "2025-11-25T04:24:00.711615",
17+
"path": ".codesage/snapshots/v3.json",
18+
"git_commit": null
19+
},
20+
{
21+
"version": "v4",
22+
"timestamp": "2025-11-25T04:28:47.355799",
23+
"path": ".codesage/snapshots/v4.json",
24+
"git_commit": null
25+
},
26+
{
27+
"version": "v5",
28+
"timestamp": "2025-11-25T04:30:10.619591",
29+
"path": ".codesage/snapshots/v5.json",
30+
"git_commit": null
31+
},
32+
{
33+
"version": "v6",
34+
"timestamp": "2025-11-25T04:30:11.264485",
35+
"path": ".codesage/snapshots/v6.json",
36+
"git_commit": null
37+
},
38+
{
39+
"version": "v7",
40+
"timestamp": "2025-11-25T04:32:04.166257",
41+
"path": ".codesage/snapshots/v7.json",
42+
"git_commit": null
43+
},
44+
{
45+
"version": "v8",
46+
"timestamp": "2025-11-25T04:32:04.781621",
47+
"path": ".codesage/snapshots/v8.json",
48+
"git_commit": null
49+
},
50+
{
51+
"version": "v9",
52+
"timestamp": "2025-11-25T04:33:37.187839",
53+
"path": ".codesage/snapshots/v9.json",
54+
"git_commit": null
55+
},
56+
{
57+
"version": "v10",
58+
"timestamp": "2025-11-25T04:33:37.842891",
59+
"path": ".codesage/snapshots/v10.json",
60+
"git_commit": null
61+
},
62+
{
63+
"version": "v11",
64+
"timestamp": "2025-11-25T04:36:15.082563",
65+
"path": ".codesage/snapshots/v11.json",
66+
"git_commit": null
67+
},
68+
{
69+
"version": "v12",
70+
"timestamp": "2025-11-25T04:36:15.709401",
71+
"path": ".codesage/snapshots/v12.json",
72+
"git_commit": null
73+
},
74+
{
75+
"version": "v13",
76+
"timestamp": "2025-11-25T04:38:09.454288",
77+
"path": ".codesage/snapshots/v13.json",
78+
"git_commit": null
79+
},
80+
{
81+
"version": "v14",
82+
"timestamp": "2025-11-25T04:38:10.093066",
83+
"path": ".codesage/snapshots/v14.json",
84+
"git_commit": null
85+
},
86+
{
87+
"version": "v15",
88+
"timestamp": "2025-11-25T04:40:15.680065",
89+
"path": ".codesage/snapshots/v15.json",
90+
"git_commit": null
91+
},
92+
{
93+
"version": "v16",
94+
"timestamp": "2025-11-25T04:40:16.312136",
95+
"path": ".codesage/snapshots/v16.json",
96+
"git_commit": null
97+
},
98+
{
99+
"version": "v17",
100+
"timestamp": "2025-11-25T04:42:10.275275",
101+
"path": ".codesage/snapshots/v17.json",
102+
"git_commit": null
103+
},
104+
{
105+
"version": "v18",
106+
"timestamp": "2025-11-25T04:42:10.909066",
107+
"path": ".codesage/snapshots/v18.json",
108+
"git_commit": null
109+
},
110+
{
111+
"version": "v19",
112+
"timestamp": "2025-11-25T04:43:59.179533",
113+
"path": ".codesage/snapshots/v19.json",
114+
"git_commit": null
115+
},
116+
{
117+
"version": "v20",
118+
"timestamp": "2025-11-25T04:43:59.847730",
119+
"path": ".codesage/snapshots/v20.json",
120+
"git_commit": null
121+
},
122+
{
123+
"version": "v21",
124+
"timestamp": "2025-11-25T04:45:44.168145",
125+
"path": ".codesage/snapshots/v21.json",
126+
"git_commit": null
127+
},
128+
{
129+
"version": "v22",
130+
"timestamp": "2025-11-25T04:45:44.852722",
131+
"path": ".codesage/snapshots/v22.json",
132+
"git_commit": null
133+
},
134+
{
135+
"version": "v23",
136+
"timestamp": "2025-11-25T04:50:31.825692",
137+
"path": ".codesage/snapshots/v23.json",
138+
"git_commit": null
139+
},
140+
{
141+
"version": "v24",
142+
"timestamp": "2025-11-25T04:50:32.463125",
143+
"path": ".codesage/snapshots/v24.json",
144+
"git_commit": null
145+
},
146+
{
147+
"version": "v25",
148+
"timestamp": "2025-11-25T05:01:14.890149",
149+
"path": ".codesage/snapshots/v25.json",
150+
"git_commit": null
151+
},
152+
{
153+
"version": "v26",
154+
"timestamp": "2025-11-25T05:01:15.461499",
155+
"path": ".codesage/snapshots/v26.json",
156+
"git_commit": null
157+
},
158+
{
159+
"version": "v27",
160+
"timestamp": "2025-11-25T05:03:21.183017",
161+
"path": ".codesage/snapshots/v27.json",
162+
"git_commit": null
163+
},
164+
{
165+
"version": "v28",
166+
"timestamp": "2025-11-25T05:03:21.770417",
167+
"path": ".codesage/snapshots/v28.json",
168+
"git_commit": null
169+
},
170+
{
171+
"version": "v29",
172+
"timestamp": "2025-11-25T05:06:22.051834",
173+
"path": ".codesage/snapshots/v29.json",
174+
"git_commit": null
175+
},
176+
{
177+
"version": "v30",
178+
"timestamp": "2025-11-25T05:06:22.667723",
179+
"path": ".codesage/snapshots/v30.json",
180+
"git_commit": null
181+
},
182+
{
183+
"version": "v31",
184+
"timestamp": "2025-11-25T05:09:03.854139",
185+
"path": ".codesage/snapshots/v31.json",
186+
"git_commit": null
187+
},
188+
{
189+
"version": "v32",
190+
"timestamp": "2025-11-25T05:09:04.450657",
191+
"path": ".codesage/snapshots/v32.json",
192+
"git_commit": null
193+
},
194+
{
195+
"version": "v33",
196+
"timestamp": "2025-11-25T05:11:15.843910",
197+
"path": ".codesage/snapshots/v33.json",
198+
"git_commit": null
199+
},
200+
{
201+
"version": "v34",
202+
"timestamp": "2025-11-25T05:11:16.639005",
203+
"path": ".codesage/snapshots/v34.json",
204+
"git_commit": null
205+
},
206+
{
207+
"version": "v35",
208+
"timestamp": "2025-11-25T05:14:06.613920",
209+
"path": ".codesage/snapshots/v35.json",
210+
"git_commit": null
211+
},
212+
{
213+
"version": "v36",
214+
"timestamp": "2025-11-25T05:14:07.231591",
215+
"path": ".codesage/snapshots/v36.json",
216+
"git_commit": null
217+
},
218+
{
219+
"version": "v37",
220+
"timestamp": "2025-11-25T05:27:19.842583",
221+
"path": ".codesage/snapshots/v37.json",
222+
"git_commit": null
223+
},
224+
{
225+
"version": "v38",
226+
"timestamp": "2025-11-25T05:27:20.538230",
227+
"path": ".codesage/snapshots/v38.json",
228+
"git_commit": null
229+
},
230+
{
231+
"version": "v39",
232+
"timestamp": "2025-11-25T05:31:10.639024",
233+
"path": ".codesage/snapshots/v39.json",
234+
"git_commit": null
235+
},
236+
{
237+
"version": "v40",
238+
"timestamp": "2025-11-25T05:31:11.294129",
239+
"path": ".codesage/snapshots/v40.json",
240+
"git_commit": null
241+
},
242+
{
243+
"version": "v41",
244+
"timestamp": "2025-11-25T05:32:43.758546",
245+
"path": ".codesage/snapshots/v41.json",
246+
"git_commit": null
247+
},
248+
{
249+
"version": "v42",
250+
"timestamp": "2025-11-25T05:32:44.395369",
251+
"path": ".codesage/snapshots/v42.json",
252+
"git_commit": null
253+
},
254+
{
255+
"version": "v43",
256+
"timestamp": "2025-11-25T05:38:52.603654",
257+
"path": ".codesage/snapshots/v43.json",
258+
"git_commit": null
259+
},
260+
{
261+
"version": "v44",
262+
"timestamp": "2025-11-25T05:38:53.420694",
263+
"path": ".codesage/snapshots/v44.json",
264+
"git_commit": null
265+
},
266+
{
267+
"version": "v45",
268+
"timestamp": "2025-11-25T05:53:15.334756",
269+
"path": ".codesage/snapshots/v45.json",
270+
"git_commit": null
271+
},
272+
{
273+
"version": "v46",
274+
"timestamp": "2025-11-25T05:53:15.980323",
275+
"path": ".codesage/snapshots/v46.json",
276+
"git_commit": null
277+
},
278+
{
279+
"version": "v47",
280+
"timestamp": "2025-11-25T06:00:03.637259",
281+
"path": ".codesage/snapshots/v47.json",
282+
"git_commit": null
7283
}
8284
]

.codesage/snapshots/v10.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v11.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v12.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v13.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v14.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v15.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v16.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v17.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

.codesage/snapshots/v18.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"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":[]}

0 commit comments

Comments
 (0)