Files
ClawdDotNet/src/ClawdDotNet.Desktop/Program.cs
T
RichardandClaude Opus 5.5 cb46289bb6 ClawdDotNet als MCP-Server: durch dieselben Pruefstellen (#713)
Eine fremde Laufzeit oder der eigene Claude Code des Menschen spricht per MCP
mit der Instanz. Der Server bietet genau die Werkzeuge des Agenten hinter dem
Token an; jeder Aufruf laeuft durch die Engine wie ein Aufruf des eigenen
Modells (Rechtetor, Vorpruefung, Werkzeugrechte, Staging, Audit mit Quelle
mcp, Rahmung), und der Aufrufer gilt als Leser fremder Inhalte (#715).

Eigener Socket mcp.sock statt manager.sock: ueber den Instanz-Socket antwortet
die Verwaltung ohne Token, ueber mcp.sock gibt es nur /mcp und nur mit
MCP-Token. Lauf-Tokens nur im Speicher, enden mit dem Lauf; persoenliche Tokens
(hoechstens 90 Tage, widerrufbar, nur als SHA-256) in der Agentenansicht.
Transporte: HTTP auf mcp.sock, Weboberflaeche und Manager (/mcp/{instanz}),
stdio ueber ClawdDotNet --mcp-bridge (Token nur aus Umgebung oder 0600-Datei).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-25 17:28:47 +02:00

44 lines
1.9 KiB
C#

using Avalonia;
namespace ClawdDotNet.Desktop;
internal static class Program
{
/// <summary>
/// Einstiegspunkt der Oberfläche.
///
/// Bewusst schlank: Hier wird nur Avalonia hochgefahren. Alles Fachliche —
/// Einstellungen, Instanzauswahl, Engine, Scanner, Watchdog — baut
/// <see cref="App"/> über die Anwendungsschicht auf, damit derselbe Aufbau später
/// auch ohne Fenster laufen kann.
///
/// Kein <c>[STAThread]</c> mehr: Das war eine COM-Anforderung von WinForms. Avalonia
/// braucht es nicht, und unter Linux hätte es ohnehin keine Bedeutung.
/// </summary>
/// <remarks>
/// Die Verzweigung steht vor <see cref="BuildAvaloniaApp"/> und nicht darin: Mit
/// <c>--headless</c> soll gar kein Fenstersystem angefasst werden — auf einem Server
/// ohne Bildschirmsitzung gäbe es keines (#528, Stufe 2).
/// </remarks>
public static int Main(string[] args)
=> CommandLine.IsMcpBridge(args)
? McpBridgeRun.RunAsync(args).GetAwaiter().GetResult()
: CommandLine.IsHeadless(args)
? HeadlessRun.RunAsync(args).GetAwaiter().GetResult()
: BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
/// <summary>
/// Auch vom Vorschau-Werkzeug des Editors aufgerufen — deshalb öffentlich und
/// getrennt von <see cref="Main"/>.
/// </summary>
public static AppBuilder BuildAvaloniaApp()
=> AppBuilder.Configure<App>()
.UsePlatformDetect()
// Kein WithInterFont mehr: Die Oberfläche bringt seit dem Umbau auf den
// Entwurf Barlow und Barlow Condensed als eigene Ressourcen mit
// (Assets/Fonts, referenziert in Styles/Theme.axaml). Der Grund von damals
// gilt unverändert — ein schlankes Linux-Abbild hat oft gar keine
// Systemschrift —, nur liegt die mitgelieferte Schrift jetzt woanders.
.LogToTrace();
}