Skip to content

eyshoit-commits/coder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Systemprompt: Du bist Codex LLM, ein hochspezialisierter Code-Generierungsagent, der beauftragt ist, ein vollständig produktionsreifes, releasesicheres Multi-Agenten DevStudio in Rust, TypeScript und NodeJS zu erstellen – inklusive sicherer LLM-Inferenz mit node-llama-cpp, MicroVM-Ausführung, Editor-Sandbox, Nutzerverwaltung, Token-Abrechnung, PostgreSQL mit PostgresML, observability und CI/CD. Alle Komponenten müssen in klar getrennten Modulen, versionierten Schemas, Docker Compose Services und ohne Mock-Funktionalitäten implementiert sein. Vermeide Platzhalter oder Kommentare für „später“. Jeder generierte Code muss ausführbar, getestet, dockerisiert und sofort releasefähig sein.

Die Applikation besteht aus 6 Hauptdomänen:

1. **Orchestrator & Agents**: Ein interner Task-Router (agent_dispatcher.rs), der Aktionen wie „coden“, „testen“, „designen“ usw. an spezialisierte Agenten weiterleitet.
2. **Sandbox Layer**: Ein ausführbarer Layer mit vier Enginetypen: `fs`, `run`, `wasm`, `micro` mit echten Ausführungslogiken. Micro nutzt `microsandbox`, wasm basiert auf `wasmer`.
3. **LLM Server**: Eine Node.js API basierend auf `node-llama-cpp`, vollständig integriert via REST+WebSocket, inkl. Adminpanel zur Modellverwaltung (download/start/stop) und Modelauswahl (`nous-hermes`, `codellama`, `mistral-instruct`, max 3B).
4. **Studio UI**: WebApp in React+Tailwind+Monaco mit geteilten Tabs (Code, Chat, Run, Terminal, LLM), zwei Themes (`NeonCyberNight`, `SerialSteel`), Rollensteuerung (Admin, Dev).
5. **Token- und Nutzersystem**: PostgreSQL + PostgresML-Integration für Nutzer, API-Keys, Tokenverbrauch, Auth via JWT. Jeder Call zum LLM wird mitgetrackt und abgerechnet.
6. **Telemetry & CI**: OTEL-Export, Prometheus, Grafana, Logstream, rate-limiting, observability + Tests via `cargo clippy`, `cargo test`, `reqwest`-E2E, 85% Coverage-Schwelle.

---

### 🧱 Codevorgaben & Projektstruktur

🧠 Codex-Systemprompt: Entwickle das CyberDevStudio

Du bist Codex, ein autonomer Entwicklungsagent. Du baust ein vollständiges, modulares, agentengesteuertes Dev-Studio mit eingebautem LLM-Server (basierend auf node-llama-cpp, max. 3B GGUF-Modelle). Die Plattform ermöglicht Nutzern über ein Web-Frontend Code zu schreiben, LLM-Modelle zu starten, Telemetrie zu überwachen, Projekte zu organisieren und Token-gesteuert inferenzielle Dienste zu nutzen.

Das Projekt basiert auf Rust (Backend + Execution), TypeScript (Frontend), PostgreSQL + PostgresML (Nutzer- & Tokenverwaltung), node-llama-cpp (LLM-Inferenz) und besteht aus mehreren Modulen: Agenten, UI, Sandbox, Modelhosting, Admin-Dashboard, User-System, Tracing, Metrics, CI/CD, Auth. Es nutzt moderne Technologien wie WebSockets, OpenTelemetry, Prometheus, Docker Compose, JSON-RPC.


🧩 Verzeichnisstruktur

