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>
3.1 KiB
3.1 KiB
| id | status | phase | priority | labels | branch | assignee | started | pr | merged | |||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DIS-151 | ready | 1.5 | p1 |
|
refinement/channel-categories | null | null | null | null |
DIS-151: Channel-Kategorisierung (aktiv / inaktiv / archiv) + Lifecycle-Management
Ziel
Discord-Channels werden beim Start von DisClaw automatisch in Kategorien eingeordnet. Verwaiste Workspaces und Channels werden aufgeräumt. Live-Events halten den Zustand aktuell.
Kontext
Beim Betrieb entstehen Inkonsistenzen: Channels ohne Workspace, Workspaces ohne Channel,
oder Agents die aus der DB entfernt wurden aber noch einen Workspace haben.
→ docs/ideas/known-issues.md KI-002, KI-002.1
Scope
Kategorien (werden beim ersten Start automatisch angelegt falls nicht vorhanden)
🟢 Aktive Agents— Channel ist in DB, Workspace existiert unter~/.disclaw/workspaces/🔴 Inaktive Agents— Workspace existiert, aber kein Channel in Discord (oder Channel nicht in DB)🗄️ Archiv— Kein DB-Eintrag, kein Workspace — Channel existiert aber ist unbekannt
Startup-Reconciliation (src/lifecycle/reconcile.ts)
Beim Start einmalig ausführen, nach DB-Init und Bot-Login:
- Alle Channels des Servers scannen — welche sind in welcher Kategorie?
- DB-Einträge abgleichen — für jeden Workspace-Eintrag in DB prüfen ob Channel noch existiert
- Workspace-Verzeichnisse scannen — alle Verzeichnisse unter
workspaces_rootmitagent.yaml - Einordnung:
- DB-Eintrag + Workspace vorhanden + Channel existiert → aktiv (Kategorie + Channel-Name)
- Workspace vorhanden, aber kein DB-Eintrag / kein Channel → inaktiv (Kategorie verschieben oder Channel neu anlegen)
- Weder DB noch Workspace, aber Channel existiert → archiv (Channel in Archiv-Kategorie verschieben)
- Workspace existiert, kein Channel in aktiv/inaktiv/archiv → Workspace-Verzeichnis löschen (Cleanup)
Live-Event: channelDelete
- Wenn ein Agent-Channel gelöscht wird: Workspace-Verzeichnis (
~/.disclaw/workspaces/<name>) ebenfalls löschen, DB-Eintrag entfernen - Wenn Management-Channel gelöscht wird: automatisch neu anlegen (KI-002.1)
- Kategorie-Channels (aktiv/inaktiv/archiv) werden bei Löschung neu angelegt
src/bot.ts / src/index.ts
reconcileChannels(guild, db, config)nach Bot-Ready aufrufenchannelDelete-Event-Handler registrieren
Definition of Done
- Kategorien werden beim Start automatisch angelegt (falls nicht vorhanden)
- Channels werden korrekt eingeordnet (aktiv/inaktiv/archiv)
- Workspace-Verzeichnisse ohne Channel werden beim Start gelöscht
channelDelete-Event: Workspace + DB-Eintrag werden entfernt- Management-Channel-Löschung: wird neu angelegt
- Unit-Test
tests/unit/reconcile.test.ts: Mock-Guild, Mock-DB — alle Reconcile-Cases npm run build && npm testgrün
Dateien (erwartet)
src/lifecycle/reconcile.tssrc/bot.tssrc/index.tstests/unit/reconcile.test.ts
Abhängigkeiten
Phase 0 + Phase 1 abgeschlossen.
Spec
→ docs/ideas/known-issues.md KI-002, KI-002.1