disclaw/tasks/DIS-154.md
Nick Tabeling 3070406d0f
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
update task
2026-04-13 10:04:53 +02:00

75 lines
2.7 KiB
Markdown

---
id: DIS-154
status: in-progress
phase: 1.5
priority: p1
labels: [phase:1.5, type:feat, priority:p1]
branch: refinement/discord-rich-features
assignee: developer-agent
started: 2026-04-13
pr: null
merged: 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.