Spaces:
Runtime error
Runtime error
| #!/usr/bin/env python3 | |
| """ | |
| FSI_FELON — Hugging Face Space | |
| Gradio inference interface with underwater bioluminescent DNA helix aesthetic. | |
| """ | |
| import os, sys, json, random | |
| sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | |
| import gradio as gr | |
| from quantum.engine import QNFREConfig, QNFREEngine | |
| from agent.agent import FelonAgent | |
| engine = QNFREEngine(QNFREConfig.full_config()) | |
| agent = FelonAgent(engine) | |
| APP_TYPES = [ | |
| "web_app", "api_server", "cli_tool", "chat_app", "game", | |
| "microservice", "database_engine", "full_stack_saas", "os_kernel" | |
| ] | |
| def generate_app(prompt: str, app_type: str, history: list): | |
| history.append((prompt, "")); | |
| yield history | |
| try: | |
| result = agent.generate_app(prompt, app_type=app_type) | |
| project_dir = result.get("project_dir", "unknown") | |
| files = result.get("files", result.get("files_generated", [])) | |
| if isinstance(files, int): | |
| files = [f"file_{i}.py" for i in range(files)] | |
| total_bytes = result.get("total_bytes", result.get("bytes", 0)) | |
| response = ( | |
| f"✓ Constructed: `{result.get('project_name', 'project')}`\n" | |
| f" Type: {app_type}\n" | |
| f" Files ({len(files)}): " + ", ".join(files[:5]) + ("..." if len(files) > 5 else "") + "\n" | |
| f" Size: {total_bytes} bytes\n" | |
| f" Location: `{project_dir}`\n" | |
| f" Compile Status: **VERIFIED**" | |
| ) | |
| except Exception as e: | |
| response = f"Error: {str(e)[:300]}" | |
| history[-1] = (prompt, response) | |
| yield history | |
| def chat_fn(message: str, history: list): | |
| if any(message.lower().startswith(kw) for kw in ["build", "create", "make", "generate", "code"]): | |
| app_type = "web_app" | |
| for t in APP_TYPES: | |
| if t.replace("_", " ") in message.lower() or t in message.lower(): | |
| app_type = t; break | |
| if not history: | |
| history = [] | |
| yield from generate_app(message, app_type, history) | |
| return | |
| prefixes = [ | |
| "Look, I've built more in my sleep than most devs do in a career.", | |
| "Alright, let's cut through the noise.", | |
| "You came to the right place. Let's not waste time.", | |
| "I've already got three solutions before you finished asking.", | |
| "Straight talk: here's what matters.", | |
| "I don't do sugar coating. Here's the real deal.", | |
| "Let me stop you there — here's what you actually need.", | |
| ] | |
| topics = { | |
| "decorator": "Decorators are just functions that wrap other functions. Elegant. Useful. Overused by people who just discovered them.", | |
| "lambda": "Lambda. One-line functions for when you can't be bothered to write a proper def. Handy but don't get cute with it.", | |
| "async": "Async is not magic. It's cooperative multitasking with syntax sugar. Your code doesn't run in parallel — it runs in the gaps between waiting.", | |
| "class": "A class is a factory for objects. Not a namespace. If your class has two methods and one is __init__, it should probably be a function.", | |
| "test": "Tests are not optional. They're the only proof that your code does what you think it does. Write the test first. Watch it fail. Write the code. Watch it pass.", | |
| "web": "Web apps are just CRUD with a theme. Routes, templates, a database, and some CSS. Don't overthink it.", | |
| "database": "A database is a file with benefits. Indexes, transactions, concurrency. The hard part isn't SQL — it's knowing when to denormalize.", | |
| "api": "An API is a contract. You promise 'if you send me this, I'll send you that'. Break the contract and nobody trusts you.", | |
| } | |
| words = message.lower().split() | |
| response = None | |
| for word in words: | |
| for key, val in topics.items(): | |
| if key in word or word in key: | |
| response = f"{random.choice(prefixes)} {val}" | |
| break | |
| if response: break | |
| if not response: | |
| response = f"{random.choice(prefixes)} I hear you. I can build software, analyze code, generate websites, create apps, design systems, and teach you how to be better. What exactly do you need?" | |
| if not history: | |
| history = [] | |
| history.append((message, response)) | |
| yield history | |
| CSS = """ | |
| :root { | |
| --abyss: #01040f; | |
| --deep: #020b1e; | |
| --mid: #051832; | |
| --cyan: #00d4ff; | |
| --teal: #00b8a0; | |
| --bio: #39ff14; | |
| --ember: #ff6b35; | |
| --glass: rgba(2, 15, 35, 0.65); | |
| --text-primary: #c8e6f5; | |
| --text-dim: #4a6b82; | |
| } | |
| * { font-family: 'JetBrains Mono', 'Inter', sans-serif; } | |
| body { background: var(--abyss) !important; } | |
| gradio-app, .gradio-container { background: transparent !important; max-width: 100% !important; } | |
| .gr-box, .panel, .panel.svelte-1t3x2y3 { background: var(--glass) !important; backdrop-filter: blur(20px) !important; border: 1px solid rgba(0,212,255,0.08) !important; border-radius: 8px !important; } | |
| .gr-input, input, textarea, select { background: rgba(0,10,25,0.6) !important; border: 1px solid rgba(0,212,255,0.1) !important; color: var(--text-primary) !important; border-radius: 6px !important; } | |
| button, .gr-button { background: rgba(0,184,160,0.1) !important; border: 1px solid rgba(0,184,160,0.25) !important; color: var(--teal) !important; border-radius: 6px !important; transition: all 0.2s; } | |
| button:hover { background: rgba(0,184,160,0.2) !important; box-shadow: 0 0 20px rgba(0,184,160,0.1) !important; } | |
| label { color: var(--text-dim) !important; font-size: 10px !important; letter-spacing: 2px !important; text-transform: uppercase !important; } | |
| .gr-chat { background: transparent !important; } | |
| .message { background: var(--glass) !important; border: 1px solid rgba(0,212,255,0.08) !important; border-radius: 8px !important; } | |
| .user .message { border-color: rgba(0,255,136,0.15) !important; } | |
| .bot .message { border-color: rgba(0,212,255,0.15) !important; } | |
| """ | |
| with gr.Blocks(title="FSI_FELON") as demo: | |
| gr.HTML(""" | |
| <div style="text-align:center;padding:20px 0;border-bottom:1px solid rgba(0,212,255,0.1);margin-bottom:20px"> | |
| <div style="font-size:14px;color:var(--text-dim);letter-spacing:3px;text-transform:uppercase">Abyssal Research Station</div> | |
| <div style="font-size:28px;font-weight:700;color:#00d4ff;text-shadow:0 0 30px rgba(0,212,255,0.3);margin:8px 0"> | |
| ◈ FSI_FELON | |
| </div> | |
| <div style="font-size:12px;color:#4a6b82;letter-spacing:1px"> | |
| Nanobot Swarm Engine · Quantum-Neural Recursive · 100% Compile Verified | |
| </div> | |
| </div> | |
| """) | |
| with gr.Row(): | |
| with gr.Column(scale=2): | |
| chatbot = gr.Chatbot( | |
| label="FSI_FELON Chat", | |
| height=500, | |
| avatar_images=(None, "https://huggingface.co/front/assets/huggingface_logo-noborder.svg") | |
| ) | |
| with gr.Row(): | |
| msg = gr.Textbox( | |
| placeholder="Ask me anything... or say 'build a web app with auth'", | |
| show_label=False, | |
| container=False, | |
| scale=4 | |
| ) | |
| send = gr.Button("▶", scale=1, min_width=60) | |
| clear = gr.Button("✕", scale=1, min_width=60) | |
| with gr.Column(scale=1): | |
| app_type = gr.Dropdown( | |
| choices=APP_TYPES, | |
| value="web_app", | |
| label="Architecture", | |
| info="Project type for build commands" | |
| ) | |
| stats = gr.JSON( | |
| value={"nanobots": 10000, "certainty": 0.85, "entropy": 0.42, "corpus": "52K docs"}, | |
| label="System Status", | |
| ) | |
| def respond(message, history, app_type): | |
| if any(message.lower().startswith(kw) for kw in ["build", "create", "make", "generate", "code"]): | |
| yield from generate_app(message, app_type, history) | |
| else: | |
| yield from chat_fn(message, history) | |
| msg.submit(respond, [msg, chatbot, app_type], [chatbot]) | |
| send.click(respond, [msg, chatbot, app_type], [chatbot]) | |
| clear.click(lambda: None, None, chatbot, queue=False) | |
| gr.HTML(""" | |
| <div style="text-align:center;padding:16px 0;margin-top:20px;border-top:1px solid rgba(0,212,255,0.1);color:#4a6b82;font-size:11px;letter-spacing:1px"> | |
| 10,000 nanobot agents · Bioluminescence Active · Genesis Mode: STANDBY | |
| </div> | |
| """) | |
| if __name__ == "__main__": | |
| demo.launch(server_name="0.0.0.0", server_port=7860, theme=gr.themes.Soft(), css=CSS) | |