disclaw/tasks/DIS-151.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

3.1 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 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:

  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 / 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 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