# DevChef

Framework-agnostisches Runtime-Telemetrie-Widget für Webapps. Ein `<script>`-Tag einbinden → sammelt automatisch Dev-Daten und Kunden-Feedback → exponiert alles via MCP an Claude Code. Optional: Odoo-Bridge für automatische Task-Erstellung aus dem Error-Stream.

## Schnellstart

```html
<!-- Telemetrie aktivieren -->
<script src="devchef.js" data-project="my-app" data-endpoint="http://localhost:8099/ingest"></script>

<!-- Mit Kunden-Feedback Addon -->
<script src="devchef.js" data-project="my-app" data-endpoint="http://localhost:8099/ingest" data-feedback="true"></script>
```

## Komponenten

| Datei | Zweck |
|---|---|
| `widget/devchef.js` | Standalone IIFE Widget (~4KB) |
| `widget/devchef-feedback.js` | Kunden-Feedback Addon |
| `relay/devchef-relay.php` | Single-File PHP Relay für Shared Hosting |
| `bridge/devchef_bridge.py` | FastAPI + MCP SSE Server (Port 8099) |
| `bridge/devchef_odoo.py` | Odoo XML-RPC Integration |

## Setup

Siehe [docs/SETUP.md](docs/SETUP.md)

### Autopilot (Host, systemd)

- `bridge/devchef-autopilot.sh` — Path-Unit beobachtet `devchef/autopilot/` (Volume im Compose).
- Nach jedem Cursor-Agent-Lauf ruft `bridge/autopilot_post.py` **`POST /internal/autopilot-finish`** auf (mit `DEVCHEF_API_KEY`; falls leer, liest das Skript den Key aus `docker inspect devchef-bridge`). So werden Odoo-Tasks aus **Autopilot** genommen, auch wenn der Agent **kein DevChef-MCP** hatte.
- Optional: `DEVCHEF_BRIDGE_URL` (Default `http://127.0.0.1:8099`).

### Auto-Triage → Odoo-Kanban

- Umgebungsvariable **`DEVCHEF_AUTO_TRIAGE_STAGE_NAME`** (Default `Auto-Triage`): Spalte im Master-Odoo (`dd_devchef_master`), in der gebündelte Telemetrie-Tasks landen — getrennt von manuell erzeugten Tickets in **To Do** / **Backlog**.

## MCP Tools

Siehe [docs/MCP.md](docs/MCP.md)

## Deployment-Szenarien

| Szenario | Endpoint | Claude Code Zugang |
|---|---|---|
| VPS/Docker | Bridge URL | MCP SSE direkt |
| Shared Hosting | relay.php URL | curl auf Relay |
| Offline | — | Copy JSON → Paste |

## Widget Config

```html
<script src="devchef.js"
  data-project="my-app"
  data-endpoint="https://example.com/devchef-relay.php"
  data-panel="true"
  data-max="500"
  data-feedback="false">
</script>
```

| Attribut | Default | Beschreibung |
|---|---|---|
| `data-project` | `"default"` | Projekt-ID |
| `data-endpoint` | `null` | POST-URL für Bridge/Relay |
| `data-panel` | `"true"` | Floating Dev-Panel |
| `data-max` | `500` | Max Entries im Buffer |
| `data-feedback` | `"false"` | Kunden-Feedback aktivieren |

## Public API

```js
DevChef.entries()      // → Entry[]
DevChef.stats()        // → { total, bySource, byLevel }
DevChef.export()       // → { _devchef, session, entries, stats }
DevChef.exportJSON()   // → JSON string
DevChef.clear()
DevChef.log(msg, meta)
DevChef.warn(msg, meta)
DevChef.error(msg, meta)
DevChef.mark(label, meta)
DevChef.subscribe(fn)  // → unsubscribe function
DevChef.toggle()       // Panel auf/zu
DevChef.flush()        // Sofort an Endpoint senden
DevChef.stop()         // Alle Hooks restoren
```
