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>
44 lines
1.9 KiB
C#
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();
|
|
}
|