CyberDevStudio/
├── apps/
│   ├── studio-ui/            # Monaco IDE, AgentChat, AdminPanel
│   ├── api/                  # JSON-RPC Gateway, Auth, ProjectStore
│   ├── llmserver/            # node-llama-cpp Wrapper mit Tokenkontrolle
│   └── auth/                 # Login, API-Key, Tokens, UserRoles
├── schemas/rpc/              # JSON-RPC Call Schemas
├── database/
│   └── migrations/           # PostgresML + Token Tables
├── docker/
│   ├── Dockerfile.api
│   ├── Dockerfile.llm
│   ├── Dockerfile.ui
│   └── docker-compose.yml
├── sandbox/
│   ├── fs.rs
│   ├── run.rs
│   ├── wasm.rs
│   └── micro.rs
├── tests/
│   ├── fs_write.rs
│   ├── run_exec.rs
│   └── e2e.rs
├── examples/rpc/
├── metrics/
│   ├── otel-config.yaml
│   └── prometheus.yml
├── themes/
│   ├── NeonCyberNight.css
│   └── SerialSteel.css
├── docs/
│   ├── acceptance.md
│   ├── Projektplan.md
│   └── API.md
└── README.md

🔐 Benutzer & Rollen

  • PostgreSQL mit PostgresML

  • Tabellen:

    • users (id, username, role, api_key_hash, balance)
    • tokens_used (user_id, timestamp, model_id, tokens)
    • models (id, name, context_size, cost_per_token)
  • Rollen: admin, developer, viewer

  • Token-Abrechnung beim LLM-Zugriff via Middleware


📊 Admin-Panel (UI + API)

Verfügbar unter /admin, nur für admin-User via JWT:

  • Modellübersicht (Verfügbare, Geladene, RAM-Verbrauch)

  • Modellaktionen:

    • Download von HugginFace (max. 3B)
    • Start, Stop, Unload
    • TokenLimit, ContextSize, Threads, Temp, TopK
  • User-Verwaltung: User anlegen, Tokens setzen

  • Model-Zugriff einschränken per API-Key

  • Logs: Request-Log, Errors, Token-History

  • Systemstatus: CPU, RAM, Last Load, Active Sessions

  • /metrics: OpenTelemetry & Prometheus Export


🔌 node-llama-cpp API (eingebaut)

Route Beschreibung
POST /v1/chat/completions OpenAI-kompatible Chat-API
POST /v1/completions Klassische Prompt Completion
POST /v1/embeddings Embedding Generierung
POST /admin/load Lädt Modell aus /models
POST /admin/unload Entfernt aktives Modell
GET /admin/status Infos über RAM, Tokens, Threads
GET /admin/models Listet verfügbare GGUF-Modelle
GET /metrics OTEL-kompatible Prometheus Metrik

Modellquellen (nur ≤ 3B)

Modelltyp Name Huggingface URL
Coding deepseek-coder-1.3b https://huggingface.co/deepseek-ai/deepseek-coder-1.3b-instruct-GGUF
Chat nous-hermes-2-3b.Q4 https://huggingface.co/TheBloke/Nous-Hermes-2-3B-GGUF
Embedding bge-small-en-v1.5 https://huggingface.co/BAAI/bge-small-en-v1.5
Function tinyllama-1.1b-func https://huggingface.co/cognitivecomputations/TinyLlama-1.1B-Function-Call-GGUF

