Spaces:
Paused
Paused
| import gradio as gr | |
| from phases.phase1_ingest import ingest | |
| from phases.phase2_rules import load_rules | |
| from phases.phase3_static import static_scan | |
| from phases.phase4_runtime import runtime_risks | |
| from ci_guard import run_ci | |
| with gr.Blocks(title="SpecGuard AI Lab", theme=gr.themes.Soft()) as app: | |
| gr.Markdown("## π§ SpecGuard AI Lab") | |
| gr.Markdown("Rulebook β Code Deep Research & Verification System") | |
| # ββ Sidebar βββββββββββββββββββββββββββββββββββββββββ | |
| with gr.Sidebar(): | |
| rulebook_input = gr.Textbox( | |
| label="π Rulebook (paste)", | |
| lines=12, | |
| placeholder="Paste specification or rulebook text here" | |
| ) | |
| code_zip = gr.File(label="π¦ Source Code (ZIP)") | |
| ci_mode = gr.Checkbox( | |
| label="π§ͺ CI Mode (Fail on CRITICAL)", | |
| value=False | |
| ) | |
| run_btn = gr.Button("π Start Deep Research", variant="primary") | |
| # ββ Outputs βββββββββββββββββββββββββββββββββββββββββ | |
| status = gr.Markdown() | |
| output = gr.Markdown() | |
| # ββ Core runner βββββββββββββββββββββββββββββββββββββ | |
| def run_all(rulebook, zipfile, ci): | |
| ingest(rulebook, zipfile) | |
| rules = load_rules() | |
| findings = static_scan(rules) | |
| risks = runtime_risks() | |
| # CI enforcement | |
| if ci: | |
| try: | |
| run_ci() | |
| except SystemExit: | |
| return ( | |
| "β CI FAILED", | |
| "Critical rule violation detected. Fix CRITICAL issues to proceed." | |
| ) | |
| # Build report (THIS is where f-strings belong) | |
| report = f""" | |
| ### β Research Complete | |
| - **Rules Loaded:** {len(rules.get("rules", []))} | |
| - **Static Findings:** {len(findings)} | |
| - **Runtime Risks Identified:** {len(risks)} | |
| π Artifacts saved in `/artifacts/` | |
| """ | |
| return "β Done", report | |
| # ββ Button binding ββββββββββββββββββββββββββββββββββ | |
| run_btn.click( | |
| run_all, | |
| inputs=[rulebook_input, code_zip, ci_mode], | |
| outputs=[status, output] | |
| ) | |
| if __name__ == "__main__": | |
| app.launch() | |