82 lines
2.8 KiB
Markdown
82 lines
2.8 KiB
Markdown
---
|
|
id: DIS-152
|
|
status: in-progress
|
|
phase: 1.5
|
|
priority: p2
|
|
labels: [phase:1.5, type:feat, priority:p2]
|
|
branch: refinement/mapped-project-paths
|
|
assignee: developer-agent
|
|
started: 2026-04-13
|
|
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).
|