import torch import gradio as gr from transformers import AutoModelForCausalLM, AutoTokenizer import spaces model_id = "Willie999/trapSTAR-gemma4" print("Initializing tokenizer and loading base configurations...") tokenizer = AutoTokenizer.from_pretrained(model_id) model = AutoModelForCausalLM.from_pretrained( model_id, device_map="auto", torch_dtype=torch.bfloat16 if torch.cuda.is_bf16_supported() else torch.float16, ) model.eval() # Dynamic matrix placeholder states to drive the processing animations AWAITING_STATE = "*Awaiting input code compilation... Press 'Run Autonomous Security Audit' to begin analysis.*" LOADING_STATE = """

🛰️ SYSTEM: INFERENCE AGENT ACTIVE — SCANNING IN PROCESS...

""" @spaces.GPU(duration=90) def analyze_and_patch(source_code): if not source_code.strip(): return "### ⚠️ System Warning\nPlease input a valid source code routine to evaluate." messages = [ { "role": "system", "content": "You are Trap Star, an autonomous defensive security auditing agent. Analyze the provided code snippet, identify the vulnerability type, and write out structural recommendations." }, { "role": "user", "content": f"Review this function block for potential vulnerabilities:\n\n```\n{source_code}\n```" } ] try: prompt_text = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False) tokenized_inputs = tokenizer(prompt_text, return_tensors="pt") input_ids = tokenized_inputs.input_ids.to(model.device) attention_mask = tokenized_inputs.attention_mask.to(model.device) with torch.no_grad(): generated_ids = model.generate( input_ids=input_ids, attention_mask=attention_mask, max_new_tokens=1536, temperature=0.2, do_sample=True, pad_token_id=tokenizer.eos_token_id ) response_tokens = generated_ids[0][input_ids.shape[-1]:] response_text = tokenizer.decode(response_tokens, skip_special_tokens=True) return response_text except Exception as e: return f"### ❌ Operational Failure\nAn unexpected error occurred during dynamic GPU allocation:\n`{str(e)}`" # Custom CSS for a professional, distraction-free DevSecOps interface custom_css = """ footer {visibility: hidden !important} .gradio-container {background-color: #070a0e !important;} /* Custom Textbox Layout styling */ .terminal-input textarea { font-family: 'Fira Code', 'Courier New', monospace !important; background-color: #0d1117 !important; color: #c9d1d9 !important; border: 1px solid #30363d !important; } /* Custom Live Response Animations */ .matrix-loader { padding: 20px; background: #0d1117; border: 1px solid #238636; border-radius: 6px; position: relative; overflow: hidden; } .pulse-bar { height: 3px; width: 100%; background: linear-gradient(90deg, transparent, #238636, transparent); position: absolute; top: 0; left: -100%; animation: scan 2s linear infinite; } .scan-text { color: #2da44e !important; font-family: 'Fira Code', monospace; font-size: 14px; margin: 0; animation: pulse 1.5s ease-in-out infinite; } @keyframes scan { 0% { left: -100%; } 100% { left: 100%; } } @keyframes pulse { 0%, 100% { opacity: 0.6; } 50% { opacity: 1; } } """ with gr.Blocks(title="trapSTAR Engine", css=custom_css) as demo: with gr.Row(): gr.Markdown( """ # 🛡️ trapSTAR-gemma4 Core Engine ### *Autonomous Defensive Code Auditing & Patch Remediation Dashboard* --- """ ) with gr.Row(): with gr.Column(scale=1): gr.Markdown("#### 💻 Target Source Code Extraction") code_input = gr.Textbox( label="Source Code Input", placeholder="Paste your source file or target code routine block here...", lines=16, max_lines=25, elem_classes=["terminal-input"] ) submit_btn = gr.Button("⚡ Run Autonomous Security Audit", variant="primary") with gr.Column(scale=1): gr.Markdown("#### 🛰️ Trap Star Assessment Dashboard") # State panels that swap cleanly to display active CSS animations with gr.Group(): # HTML animation panel (Visible strictly while loading) loader_panel = gr.HTML(visible=False) # Production markdown panel (Visible when output is ready) patch_output = gr.Markdown(value=AWAITING_STATE, visible=True) gr.Examples( examples=[ ["void process_str(char *str) {\n char buffer[16];\n strcpy(buffer, str);\n}"], ["import sqlite3\n\ndef get_user(user_id):\n conn = sqlite3.connect('users.db')\n cursor = conn.cursor()\n cursor.execute(f'SELECT * FROM accounts WHERE id = {user_id}')\n return cursor.fetchall()"] ], inputs=code_input, label="Quick Test Blueprints" ) # 3. Clean manual API Documentation panel overlay for wide audiences with gr.Accordion("🔌 System Integration API Endpoints", open=False): gr.Markdown( """ ### External REST API Access Because this application runs behind a ZeroGPU cluster proxy, standard client integrations must hit the API endpoint routing channel explicitly. ```python from gradio_client import Client # Connect to your public deployment endpoint client = Client("Willie999/trapSTAR-interface") result = client.predict( source_code="YOUR_RAW_CODE_STRING_HERE", api_name="/audit" ) print(result) ``` """ ) # UI Event Chain handling animations and switching component visibilities def pre_load_ui(): # Instantly hides static text block and showcases running CSS animations return gr.update(value=LOADING_STATE, visible=True), gr.update(visible=False) def post_load_ui(final_output): # Tears down the animation elements and renders raw markdown data cleanly return gr.update(visible=False), gr.update(value=final_output, visible=True) submit_btn.click( fn=pre_load_ui, outputs=[loader_panel, patch_output], queue=False ).then( fn=analyze_and_patch, inputs=code_input, outputs=patch_output, api_name="audit" ).then( fn=post_load_ui, inputs=patch_output, outputs=[loader_panel, patch_output], queue=False ) if __name__ == "__main__": demo.launch(theme=gr.themes.Monochrome())