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

82 lines
2.8 KiB
Markdown

---
id: DIS-152
status: ready
phase: 1.5
priority: p2
labels: [phase:1.5, type:feat, priority:p2]
branch: refinement/mapped-project-paths
assignee: null
started: null
pr: null
merged: null
---
# DIS-152: Gemappte Projektpfade für Agents (host:virtual)
## Ziel
Beim Erstellen eines Agents kann ein zusätzlicher Host-Pfad angegeben werden,
auf den der Agent zugreifen kann. Im Discord-Output erscheint immer nur der
konfigurierte virtuelle Pfad — nie der echte Host-Pfad.
## Kontext
Agents sollen auf bestehende Projektverzeichnisse zugreifen können (z.B. ein
laufendes Codeprojekt) ohne dass der absolute Host-Pfad in Discord-Nachrichten
durchsickert.
**Wichtiger Hinweis**: Es handelt sich um *keine* echte Isolation/Containerisierung.
Claude Code sieht den echten Pfad intern. Die Sanitisierung ersetzt den Host-Pfad
in allen Discord-Ausgaben durch den konfigurierten virtuellen Pfad.
## Scope
### `agent.yaml` Erweiterung
```yaml
name: my-agent
channel_id: "123456789"
role: Developer
model: claude-sonnet-4-6
path_mappings:
- host: "C:/Code/side/testProject"
virtual: "~/testProject"
```
### `/new-agent`-Command Erweiterung
- Neuer optionaler Parameter `path` im Format `host:virtual`
(z.B. `C:\Code\side\testProject:~/testProject`)
- Wird in `agent.yaml` unter `path_mappings` gespeichert
- Validierung: Host-Pfad muss existieren
### CLAUDE.md-Template Erweiterung
Beim Erstellen des Agents wird in die CLAUDE.md geschrieben:
```
## Verfügbare Pfade
- ~/testProject → dein Projekt-Workspace (verwende immer diesen Pfad in Antworten)
Nenne niemals absolute Host-Pfade. Verwende ausschließlich die oben gelisteten virtuellen Pfade.
```
### `sanitizeForDiscord` Erweiterung (`src/runtime/sanitize.ts`)
- `path_mappings` aus `agent.yaml` werden beim Routing geladen
- Host-Pfad (beide Slash-Varianten) → virtueller Pfad ersetzen
- Reihenfolge: spezifischste Pfade zuerst (längste zuerst sortieren)
### `src/router.ts`
- `sanitizeOpts` bekommt zusätzlich `pathMappings: Array<{host: string, virtual: string}>`
## Definition of Done
- [ ] `agent.yaml` unterstützt `path_mappings`-Feld (Zod-Schema aktualisiert)
- [ ] `/new-agent` akzeptiert optionalen `path`-Parameter
- [ ] Host-Pfade erscheinen nicht in Discord-Ausgaben
- [ ] Agent-CLAUDE.md enthält Hinweis auf virtuelle Pfade
- [ ] Unit-Test: Sanitisierung ersetzt Host- durch virtuellen Pfad (beide Slash-Stile)
- [ ] `npm run build && npm test` grün
## Dateien (erwartet)
- `src/agent/schema.ts` (path_mappings Feld)
- `src/agent/identity.ts` (CLAUDE.md-Template)
- `src/commands/new-agent.ts` (path-Parameter)
- `src/runtime/sanitize.ts` (pathMappings Support)
- `src/router.ts` (sanitizeOpts erweitern)
- `tests/unit/sanitize-for-discord.test.ts` (neue Cases)
## Abhängigkeiten
DIS-151 empfohlen (aber kein harter Blocker).