disclaw/tasks/DIS-151.md
dev 3208364586
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
tasks/DIS-151.md aktualisiert
2026-04-10 09:24:29 +00:00

3 KiB

id status phase priority labels branch assignee started pr merged
DIS-151 ready 1.5 p1
phase:1.5
type:feat
priority: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 Channel nicht in DB
  • 🗄️ Archiv — Kein DB-Eintrag, kein Workspace — Channel existiert aber ist verwaist

Startup-Reconciliation (src/lifecycle/reconcile.ts)

Beim Start einmalig ausführen, nach DB-Init und Bot-Login:

  1. Alle Channels des Servers scannen — welche sind in welcher Kategorie?
  2. DB-Einträge abgleichen — für jeden Workspace-Eintrag in DB prüfen ob Channel noch existiert
  3. Workspace-Verzeichnisse scannen — alle Verzeichnisse unter workspaces_root mit agent.yaml
  4. Einordnung:
    • DB-Eintrag + Workspace vorhanden + Channel existiert → aktiv (Kategorie + Channel-Name)
    • Workspace vorhanden, aber kein DB-Eintrag → inaktiv (in Kategorie verschieben)
    • 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 aufrufen
  • channelDelete-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 test grün

Dateien (erwartet)

  • src/lifecycle/reconcile.ts
  • src/bot.ts
  • src/index.ts
  • tests/unit/reconcile.test.ts

Abhängigkeiten

Phase 0 + Phase 1 abgeschlossen.

Spec

docs/ideas/known-issues.md KI-002, KI-002.1