disclaw/tasks/DIS-154.md
Nick Tabeling cf5bf7daeb
Some checks failed
CI / build-and-test (ubuntu-latest) (pull_request) Has been cancelled
CI / build-and-test (windows-latest) (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
chore: add Phase 1.5 refinement tasks DIS-151 to DIS-154
DIS-151: Channel-Kategorisierung (aktiv/inaktiv/archiv) + Lifecycle
DIS-152: Gemappte Projektpfade fuer Agents (host:virtual)
DIS-153: Model-Auswahl pro Agent (Select-Menu + --model Flag)
DIS-154: Discord Rich Features (Reactions, Dateien, Input-Limit)

Forgejo Issues #54-#57 angelegt. BOARD.md aktualisiert.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 11:19:28 +02:00

2.7 KiB

id status phase priority labels branch assignee started pr merged
DIS-154 ready 1.5 p1
phase:1.5
type:feat
priority:p1
refinement/discord-rich-features null null null null

DIS-154: Discord Rich Features für Agents (Reactions, Embeds, Dateien)

Ziel

Agents nutzen Discord vollständiger: Status-Reactions, strukturierte Embeds für lange Antworten, Datei-Uploads für Code/Outputs, und Datei-Empfang aus dem Channel. Vorgezogen aus Phase 3 / SF-004.

Kontext

Aktuell senden Agents nur Plaintext. Discord bietet viel mehr: → docs/ideas/future-features.md SF-004 → docs/development-plan.md Phase 3

Scope

1. Status-Reactions (src/router.ts)

  • 👀 sobald Nachricht in Queue eingereiht wird (sofort, nicht blockierend)
  • nach erfolgreicher Antwort
  • bei Fehler (timeout, cli-error)
  • Alle .catch(() => {}) — nie blockierend

2. Typing-Refresh-Intervall

  • Aktuell: 5s Intervall — auf 8s erhöhen (Discord-Timeout ist 10s)
  • Typing endet exakt wenn runAgent fertig ist (kein Overshoot)

3. Lange Antworten als Datei-Attachment (src/discord/send-response.ts)

  • Neue Funktion sendResponse(channel, text, message) ersetzt direktes channel.send()
  • Wenn Text > 4000 Zeichen: als .md-Attachment senden statt mehrerer Chunks
  • Unter 4000 Zeichen: bisheriges Split-Verhalten (splitForDiscord)

4. Eingehende Dateien verarbeiten (src/discord/attachment-inbox.ts)

  • messageCreate-Handler prüft message.attachments
  • Dateien werden in <workspace>/.disclaw-inbox/<timestamp>-<filename> gespeichert
  • Im Prompt-Kontext wird ein Hinweis auf die Datei eingefügt: [Datei verfügbar: .disclaw-inbox/1234-example.py]
  • TTL-Cleanup: Dateien älter als 24h werden beim nächsten Start gelöscht

5. Input-Limit

  • Nachrichten > 4000 Zeichen⚠️-Reaction + kurze Hinweis-Nachricht
  • Agent wird nicht aufgerufen

Definition of Done

  • Reactions 👀 / / werden korrekt gesetzt
  • Typing-Intervall 8s, endet mit Agent-Antwort
  • Antworten > 4000 Zeichen kommen als .md-Attachment
  • Eingehende Dateien landen im .disclaw-inbox/-Verzeichnis
  • Input > 4000 Zeichen → ⚠️ + Hinweis, kein Agent-Aufruf
  • Unit-Tests: send-response, attachment-inbox
  • npm run build && npm test grün

Dateien (erwartet)

  • src/discord/send-response.ts
  • src/discord/attachment-inbox.ts
  • src/router.ts (Reactions, Typing, Input-Limit)
  • tests/unit/send-response.test.ts
  • tests/unit/attachment-inbox.test.ts

Abhängigkeiten

Phase 1 abgeschlossen (splitForDiscord, RunResult).

Hinweis

Reactions, Embeds, Threads und Polls (voller SF-004-Scope) können in Folge-Issues ausgebaut werden. Dieses Issue implementiert den Kern-QoL-Teil.