Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 4 von 6.
Anlass
Der Agent baut gleiche Teile eines Graphen jedes Mal neu auf, Node für Node und Kante für Kante, auch wenn derselbe Aufbau schon in einem anderen Behavior oder Instrument steht. Der User kopiert so etwas mit Ctrl+C und Ctrl+V.
Stand heute (im Code nachgesehen)
Der Graph-Tab kopiert über die Zwischenablage (src/editor/clipboard.ts, src/core/model/clipboard.ts) und fügt mit PasteGraphCommand (src/core/commands/pasteCommands.ts) ein, auch in einen anderen Graphen.
Im Katalog des Agenten gibt es dafür keinen Command.
Vorschlag
Neuer Command copy_nodes (Bereich graphs) mit from (Graph), nodes (Ids), optional to (anderer Graph, sonst derselbe). Die Kanten zwischen den kopierten Nodes kommen mit, Gruppen und Kommentare, die nur kopierte Nodes umfassen, auch.
made nennt die neuen Ids je alter Id, damit spätere Schritte sie verbinden können.
Ohne Ort werden die Kopien wie neue Nodes gesetzt, also neben das, womit sie verbunden werden.
Offen beim Plan: Was passiert mit Nodes, die im Ziel-Graphen nicht erlaubt sind (z. B. ein Shader-Node in einem Behavior), und mit Variablen, die es dort nicht gibt? Der Graph-Tab hat dafür schon Regeln, die übernommen werden sollten.
Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 4 von 6.
## Anlass
Der Agent baut gleiche Teile eines Graphen jedes Mal neu auf, Node für Node und Kante für Kante, auch wenn derselbe Aufbau schon in einem anderen Behavior oder Instrument steht. Der User kopiert so etwas mit Ctrl+C und Ctrl+V.
## Stand heute (im Code nachgesehen)
- Der Graph-Tab kopiert über die Zwischenablage (`src/editor/clipboard.ts`, `src/core/model/clipboard.ts`) und fügt mit `PasteGraphCommand` (`src/core/commands/pasteCommands.ts`) ein, auch in einen anderen Graphen.
- Im Katalog des Agenten gibt es dafür keinen Command.
## Vorschlag
- **Neuer Command `copy_nodes`** (Bereich *graphs*) mit `from` (Graph), `nodes` (Ids), optional `to` (anderer Graph, sonst derselbe). Die Kanten zwischen den kopierten Nodes kommen mit, Gruppen und Kommentare, die nur kopierte Nodes umfassen, auch.
- `made` nennt die neuen Ids je alter Id, damit spätere Schritte sie verbinden können.
- Ohne Ort werden die Kopien wie neue Nodes gesetzt, also neben das, womit sie verbunden werden.
- Offen beim Plan: Was passiert mit Nodes, die im Ziel-Graphen nicht erlaubt sind (z. B. ein Shader-Node in einem Behavior), und mit Variablen, die es dort nicht gibt? Der Graph-Tab hat dafür schon Regeln, die übernommen werden sollten.
admin
added this to the Development project 2026-10-18 19:38:51 +02:00
admin
moved this to Next in Development on 2026-10-18 19:39:02 +02:00
Umgesetzt in fb981b5 (dazu e4ccf5f für einen Fund beim Testen), Wiki 286e3da (MCP).
Was neu ist
Der Command copy_nodes (Bereich graphs) kopiert Nodes in denselben Graphen oder in einen anderen, wie Ctrl+C / Ctrl+V.
Mit kommen die Kanten zwischen den kopierten Nodes sowie Gruppen und Kommentare, die nur kopierte Nodes betreffen. Ob ein Node zu einer Gruppe gehört, entscheidet wie beim Ziehen die Lage seines Mittelpunkts.
made nennt jede Kopie unter der Id ihres Originals. Spätere Schritte erreichen sie mit $copy.<id>, $copy allein ist die Kopie des ersten Nodes.
Ohne x/y werden die Kopien am Ende des Aufrufs angeordnet wie neue Nodes. Mit x/y behalten sie ihr Layout, die linke obere Ecke liegt dort.
Die zwei offenen Fragen
Nodes, die der Ziel-Graph nicht annimmt, werden mit Namen abgelehnt, nicht still weggelassen. Die Regel ist dieselbe wie im Graph-Tab: fittingPart liegt jetzt in paletteEntries.ts und wird von beiden genutzt.
Liest ein kopierter Variables-Node Variablen seines Behaviors, kommen sie mit (Standardwert, Wert, Keep, Private). Gibt es im Ziel schon eine Variable mit dem Namen, aber einer anderen Art, wird abgelehnt.
Fund beim Testen (e4ccf5f)
Eine Gruppe, die im selben Aufruf um neue Nodes gelegt wird, kannte das Anordnen nicht. Bei On key held, Move, Owner mit einer Gruppe um Key + Move und einer um den Owner landete der Owner in der ersten Gruppe, die beiden Gruppen überlappten. Jetzt bekommt so eine Gruppe Platz: Was sonst in ihr stünde, ein Node oder eine andere solche Gruppe, kommt darunter. Die Spalten des Flusses bleiben. Gruppen um vorhandene Nodes und der Arrange-Knopf sind unverändert.
Tests
Unit: agent-copy (neu, 3 Tests), neuer Test in agent-edit für den Fund. Agent-, Graph-, Clipboard- und Palette-Tests grün.
Gegenproben: 6 für copy_nodes, 1 für den Fund, alle kompilierbar, alle rot.
e2e 71 auf atx: ALL PASSED, 26 Checks.
Gate auf atx: CHECK EXIT 0, 327 Dateien, 5025 Tests.
Live in MCP Test Project: alle 5 Nodes von Arrow keys walk in ein neues Behavior kopiert, 6 Kanten, Gruppe, Kommentar und speed (300) kamen mit, lint_graph überall 0 außer 4 Kreuzungen wie im Original. Per Undo zurückgenommen.
Umgesetzt in `fb981b5` (dazu `e4ccf5f` für einen Fund beim Testen), Wiki `286e3da` (*MCP*).
## Was neu ist
Der Command **`copy_nodes`** (Bereich *graphs*) kopiert Nodes in denselben Graphen oder in einen anderen, wie Ctrl+C / Ctrl+V.
- Mit kommen die Kanten zwischen den kopierten Nodes sowie Gruppen und Kommentare, die nur kopierte Nodes betreffen. Ob ein Node zu einer Gruppe gehört, entscheidet wie beim Ziehen die Lage seines Mittelpunkts.
- `made` nennt jede Kopie unter der Id ihres Originals. Spätere Schritte erreichen sie mit `$copy.<id>`, `$copy` allein ist die Kopie des ersten Nodes.
- Ohne `x`/`y` werden die Kopien am Ende des Aufrufs angeordnet wie neue Nodes. Mit `x`/`y` behalten sie ihr Layout, die linke obere Ecke liegt dort.
## Die zwei offenen Fragen
- Nodes, die der Ziel-Graph nicht annimmt, werden **mit Namen abgelehnt**, nicht still weggelassen. Die Regel ist dieselbe wie im Graph-Tab: `fittingPart` liegt jetzt in `paletteEntries.ts` und wird von beiden genutzt.
- Liest ein kopierter Variables-Node Variablen seines Behaviors, **kommen sie mit** (Standardwert, Wert, *Keep*, *Private*). Gibt es im Ziel schon eine Variable mit dem Namen, aber einer anderen Art, wird abgelehnt.
## Fund beim Testen (`e4ccf5f`)
Eine Gruppe, die im selben Aufruf um neue Nodes gelegt wird, kannte das Anordnen nicht. Bei *On key held*, *Move*, *Owner* mit einer Gruppe um Key + Move und einer um den Owner landete der Owner in der ersten Gruppe, die beiden Gruppen überlappten. Jetzt bekommt so eine Gruppe Platz: Was sonst in ihr stünde, ein Node oder eine andere solche Gruppe, kommt darunter. Die Spalten des Flusses bleiben. Gruppen um vorhandene Nodes und der *Arrange*-Knopf sind unverändert.
## Tests
- Unit: `agent-copy` (neu, 3 Tests), neuer Test in `agent-edit` für den Fund. Agent-, Graph-, Clipboard- und Palette-Tests grün.
- Gegenproben: 6 für `copy_nodes`, 1 für den Fund, alle kompilierbar, alle rot.
- e2e 71 auf atx: ALL PASSED, 26 Checks.
- Gate auf atx: `CHECK EXIT 0`, 327 Dateien, 5025 Tests.
- Live in *MCP Test Project*: alle 5 Nodes von *Arrow keys walk* in ein neues Behavior kopiert, 6 Kanten, Gruppe, Kommentar und `speed` (300) kamen mit, `lint_graph` überall 0 außer 4 Kreuzungen wie im Original. Per Undo zurückgenommen.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 4 von 6.
Anlass
Der Agent baut gleiche Teile eines Graphen jedes Mal neu auf, Node für Node und Kante für Kante, auch wenn derselbe Aufbau schon in einem anderen Behavior oder Instrument steht. Der User kopiert so etwas mit Ctrl+C und Ctrl+V.
Stand heute (im Code nachgesehen)
src/editor/clipboard.ts,src/core/model/clipboard.ts) und fügt mitPasteGraphCommand(src/core/commands/pasteCommands.ts) ein, auch in einen anderen Graphen.Vorschlag
copy_nodes(Bereich graphs) mitfrom(Graph),nodes(Ids), optionalto(anderer Graph, sonst derselbe). Die Kanten zwischen den kopierten Nodes kommen mit, Gruppen und Kommentare, die nur kopierte Nodes umfassen, auch.madenennt die neuen Ids je alter Id, damit spätere Schritte sie verbinden können.Umgesetzt in
fb981b5(dazue4ccf5ffür einen Fund beim Testen), Wiki286e3da(MCP).Was neu ist
Der Command
copy_nodes(Bereich graphs) kopiert Nodes in denselben Graphen oder in einen anderen, wie Ctrl+C / Ctrl+V.madenennt jede Kopie unter der Id ihres Originals. Spätere Schritte erreichen sie mit$copy.<id>,$copyallein ist die Kopie des ersten Nodes.x/ywerden die Kopien am Ende des Aufrufs angeordnet wie neue Nodes. Mitx/ybehalten sie ihr Layout, die linke obere Ecke liegt dort.Die zwei offenen Fragen
fittingPartliegt jetzt inpaletteEntries.tsund wird von beiden genutzt.Fund beim Testen (
e4ccf5f)Eine Gruppe, die im selben Aufruf um neue Nodes gelegt wird, kannte das Anordnen nicht. Bei On key held, Move, Owner mit einer Gruppe um Key + Move und einer um den Owner landete der Owner in der ersten Gruppe, die beiden Gruppen überlappten. Jetzt bekommt so eine Gruppe Platz: Was sonst in ihr stünde, ein Node oder eine andere solche Gruppe, kommt darunter. Die Spalten des Flusses bleiben. Gruppen um vorhandene Nodes und der Arrange-Knopf sind unverändert.
Tests
agent-copy(neu, 3 Tests), neuer Test inagent-editfür den Fund. Agent-, Graph-, Clipboard- und Palette-Tests grün.copy_nodes, 1 für den Fund, alle kompilierbar, alle rot.CHECK EXIT 0, 327 Dateien, 5025 Tests.speed(300) kamen mit,lint_graphüberall 0 außer 4 Kreuzungen wie im Original. Per Undo zurückgenommen.