Commit Graph
220 Commits
Author SHA1 Message Date
RichardandClaude Opus 5.5 d635fd0098 Stufe 4b (#764): JS-Bezeichner und CSS-Variablen auf Englisch
- ~580 deutsche Bezeichner (Funktionen, Variablen, Parameter, Eigenschaften
  eigener Objekte, Symbolschluessel): erstelleElement -> makeElement,
  zeigeMeldung -> showNotice, PFADE -> PATHS ... Nur in Code-Bereichen,
  Zeichenketten und Kommentare unberuehrt
- Ausgenommen sind Namen, die mit der C#-Seite geteilt werden (JSON-Felder
  wie zustand, meldung, fehler, instanz) - die folgen mit 4c/4e
- CSS-Variablen (--gedaempft -> --muted ...); var(--akzent, ...) verwies auf
  eine nie definierte Variable und ist durch ihren Rueckfall --divider ersetzt

Geprueft: freie Namen je Datei vor/nach Zuordnung identisch, kein Ziel
kollidiert in derselben Datei, node --check, Klassen/IDs aller 21 Ansichten
unveraendert, Dialoge/Speichern/Sprache/Thema ohne Fehler.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 19:40:21 +02:00
RichardandClaude Opus 5.5 af6d4e3e89 Stufe 4b (#764): CSS-Klassen und Element-IDs auf Englisch
357 deutsche Klassen- und ID-Namen (plakette -> badge, schaltflaeche ->
button, seitenleiste -> sidebar ...) einheitlich in app.css, index.html
und allen Zeichenketten der Ansichten; dazu die Darstellungsarten
(erfolg/gefahr/warnung -> success/danger/warning), aus denen badge-*,
toast-*, tag-*, tone-* entstehen.

Geprueft: 452 CSS-Regeln nach Zuordnung identisch, Deklarationen
unveraendert; in allen 21 Ansichten sind Klassen und IDs zur Laufzeit
genau die zugeordneten alten (Ausgangsmessung vorher, Vergleich danach).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 19:29:22 +02:00
Richard d33cf5c0b3 Merge Stufe 4a (#764): WebUI-Texte ueber Sprachschluessel 2026-10-03 19:21:56 +02:00
RichardandClaude Opus 5.5 58bb1b62f3 Stufe 4a (#764): WebUI-Texte ueber Sprachschluessel
- ~50 feste Texte (deutsch und englisch gemischt) in app.js, api.js, backup,
  chat, info, instances, logs, services, tasks, organisation ueber t()
- Datumsformat folgt der Sprache (war immer de-DE)
- status.isApiReachable gab es nie (Feld heisst apiReachable): Kopfzeile
  und Info-Seite zeigten ohne Guthabentext immer 'offline'
- views/placeholders.js entfernt (seit Stufe 1 ungenutzt)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 19:21:56 +02:00
Richard b184dc261c Merge Stufe 2 (#764): Huelle ClawdDotNet.Shell mit Einmal-Anmeldung 2026-10-03 19:16:08 +02:00
RichardandClaude Opus 5.5 7bf3ba107d Stufe 2 (#764): Stand im Umsetzungsplan
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 19:00:51 +02:00
RichardandClaude Opus 5.5 c9c56ea53b Stufe 2 (#764): Huelle ClawdDotNet.Shell mit eingebettetem Chromium
Avalonia 11.3.17 + CefGlue.Next 152 in eigenem Ordner shell/. Startet den
Manager (ManagerStarter, nach Core gezogen), holt ueber den lokalen Socket
einen Einmal-Link und zeigt die WebUI angemeldet; Taskleistensymbol mit
Zustand. ClawdDotNet ohne Schalter startet die Huelle, sonst den Browser.
publish.py baut sie mit (--no-shell zum Weglassen), unter Linux mit den
Chromium-Ressourcen neben libcef.so. --selftest fuer die Pruefung ohne Blick.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 18:49:04 +02:00
RichardandClaude Opus 5.5 775c4dbc8e Stufe 2 (#764): Einmal-Anmeldung fuer die Huelle ueber den Manager-Socket
Der Manager hoert zusaetzlich auf einem lokalen Socket (0600 bzw. Pipe nur
fuer den eigenen Benutzer). Dort gibt es nur /api/shell/*, ueber TCP gibt
es diese Pfade nicht. Ein Einmal-Code (256 Bit, einmal, hoechstens 60 s)
wird in der WebUI aus dem Fragment gegen das Token getauscht und sofort
aus der Adresse entfernt. Tests: zweimal, zu spaet, ueber TCP - alle
scheitern.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 18:44:58 +02:00
Richard c3927292fd Merge Stufe 3 (#764), #794, #795: Fenster entfernt, Telegram-Anmeldung und Updates in der WebUI 2026-10-02 20:34:58 +02:00
RichardandClaude Opus 5.5 5c8079bbac CLAUDE.md: Deploymentcenter-Anbindung 2.9.3 (#795)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:34:57 +02:00
RichardandClaude Opus 5.5 6d81693041 Stufe 3 (#764): Avalonia-Fenster entfernt
- Views, ViewModels, Controls, Converters, Styles, Services, Desktop-i18n,
  Schriften und App.axaml raus; Avalonia- und Mvvm-Pakete raus
- ClawdDotNet ohne Schalter: Manager starten (unter systemd ueber den Dienst,
  nie doppelt) und WebUI oeffnen (LauncherRun) - bis die Huelle kommt
- Instanzen laufen immer kopflos; instanceWindows wird gelesen, nicht mehr
  ausgewertet; die Kette 'Fenster nach vorn holen' ist entfernt
- Telegram-Anmeldung nur noch ueber die WebUI (tote Dialog-Rueckrufe raus)
- systemd-Vorlagen im Linux-Paket; Oberflaechen-Leitfaden ins Archiv

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:23:12 +02:00
RichardandClaude Opus 5.5 8ec7896417 Unit-Dateien immer mit LF (#795)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:15:26 +02:00
RichardandClaude Opus 5.5 d4b7f34200 #795: Updates aus der WebUI ueber den Instanzmanager
Das Update-Angebot gab es nur im Desktop-Fenster. Der Manager prueft jetzt
selbst und spielt ein: erst alle Instanzen geordnet anhalten, dann
- ohne systemd: update-agent mit --wait-for-pid und --restart,
- unter systemd: clawddotnet-update.service anstossen (Vorlage unter
  deploy/systemd), damit der agent keinen zweiten Manager neben dem
  Dienst startet (DC SETUP_INTEGRATION_GUIDE 4A).
Fehlt die Unit, wird nichts angehalten; scheitert die Uebergabe, kommen
die Instanzen wieder hoch. Anleitung in InstanceSetupGuide Abschnitt 8.

Nebenbei: Sprachpaket wird vor dem Kopf geladen (rohe Schluessel im Kopf).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 20:15:18 +02:00
RichardandClaude Opus 5.5 4e41fc12d7 #794: Telegram-Client-Anmeldung ueber die WebUI
Code und 2FA-Passwort wurden nur im Desktop-Dialog abgefragt; eine Instanz
ohne Fenster liess die Anmeldung aus. Jetzt haelt die Instanz die Frage
(TelegramLoginBroker), die Einstellungsseite beantwortet sie. Die Anmeldung
laeuft im Hintergrund, damit die HTTP-Flaeche, ueber die der Code kommt,
nicht auf ihn wartet. Eine offene Frage verfaellt nach 15 Minuten.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 18:59:37 +02:00
RichardandClaude Opus 5.5 93395c9e01 Stufe 2 (#764): Probelauf CEF-Einbettung dokumentiert
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 16:30:39 +02:00
Richard 9d57260181 Merge Stufe 1 (#764): Luecken der WebUI geschlossen 2026-10-02 14:36:17 +02:00
RichardandClaude Opus 5.5 6c85c9b956 Stufe 1 (#764): Stand und Entscheidungen im Umsetzungsplan
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:36:17 +02:00
RichardandClaude Opus 5.5 d2559c763a Stufe 1 (#764): Werkzeugeinstellungen, Sicherungszeitplan und Import als neue Instanz
- Werkzeugformulare aus den typisierten Einstellungsklassen (L8): Geheimnisse
  nur schreibend, nur geaenderte Schluessel werden ersetzt, Rechte bleiben
- Database.allowedTables las ein JSON-Array als rohen Text und haette es beim
  naechsten Speichern zerlegt
- Automatische Sicherung der Instanz in der Sicherungsansicht (L10)
- Sicherung hochladen und als neue Instanz einspielen (L11): Pfade der alten
  Maschine werden zurueckgesetzt, eine Kopie neben dem Original bekommt eine
  eigene ID, Autostart aus; Upload bis 4 GB
- api.js schickte eine Datei als "{}"; Dialoge schliessen beim Seitenwechsel

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 14:13:37 +02:00
RichardandClaude Opus 5.5 8552755bb6 Stufe 1 (#764): Agent bearbeiten, Lizenz und Einstellungen in der WebUI
- PUT /api/agents/{id} und /texts: Stammdaten, Grenzen, Budget, Identity/Soul/
  Systemprompt (L6/L7); "Jetzt ausfuehren" in der Agentenansicht (L9)
- Lizenzschluessel ueber die Weboberflaeche (L1): erst vom Lizenzserver
  bestaetigt, dann gespeichert; hebt die Sperre ohne Neustart auf
- GET/PUT /api/settings: Instanz- und Anwendungseinstellungen inkl.
  OpenRouter-Key (L3/L4/L5), Geheimnisse nur schreibend
- GET/PUT /api/verwaltung/settings: Deploymentcenter und Update-Kanal des Managers
- Einstellungsseite zeigt echte Werte statt fester Texte
- NonInteractiveLicensePrompt verwies auf --license-set-key, den es nie gab
- Sprachpakete werden bei jedem Lauf geprueft (LanguagePackTests)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:30:20 +02:00
Richard a9ce72abe2 Merge Stufe 0 (#764): Bestandsaufnahme Desktop gegen WebUI 2026-10-02 13:17:45 +02:00
RichardandClaude Opus 5.5 bbaf99f92b Stufe 0 (#764): Entscheidungen festgehalten - eingebetteter Browser, Passphrase als #780, Umzug in Stufe 1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:17:45 +02:00
RichardandClaude Opus 5.5 2f8fe7930f Stufe 0 (#764): Bestandsaufnahme Desktop-Funktionen gegen WebUI
Elf Luecken fuer Stufe 1 (L1-L11). Befunde nebenbei: Die
Wiederherstellungs-Passphrase laesst sich nirgends setzen, und der
Log-Hinweis auf --license-set-key verweist auf einen Schalter, den es
nicht gibt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 13:04:17 +02:00
RichardandClaude Opus 5.5 c03d6d04a7 Version 0.1.18: Trigger mit Auftrag/Feldern, umkehrbares Loeschen, Audit-Archiv, Nachfassen, FileRW-Pfadkorrektur
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:54:58 +02:00
RichardandClaude Opus 5.5 5c25d434e5 Merge: Taskboard fasst nach (#646), Linux-Wackeltests behoben (#722)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:41:49 +02:00
RichardandClaude Opus 5.5 31eac2f7c0 Drain-Test: eine Sekunde Frist statt 300 ms bei 250-ms-Takt (#722)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:11:35 +02:00
RichardandClaude Opus 5.5 7ce5e219cf Nachfassen (#646): TaskFollowUp ueber BuildTaskboard an den Host reichen
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 12:06:53 +02:00
RichardandClaude Opus 5.5 6b44c1ad88 Merge feat/700-audit-archive: Tageswerte und Monatsarchiv statt Loeschen (#700)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:55:22 +02:00
RichardandClaude Opus 5.5 753d633cf3 Linux-Wackeltests: Instanz endet erst auf die Stopp-Bitte, Lesetest schreibt bis genug gelesen ist (#722)
Drei Manager-Tests liessen den Prozess vor der Stopp-Bitte enden; unter Last
sah der Aufsichtstakt das zuerst und meldete Crashed statt Stopped. Die
FakeChannel bekommt OnStopRequest, die Tests beenden darin. Der Drain-Test
bekommt 20 s statt 2 s Luft. AtomicFile schreibt, bis der Leser 20 Blicke
hatte, statt fest 40 Mal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:50:51 +02:00
RichardandClaude Opus 5.5 e42ec100b0 Taskboard fasst nach: stockende, entblockte und wartende Aufgaben erkennen und nachfassen (#646)
Alle 30 Minuten, als Abfrage statt Modelllauf: Agentenaufgabe in Arbeit ohne
Aenderung (Vorgabe 24 h) -> einmal neu gestartet, stockt sie binnen einer
Woche wieder, geht es an die Leitung bzw. den Menschen; blockiert mit
erledigten Blockern -> wieder offen; @human-Aufgabe ueber 48 h -> in einer
Sammelaufgabe fuer den Menschen; in_review ueber 48 h und wiederholtes
LoopLimitExceeded (3 in 7 Tagen) -> Aufgabe an die Leitung. Einmal je Zustand,
hoechstens 10 Nachfassungen je Durchgang, jede im Audit. Befunde liegen
abfragbar in TaskFindings (fuer #680); WebUI-Karte 'Liegengeblieben'.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:49:04 +02:00
RichardandClaude Opus 5.5 095722ae9c Audit und Laufbelege: Tageswerte je Agent und Einheit, Monatsarchiv statt Loeschen (#700)
Nach der Vorgabe vom 2026-09-22 (so wenig loeschen wie moeglich): Laeufe
aelter als hotDays (Vorgabe 180, 0 = alles bleibt) wandern aus AuditLog und
RunReceipts in Archive/audit-JJJJ-MM.db - kopiert und entfernt in einer
Transaktion, Zeilen-IDs bleiben, spaeter dazugekommene Spalten werden im
Archiv ergaenzt. Vorher wird jeder Tag in RunDaily verdichtet (Laeufe,
Fehlschlaege, Schrittgrenze, Tokens, Kosten, Werkzeugaufrufe, Fehler,
Verweigert, Freigaben) mit der Einheit des Agenten; die Tageswerte bleiben.
Nachschlagen eines Laufs findet ihn auch im Archiv. API /usage/days,
/usage/archive; Karte 'Tageswerte' in der Verbrauchsansicht.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:44:50 +02:00
RichardandClaude Opus 5.5 0dd8a761b8 Merge feat/195-reversible-delete: Loeschen ueber den Dateiverlauf umkehrbar (#195)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:39:31 +02:00
RichardandClaude Opus 5.5 5de60c3b21 FileRW: Loeschen ueber den Dateiverlauf umkehrbar, ohne Freigabe; Ordner und Unaufhebbares bleiben beim Menschen (#195)
Der Dateiverlauf (#719) haelt die Vorfassung jeder geloeschten Datei - ein
eigener Papierkorb waere doppelt. delete einer Datei, die der Verlauf aufhebt,
laeuft ohne Freigabe; Ordner nur mit recursive:true (delete_folder, Freigabe);
zu grosse Dateien oder Verlauf aus (delete_unkept, Freigabe); die Wurzel nie.
Neue Aktionen deleted und restore mit voller Pfad-/Endungspruefung.
IAgentTool.StagingAktion bekommt eine Ueberladung mit Kontext.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:28:53 +02:00
RichardandClaude Opus 5.5 2a225129e9 Anleitung fuer den Umbau zur reinen WebUI und Englisch komplett (#764); Desktop eingefroren
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:24:27 +02:00
RichardandClaude Opus 5.5 2725d02a1a Merge feat/725-trigger-fields: Trigger-Felder mit festem Typ, streng/nachsichtig (#725)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 11:06:03 +02:00
RichardandClaude Opus 5.5 ace215eaa2 Trigger: Felder mit festem Typ, streng als Standard, nachsichtig abschaltbar (#725)
Das Token sagt, wer schickt - nicht, wer den Inhalt geschrieben hat. Felder
mit festem Typ (Kennung, Zahl, Ganzzahl, Datum, Datum+Uhrzeit, ja/nein,
Auswahl, Mailadresse) koennen keine Anweisung tragen und gehen als geprueft
an den Agenten, auch als {feld} im Auftrag. Freitext bleibt Fremdinhalt.

Streng (Standard): unpassende Lieferung -> 400 mit Grund, im Audit.
Nachsichtig (fuer Absender, die sich nicht an die Felder halten): nichts
wird abgewiesen, Passendes gilt als geprueft, der Rest bleibt Fremdinhalt;
der Trigger ist dann 'unsicher' und wird so angezeigt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:56:00 +02:00
RichardandClaude Opus 5.5 38bd304ca6 Merge feat/725-trigger-purpose: Trigger mit Auftrag, Adressname und Bearbeiten (#725)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:12:22 +02:00
RichardandClaude Opus 5.5 e2344f4d33 Trigger: Auftrag, Adressname, Prioritaet, Bearbeiten und neues Token (#725)
Rueckmeldung aus der Testinstanz: Nach dem Anlegen war nicht zu erkennen,
wofuer ein Trigger da ist, der Agent erfuhr nur 'ein Ereignis kam', und
bearbeiten ging nicht.

- Slug aus dem Namen in der Adresse: /hooks/<instanz>/trigger/<slug>;
  ein Token an fremder Adresse oeffnet nichts. Die alte Adresse ohne
  Slug bleibt gueltig.
- Auftrag vom Menschen steht vor den gelieferten Daten (die weiter als
  Fremdinhalt gerahmt sind); ohne Auftrag wird der Agent darauf hingewiesen.
- Prioritaet der erzeugten Aufgaben.
- PUT /api/triggers/{id} (Token bleibt), POST /api/triggers/{id}/token.
- WebUI: Formular fuer Anlegen und Bearbeiten, Adresse und Auftrag je Zeile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 10:03:06 +02:00
RichardandClaude Opus 5.5 44613c2b77 Merge fix/filerw-missing-path: FileRW ohne path (Testinstanz 2026-10-02)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:28:03 +02:00
RichardandClaude Opus 5.5 2699b98781 FileRW: Dateiaktion ohne path abweisen, Hostpfad nicht in Fehlermeldungen
Testinstanz 2026-10-02: write mit destinationPath statt path loeste auf die
Wurzel des Arbeitsbereichs auf; die Ausnahme nannte den absoluten Ordner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:18:05 +02:00
RichardandClaude Opus 5.5 0a75afa51b Version 0.1.17: ORG-Block (Stichproben, Abstimmungen, Vorlagen, Zugaenge, Anhaenge, Trigger, MCP, Automatisierung) fuer den Testbetrieb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 20:44:31 +02:00
RichardandClaude Opus 5.5 da1257485b Merge fix/726-n8n-switch: Vorschlaege nur mit n8n (#726)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 20:37:08 +02:00
RichardandClaude Opus 5.5 a17ac2957f Automatisierungsvorschlaege nur mit n8n-Anbindung (#726)
An instance without n8n has no use for workflow proposals. New instance
setting automation.enabled ("this instance works with n8n"), off by default:
- off: automation_find/automation_propose refuse, no candidates are put to
  agents, and the escalation tool does not mention proposals at all;
- the switch sits in the settings card for external MCP servers; the
  approvals view says proposals are off instead of standing empty.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 20:29:19 +02:00
RichardandClaude Opus 5.5 184a507e3d Merge feat/726-automation-proposals: Automatisierungsvorschlaege (#726)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 19:06:30 +02:00
RichardandClaude Opus 5.5 067ff62317 Automatisierungsvorschlaege: Agenten schlagen n8n-Workflows vor, der Mensch importiert von Hand (#726)
- Core/Automation/WorkflowReview: free check of an n8n export - every node
  with its effect and target, code/command/SSH nodes only with a stated
  reason, embedded secrets refused (by name or by look), a short summary of
  what the workflow does.
- AutomationProposals: measured saving from the replaced tasks' receipts
  (28 days), at most 3 open per agent, the same purpose not twice, a
  rejected proposal must be answered; the human gets a task and decides in
  the approvals view. Accepting records it - importing stays a human's step.
- Candidates: recurring tasks whose runs repeat the same calls (>= 75 % of
  >= 8 runs in 14 days) are put to their agent once a month.
- Escalation tool: automation_find, automation_propose.
- Approvals view: proposals with nodes, targets, warnings, saving, JSON
  download, accept/reject.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 18:58:36 +02:00
RichardandClaude Opus 5.5 64e09b82d5 Merge feat/692-pdf: PDF-Text (#692)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 18:52:39 +02:00
RichardandClaude Opus 5.5 347b35fc44 Werkzeugkasten: PDF-Text aus Anhaengen und Dateien (#692)
- DocumentText reads PDF with PdfPig 0.1.16 (managed, Apache-2.0): page by
  page in reading order, at most 300 pages; a PDF without a text layer is
  named as probably scanned; broken and protected files are named.
- Mail read_attachment and FileRW read/read_many take PDF like Word/Excel.
- nuget.config maps exactly "PdfPig" - "UglyToad.PdfPig" is a package of a
  different account and stays out.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 18:45:03 +02:00
RichardandClaude Opus 5.5 cd1d4501e4 Merge feat/197-mcp-client: MCP-Client fuer HTTP-Server (#197)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 18:30:57 +02:00
RichardandClaude Opus 5.5 caf4323012 MCP-Client fuer HTTP-Server: externe Werkzeuge durch dieselben Pruefstellen (#197)
- Core/Mcp/McpClient: Streamable HTTP (MCP 2025-06-18) - initialize, tools/list
  with paging, tools/call; answers as JSON or event stream; session kept and
  opened again when the server forgets it; answers capped at 4 MB.
- McpServerTool: one server is one tool (mcp_<id>); its remote tools are the
  operations, so rights, preflight, staging, lead approvals, votes, audit and
  budget apply. On approval by default unless the human trusts an operation;
  reads foreign content; the server's descriptions are cut short and marked.
- McpConnections: registers, refreshes every 15 minutes, follows changes.
- InstanceConfig.mcpServers with protected headers; /api/mcp-servers;
  settings card "External MCP servers"; tool catalog includes the servers.
- stdio servers are not part of this (sandbox runner, separate step).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 18:15:44 +02:00
RichardandClaude Opus 5.5 44844a41a0 Merge feat/725-inbound-triggers: Eingehende Ausloeser (#725)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:27:09 +02:00
RichardandClaude Opus 5.5 73565eff18 Eingehende Ausloeser: n8n und andere starten Agenten (#725, Stufe 1)
Something outside hands an agent a task - an n8n workflow on a mail, a
schedule, a form, or any system that sends an HTTP request.

- Core/Triggers/InboundTriggers: one token per trigger and agent, kept as a
  hash and shown once; a rate per hour; deliveries up to 64 KB. Each
  delivery becomes a task whose content is framed as foreign content with its
  origin; every delivery, accepted or refused, is in the audit (source
  "trigger").
- POST /hooks/trigger on the instance (MCP socket, own token, no browsers);
  the manager forwards /hooks/{instance}/trigger. /api/triggers to issue,
  list and revoke.
- Agent view: a triggers card with the address and an n8n/curl example.
- Nothing writes back: no right to create or change workflows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:19:05 +02:00