coreandClaude Opus 5 35b3af97a2 chore: make this repo self-contained
Split out of the agent repository into its own project. The two commits
that introduced and reworked the extension are preserved.

The extension could not build on its own: prebuild called
`python ../../tools/generate_tool_defs.py`, and the 31 tool schemas lived
outside the tree — in a directory that was under no version control at all.

- tools/schema/*.json and tools/generate_tool_defs.py now live here. They
  describe browser tools, so they belong with the extension.
- The generator writes TypeScript into this repo and, when the agent repo is
  checked out next to it, the Python tool definitions there as well. The
  presence check looks for agent/tools.py: checking only for the directory
  was useless — it is almost always true, and the generator then wrote into an
  arbitrary neighbouring folder (verified, then fixed).
- Added .gitignore: dist/, node_modules/, and *.token — the MCP bridge token
  is a runtime secret.

Verified: `npm run build` from a clean checkout with and without the agent
repo present; tsc reports no errors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 18:39:24 +02:00

Nexus Browser Pilot

Chrome/Brave-Extension, die den Browser wie ein Mensch bedient: echter Mauszeiger, echte Tastatur, echte Ereignisse. Sie handelt selbstständig und fragt nicht nach — es sei denn, du schaltest den Nachfrage-Modus ein.


Neue Features

Markdown-Output Assistenten-Antworten werden als Markdown gerendert — Code-Blöcke, Listen, Tabellen, Links.
Konversationsverlauf Gespräche werden persistent gespeichert und überleben Panel-Schließen und Browser-Neustart. Über das Dropdown wechselst du zwischen Konversationen.
Memory-Anbindung Anbindung an memory.cnull.net — relevante Erinnerungen werden automatisch als Kontext injiziert, Gespräche können per Klick synchronisiert werden.
Provider-Wahl Neben Anthropic und OpenAI jetzt auch Requesty (OpenAI-kompatibel). Basis-URL und Modell frei wählbar.
Coding-Agent-Anbindung Im Broker-Modus verbindet sich die Extension mit dem lokalen Coding-Agent (CLI/Web UI via agent-web.bat).
System-Prompt Frei editierbarer System-Prompt in den Einstellungen (driveMode 'direct').

Was sie anders macht

Echte Eingaben Alle Klicks und Tastendrücke laufen über chrome.debugger + CDP Input.dispatch* und tragen isTrusted=true. Damit funktionieren Canvas/WebGL, natives Drag & Drop, native <select>-Dropdowns und strenge Enterprise-SPAs.
Sehen und zielen browser_computer arbeitet auf Pixelkoordinaten eines Screenshots — Screenshot ansehen, dann dorthin klicken. Genau wie ein Mensch.
Sichtbarer Mauszeiger Ein Overlay zeigt, wohin der Agent fährt und klickt. Du siehst zu, statt zu raten.
Autonom per Standard Keine Blocklisten, keine Domain-Sperren, keine Rückfragen. riskMode steht auf off.
Zuschaltbare Bestätigung riskMode: 'confirm' fragt nur vor Aktionen mit echter Außenwirkung — Formular absenden, Nachricht senden, Kauf, Löschen, Zahlung. Erkannt wird die Wirkung, nicht der Tool-Name.

Installation in Brave

  1. brave://extensions öffnen
  2. Oben rechts Entwicklermodus einschalten
  3. Entpackte Erweiterung laden → dieses Verzeichnis wählen: C:\Users\TTOMCZA\MB\extension

Das war's — die Installation bleibt bestehen. Nach Codeänderungen genügt der Aktualisieren-Knopf auf derselben Seite.

Brave zeigt beim ersten echten Klick eine Leiste „… wird debuggt". Das ist der Preis für isTrusted=true und lässt sich nur per Startflag --silent-debugger-extension-api oder Enterprise-Policy unterdrücken.

Bauen

cd extension
npm install
npm run build        # erzeugt dist/ (prebuild generiert die Tool-Schemas)
npm run typecheck

Die drei Antriebe

Alle drei münden im selben Engpass runTool() — der Risikomodus gilt also überall.

1. Broker (Standard). Der Agent-Loop läuft in agent/ext_bridge.py und spricht über das Nexus-Gateway mit dem Modell. Starten:

agent-web.bat

Die Extension verbindet sich dann automatisch mit ws://127.0.0.1:8765/ext/ws. Ohne laufenden Broker gibt es keine Verbindung — das ist die häufigste Ursache für „nicht verbunden" im Panel.

2. Eingebauter Loop. In den Einstellungen driveMode auf direct stellen und einen Endpunkt eintragen (Anthropic oder OpenAI-kompatibel). Läuft ohne Python, ohne Broker.

3. MCP-Bridge. Für Claude Code, Claude Desktop oder Cursor:

cd extension/mcp-bridge
node server.js

Der Server druckt beim Start ein Token und die fertige brokerUrl. Details in mcp-bridge/README.md.


Bedienung

Klick auf den Mercedes-Stern in der Symbolleiste öffnet das Side Panel.

  • Autonom (Standard) — handelt ohne Rückfrage
  • Nachfragen — fragt vor Absenden, Kauf, Löschen

Der Moduswechsel wirkt sofort und für alle Antriebe.


Werkzeuge

31 Tools, definiert in tools/schema/*.json. Diese Dateien sind die einzige Quelle: tools/generate_tool_defs.py erzeugt daraus sowohl die Python-Definitionen für den Broker als auch die TypeScript-Typen für die Extension. Ein neues Tool wird dort angelegt, nicht an drei Stellen gepflegt.

Kernstücke:

  • browser_computer — koordinatenbasiert: screenshot, left_click, double_click, left_click_drag, scroll, type, key, hold_key, mouse_move
  • browser_read_page — Barrierefreiheits-Baum mit stabilen ref_ids, type-Attribut und Koordinaten je Element
  • browser_find — Element per natürlicher Beschreibung
  • browser_execute_js — läuft im MAIN world, sieht also window.React, App-State usw.
  • browser_read_network / browser_read_console — echter CDP-Mitschnitt, Konsole per MAIN-world-Hook (nicht durch die CSP der Seite blockierbar)

Aufbau

extension/
├── manifest.json
├── src/
│   ├── background/
│   │   ├── index.ts      Engpass runTool(), Tool-Dispatch, Panel-Relay
│   │   ├── cdp.ts        CDP-Eingabeschicht — Maus, Tastatur, Screenshot, Netzwerk
│   │   ├── computer.ts   koordinatenbasiertes Bedienen
│   │   ├── risk.ts       wirkungsbasierte Risikoerkennung
│   │   ├── agent.ts      eingebauter Agent-Loop
│   │   └── llm.ts        Anthropic-/OpenAI-Adapter
│   ├── content/
│   │   ├── inject.ts        ISOLATED world: Brücke und Seitenfehler
│   │   ├── console-hook.ts  MAIN world: Konsolen-Erfassung
│   │   └── cursor.ts        sichtbarer Mauszeiger
│   ├── sidepanel/        Bedienoberfläche
│   └── shared/           Konfiguration und Protokolltypen
└── mcp-bridge/           MCP-Server für externe Clients

Abnahme

Der Funktionsnachweis läuft gegen ein echtes Brave mit einer Prüfseite, die isTrusted protokolliert. Stand der letzten Ausführung: 35 von 35 Prüfungen bestanden — darunter echter Canvas-Klick mit korrekter Koordinate, echte Tastatureingabe mit keyCode, Submit-Erkennung im Baum, MAIN-world-Zugriff, Konsolen- und Netzwerkmitschnitt sowie der vollständige Bestätigungskreislauf (Dialog → „Ausführen" → ausgeführt, „Abbrechen" → USER_DECLINED).

S
Description
No description provided
Readme
249 KiB
Languages
TypeScript 79.8%
JavaScript 10%
HTML 9.3%
Python 0.9%