Commit Graph
5 Commits
Author SHA1 Message Date
Meleki d6d7b6c04f Windows Shell-Ausführung: Temp-Script statt stdin/ShellArguments, background_execute Tool, konfigurierbarer Timeout
Execute-Tools (execute, background_execute, SessionEndpoint.HandleExec):
- Windows: Befehl in temp .cmd-Datei statt cmd.exe stdin (interaktiver Modus,
  &-Parsing, Mehr?-Prompt) oder ShellArguments (falsches \"-Escaping für cmd.exe)
- Linux: weiterhin stdin an /bin/bash (funktioniert zuverlässig)
- Script-Cleanup in allen Codepfaden (Success, Timeout, Error)

Neues Tool background_execute:
- Startet Prozesse losgelöst ohne Warten, gibt PID zurück
- Temp-Script-Ansatz: funktioniert auch mit mehrzeiligen Befehlen
- Windows: .cmd mit del "%~f0" (Selbstlöschung)
- Linux: .sh mit rm -f (Selbstlöschung)

Konfigurierbarer Execute-Timeout:
- Neues Server-Setting ExecuteTimeout (Default: 180s)
- IConfiguration in ToolService injected
- Tool-Description zeigt aktuellen Timeout dynamisch an

SessionEndpoint.HandleExec (foreground):
- Pipe-Deadlock-Fix: ReadToEndAsync vor WaitForExitAsync
- Gleicher Temp-Script-Ansatz wie ToolService

WorkspaceHelper.ShellArguments() entfernt (keine Aufrufer mehr)
2026-03-09 18:45:26 +01:00
Meleki 57560cbbea refactor: MaxHistory + ReminderInterval in appsettings auslagern
- MaxHistory (Default: 120): Max History-Messages pro API-Request
- ReminderInterval (Default: 30): System-Prompt Reminder alle N Messages (0 = deaktiviert)
- Beide Werte über Server-Settings-UI konfigurierbar
- Hardcoded Werte in ChatService durch konfigurierbare Felder ersetzt
2026-03-09 07:03:47 +01:00
Meleki 49811585c4 fix: ServerSettings liest/schreibt jetzt Config vom ContentRoot statt AppContext.BaseDirectory
Problem: systemd setzt WorkingDirectory=/app/gott (= ContentRoot),
aber AppContext.BaseDirectory zeigt auf /app/gott/publish/.
Dadurch existierten zwei appsettings.Production.json – .NET las die
eine, die Server-Settings-UI schrieb die andere. Config-Änderungen
wie PayloadLogging hatten daher keinen Effekt.

Fix: ProductionConfigPath und FallbackConfigPath werden jetzt von
app.Environment.ContentRootPath abgeleitet statt AppContext.BaseDirectory.
2026-03-09 06:48:33 +01:00
Meleki dc2709b3cd Server-Port konfigurierbar statt hardcoded
- Program.cs: Port aus Config lesen mit Fallback 19000
- appsettings.json: Port: 19000 als Default
- ServerSettingsEndpoint: Port als erste Einstellung (mit Neustart-Hinweis)
2026-03-06 22:37:53 +01:00
Meleki bfd78278ab feat: Servereinstellungen-Seite für Admins
- Neuer Endpoint GET/PUT /api/admin/server-settings
  - Liest appsettings.Production.json (Fallback: appsettings.json → Standardwert)
  - Schreibt immer in appsettings.Production.json
  - Definierte Settings: AnthropicToken, MaxIterations, PayloadLogging, PayloadLoggingGzip, KreaToken, KreaApiKey
- Neue Frontend-Seite 'server-settings' (Admin-only)
  - Dynamisches Formular basierend auf Setting-Definitionen vom Backend
  - Password-Felder mit Eye-Toggle, Checkboxen für Booleans, Number-Inputs
  - Hinweis dass Neustart erforderlich ist
- Dashboard: Neuer Link 'Servereinstellungen' für Admins
- appsettings.Production.json vom Publish ausgeschlossen (CopyToPublishDirectory=Never)
2026-03-06 22:32:33 +01:00