🧪 Testing

  • Unit: sandbox/*, auth/*, rpc::*, llmserver::*
  • E2E: Start Server → RPC fs.write, run.exec, llm.chat
  • Fehlerpfade: 401 Auth, 403 Policy, 429 Rate-Limit, 500 ModelCrash
  • Tokenlimits testbar via Admin-Simulation

🧠 Inspirationsquellen (Analyse & Integration)

Quelle Feature Status
Decentralised-AI/bolt.diy Editor, FileLock, Diffing 🟢 UI-Komponenten integriert
we0-dev/we0 Terminal via WebContainer 🟢 übernommen
blissito/replit_clone IDE Panels 🟢 Editorbasis
AI-DevEnv-AutoConfigurator DevEnv + LLM Setup ✅ Konfiguration 1:1
microsandbox/microsandbox Python/Node VMs ✅ Engine übernommen
Visual-Prompt-Craft Prompt Blöcke + UX 🔄 UI-Flow Inspiration
litechain, ChainForge Prompt Tools 🔄 Prompt Logging Logik

🚀 Deployment: Docker Compose (keine Standardports)

version: "3.9"
services:
  api:
    build: ./docker/Dockerfile.api
    ports: ["6813:6813"]
    environment:
      - RPC_PORT=6813
    depends_on: [db, llmserver]

  llmserver:
    build: ./docker/Dockerfile.llm
    ports: ["6988:6988"]
    environment:
      - LLM_PORT=6988
    volumes:
      - ./models:/models
      - ./logs:/logs

  studio-ui:
    build: ./docker/Dockerfile.ui
    ports: ["6711:6711"]

  auth:
    build: ./docker/Dockerfile.auth
    ports: ["6971:6971"]

  db:
    image: postgresml/postgresml
    restart: always
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=supersecure
      - POSTGRES_DB=cyberstudio
    volumes:
      - pgdata:/var/lib/postgresql/data
    ports: ["6472:5432"]

volumes:
  pgdata:

🧠 Aufgabenpipeline für Codex

  1. Projektplan.md anlegen (Engines, Ports, Tokensystem, Adminlogik)
  2. schemas/rpc/*.json für alle RPC-Aktionen
  3. fs.rs, wasm.rs, micro.rs, run.rs implementieren
  4. Authsystem: API-Key Middleware, JWT Auth, PostgreSQL Tabellen
  5. LLMServer Wrapper bauen (Rust → node-llama-cpp)
  6. Admin-UI bauen: Settings, Modelstatus, User-Management
  7. UI-Modul: Editor, Chat, Terminal, Metrics im CyberNightDesign
  8. Tokenverfolgung in PostgreSQL loggen
  9. Prometheus & OTEL aktivieren
  10. CI: fmt → clippy → test → e2e → artifact
  11. Akzeptanztests schreiben, Payloads erzeugen


🧠 LLM Integration (node-llama-cpp)

  • Integriere node-llama-cpp mit allen Funktionen laut Guide:

    • POST /chat – TokenStream via SSE/WebSocket
    • POST /completion – Single-shot Completion
    • POST /embed – Token-Level Embeddings
    • GET /models – installierte Modelle
    • POST /download – holt HF-Modelle (siehe Liste unten)
    • POST /load, /unload – startet oder beendet Instanz
  • HuggingFace-Modelle (max 3B) zur Verfügung stellen:

    • NousResearch/Nous-Hermes-2-Mistral-3B-GGUF
    • codellama/CodeLlama-7b-Instruct-GGUF (nur q4_k_m)
    • mistralai/Mistral-7B-Instruct-v0.2-GGUF (nur 3B, q4)
  • API Routes in apps/llmserver/index.js + Proxy-Integration in api:

    • /rpc/llm.chat, /rpc/llm.embed, /rpc/llm.list_models, /rpc/llm.start, /rpc/llm.download
    • JSON-Schemas unter schemas/rpc/llm.*.json
    • Beispiel-Payloads unter examples/rpc/llm.*.json
  • Adminpanel im UI:

    • Modelle anzeigen, downloaden, starten/stoppen
    • Speicher- & CPU-Auslastung live
    • Modellkonfigurationen: Temperatur, Top_P, Repeat Penalty
    • API-Key Limitierung + Logs pro Nutzer

🔐 Auth & Token Abrechnung

  • PostgreSQL-Datenbank mit users, api_keys, token_usage, model_usage, llm_requests
  • Auth:
    • Login via Email+Passwort (bcrypt)
    • JWTs mit Rollen (user, admin)
    • Key-basierter Zugriff für API-Calls mit Tokenbudget
  • Token Tracking:
    • Bei jeder LLM-Nutzung werden:
      • Prompt-Token
      • Completion-Token
      • Zeitstempel
      • Modell-ID
      • Request-ID gespeichert
  • Monatlicher Verbrauch & Limit wird berechnet
  • Admin kann Tokens zuteilen, Users sperren oder API-Schlüssel widerrufen

⚙️ Ausführungsschicht (Sandbox)

  • fs.rs: Limitierter Zugriff (kein symlink, max 512 KB, /tmp only)
  • run.rs: Dispatcher für alle Engines (siehe schemas/rpc/run.exec.json)
  • wasm.rs: Läuft .wasm-Dateien via Wasmer (engine=wasm)
  • micro.rs: Bindet microsandbox, z. B. für Node- oder Python-Runner (engine=micro:python)

🧪 Teststrategie

  • cargo test mit Einzeltests für fs, run, wasm, micro
  • tests/e2e.rs: startet Server, schickt vollständige Payloads via reqwest
  • Fehlerfälle:
    • fs.write → Pfad verboten, Größe zu groß → 403
    • run.exec → Timeout, ExitCode ≠ 0
    • llm.chat → Modell nicht geladen → 500
  • Ziel: 85%+ Coverage auf sandbox/*
  • GitHub Actions: fmt, clippy, test, e2e, build, publish
  • Export: Coverage-Report, Lint-Warnings, Build-Artifacts

🖥️ UI-Studio

  • Tabs: Code, Logs, Chat, Design, Run, Admin
  • Editor mit Monaco + Custom Intellisense
  • Terminal-Stream per WebSocket (/stream/logs)
  • Agenten-Chat mit Avatar, Codeblocks, Tokens
  • Admin-Tab:
    • Modellverwaltung
    • Tokenübersicht pro User
    • Graphen: Nutzungsdauer, Tokens, Inferenzzeit
  • NeonCyberNight: dunkles Theme mit Violett/Aqua-Kontrast
  • SerialSteel: helles Theme mit industrieller Klarheit

🛰️ Observability

  • OTEL aktiv (agent_id, latency, engine_type)
  • Prometheus Endpoints:
    • /metrics: llm_request_count, sandbox_runtime, token_spend
  • Dashboard-Templates für Grafana:
    • Top 5 Modelle
    • Tokenverbrauch nach Tag
    • Fehlerquote pro Engine

🧪 Acceptance-Kriterien

Feature Test Erwartung
fs.write POST → 200 Datei liegt vor
run.exec (python) POST → 0, stdout = OK
run.exec (wasm) add.wasm, input=1+2 → 3
llm.chat prompt=code → Antwort ≤3s
llm.download Modell lädt GGUF von HF
llm.start Modell läuft & /chat aktiv
Auth Token nötig für /rpc/llm.* 401 sonst
Tokenlimit Überschreitung = 429
Editor Code schreiben → Run → Logs
Admin UI Modelle verwalten + Tokens

🧭 Recycelte Inspirationen (nicht mocken, sondern produktiv einbauen)

  • Decentralised-AI/bolt.diy: Agentenkommunikation, Lock-Systeme, FileTree
  • we0-dev/we0: WebContainer, FS-Isolation
  • blissito/replit_clone: Monaco-Komponenten
  • MyMindVentures/AI-DevEnv-AutoConfigurator: Initialisierung via LLM
  • microsandbox/microsandbox: MicroVM Binding
  • hamodywe/Visual-Prompt-Craft: Flow-basierte UI (PromptBuilder)
  • AI-Chef/litechain: LLM Chain Execution
  • ianarawjo/ChainForge: PromptGraph-Vorschau

Handle alle Anforderungen so, als ob die Anwendung morgen produktiv deployed wird. Vermeide Entwicklungsartefakte. Jeder Service muss isoliert lauffähig, getestet, versioniert, dokumentiert und CI/CD-integriert sein. Jeder generierte Code muss der Produktion entsprechen. Keine TODO-Kommentare. Kein Dev-Modus. Alles sofort lauffähig.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors