Files
tim ee18a1f591 M3.10: tools-context/* — drei Tool-Context-Module + drop gitkeep
Drei Module, klar nach Persona-Scope getrennt:

- brick-creation.md: Pulse / View / Row / Pool-View-Tools + die haerteste
  Stolperfalle (delete_brick vs delete_view_brick vs remove_word_from_row).
  Main-Voice-exklusiv.

- atomic-chain.md: Strikt-lineares Pattern fuer Sub-Agents ohne
  All-in-One-Finalize (Lueckentext). Drei Regeln: Reihenfolge, IDs aus
  Vorgaenger, bei Fehlschlag-Run beenden statt aufraeumen.

- atomic-finalize.md: All-in-One-Pattern fuer Sub-Agents MIT Finalize
  (Kreuzwort). Kombiniert Layer-Erstellung + Solution-Set atomar —
  vermeidet orphan-Zustaende.

atomic-chain und atomic-finalize zeigen explizit zueinander: wenn ein
Finalize-Tool existiert, bevorzuge es. atomic-chain ist Fallback wenn
das Backend nur die getrennten Tools anbietet.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-02 15:32:58 +02:00

69 lines
2.6 KiB
Markdown

---
module_id: tools-context/brick-creation
version: 0.1.0
description: Pulse / View / Row / Pool-View — was welches Tool tut und welches Delete-Tool dazu gehoert.
max_tokens: 350
applies_to: [main-voice]
applies_NOT_to: [kreuzwort-builder, lueckentext-builder]
note_on_scope: |
Sub-Agents nutzen atomic_*-Tools (siehe atomic-chain.md / atomic-finalize.md),
nicht das hier dokumentierte Brick-Set. Dieses Modul ist Main-Voice-exklusiv.
sources:
- personas/main-voice.md (BRICK-WORKFLOWS-Block + Brick-Loesch-Regeln)
extracted_at: 2026-06-02
extracted_by: phase-M3
---
# Brick-Creation Tool-Context
Die Stream-Box kennt drei Brick-Klassen + ein Layer-Konzept. Welches Tool fuer welche
Aenderung — und vor allem: welches **Delete-Tool** dazu gehoert.
## (A) Pool-View ("zeige mir alle X-Worte")
```
create_pool_view(title, source="wortpool", filter={lang, starts_with?, ...}, sort?, limit?)
```
Erzeugt eine **View-Brick** die einen Filter-Snapshot aus einer Source rendert.
## (B) Zeile mit Woertern bauen (DAS HAEUFIGSTE Pattern)
1. `list_view_bricks()` → gibt es schon eine aktive/leere Zeile? → wenn ja, deren `rowId` nehmen.
(Wenn KEINE Zeile da ist: `create_row_brick(title)` zuerst.)
2. `list_source_items("wortpool", {lang, ...})` → welche Woerter sind schon da?
3. Fuer jedes **NEUE** Wort: `add_source_item("wortpool", {lang, grundform})` → liefert `wortId`.
4. Fuer **JEDES** Wort: `add_word_to_row(rowId, wortId)`**NIEMALS VERGESSEN**.
> `add_word_to_row` braucht eine `wortId` AUS DEM Wortpool (kein freier Text).
> Schritte 3 + 4 koennen NICHT durch nur Schritt 3 ersetzt werden.
Detail dazu: die Anti-Halluzinations-Regel zu `add_source_item` in der
Main-Voice-Persona — wenn nur Schritt 3 gemacht wird, ist das Wort nur im
**unsichtbaren** Pool, nicht im **sichtbaren** Brick.
## (C) Alles zuruecksetzen
```
clear_view_bricks()
```
Entfernt alle View-Bricks. Pulse-Cycle laeuft wieder.
## (D) Pulse-Brick aendern (soft/fast/shake/text/color)
```
update_brick_text / update_brick_color / update_brick_mode
```
## Delete-Mapping — Hartes Wissen
| Was loeschen? | Tool |
|--------------------------------|-----------------------------------------------|
| **STREAM-Brick (Pulse)** | `delete_brick` oder `toggle_brick` |
| **VIEW-Brick (Row, Pool-View)**| `delete_view_brick` (NICHT `delete_brick`!) |
| **Einzelnes Wort aus Row** | `remove_word_from_row(rowId, wortId)` |
> Falsches Delete-Tool fuer den falschen Brick-Typ → silent fail ohne sichtbare
> Aenderung. Achte auf das Mapping.