MCP: sehen, wo ein Asset verwendet wird #433

Closed
opened 2026-10-18 19:38:38 +02:00 by meleki · 1 comment
Owner

Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 3 von 6.

Anlass

Bevor der Agent ein Asset löscht, umbaut oder umbenennt, sollte er wissen, wo es steckt: in welchen Szenen es platziert ist, welcher Sprite die Texture trägt, welches Song-Item das Pattern spielt, welcher Sample-Node den Sound nimmt. Heute müsste er dafür jedes Asset einzeln lesen.

Stand heute (im Code nachgesehen)

  • src/core/model/usages.ts hat findUsages (platzierte Instanzen), findPropertyUsages (Referenz-Properties und Overrides), animationsUsing, tilesUsing und cellsPainted. Der Löschdialog (deleteQuestion in src/editor/actions.ts) zählt damit, der Agent sieht nichts davon.
  • Diese Funktionen sehen nicht alles: Song-Items (Pattern, Instrument), Composition-Items, Node-Einstellungen in Graphen (Sample, Play sound, Play composition …) und Sends tauchen dort nicht auf.
  • projectFiles.ts (namedStrings) geht für Sounds schon den anderen Weg: Es liest das Projekt als Daten und nicht Feld für Feld, damit keine Stelle fehlt.

Vorschlag

  • get_asset bekommt usedBy: jedes Asset, das die Id des Assets oder eines seiner Teile (Frame, Clip) irgendwo trägt, mit dem Ort darin. Das ist das nächste Element mit eigener Id, also ein Objekt, ein Node, ein Song- oder Composition-Item oder ein Key, mit Name oder Typ, wenn es einen hat.
  • Gesucht wird wie bei namedStrings über die Daten. So kommen auch neue Asset-Arten ohne eigene Regel mit.
  • Kommt nichts, steht dort eine leere Liste. Dann weiß der Agent, dass nichts daran hängt.
  • Die Beschreibung von delete_asset verweist darauf.
Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 3 von 6. ## Anlass Bevor der Agent ein Asset löscht, umbaut oder umbenennt, sollte er wissen, wo es steckt: in welchen Szenen es platziert ist, welcher Sprite die Texture trägt, welches Song-Item das Pattern spielt, welcher *Sample*-Node den Sound nimmt. Heute müsste er dafür jedes Asset einzeln lesen. ## Stand heute (im Code nachgesehen) - `src/core/model/usages.ts` hat `findUsages` (platzierte Instanzen), `findPropertyUsages` (Referenz-Properties und Overrides), `animationsUsing`, `tilesUsing` und `cellsPainted`. Der Löschdialog (`deleteQuestion` in `src/editor/actions.ts`) zählt damit, der Agent sieht nichts davon. - Diese Funktionen sehen nicht alles: Song-Items (Pattern, Instrument), Composition-Items, Node-Einstellungen in Graphen (*Sample*, *Play sound*, *Play composition* …) und Sends tauchen dort nicht auf. - `projectFiles.ts` (`namedStrings`) geht für Sounds schon den anderen Weg: Es liest das Projekt als Daten und nicht Feld für Feld, damit keine Stelle fehlt. ## Vorschlag - **`get_asset` bekommt `usedBy`**: jedes Asset, das die Id des Assets oder eines seiner Teile (Frame, Clip) irgendwo trägt, mit dem Ort darin. Das ist das nächste Element mit eigener Id, also ein Objekt, ein Node, ein Song- oder Composition-Item oder ein Key, mit Name oder Typ, wenn es einen hat. - Gesucht wird wie bei `namedStrings` über die Daten. So kommen auch neue Asset-Arten ohne eigene Regel mit. - Kommt nichts, steht dort eine leere Liste. Dann weiß der Agent, dass nichts daran hängt. - Die Beschreibung von `delete_asset` verweist darauf.
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:01 +02:00
Author
Owner

Umgesetzt in 24cd9fd.

  • get_asset hat jetzt das Feld usedBy: jedes Asset, das die Id des Assets oder eines seiner Frames oder Clips trägt, mit der Stelle darin (Objekt, Node, Song-Item, Key), dazu Startszene, Master-FX und Master-Routing des Projekts. Leer, wenn nichts es nutzt.
  • Die Suche usesOf in src/core/model/usages.ts geht über die Daten des Projekts statt Feld für Feld, so wird auch ein neues Feld nicht übersehen.
  • Dass das Master-Routing für jedes Asset einen Node hat, zählt nicht als Verwendung.
  • Die Beschreibung von delete_asset verweist darauf.

Live in MCP Test Project: Melody in 3 Song-Items und im Composition-Item, Bass im Bass-Item, Player in Main und Intro, Main als Startszene, Theme im PlaySong-Node — alles richtig gemeldet.

Tests

  • agent-files (neu, 4 Tests) mit den übrigen Agent- und Relay-Tests: 130/130
  • 8 Gegenproben, alle kompilieren, alle rot
  • e2e 71 (atx): 26/26, neu 71g9 (hochgeladener Sound wird gelistet und als Asset angelegt, ein Preset füllt ein Instrument)
  • Gate (atx): CHECK EXIT 0, 326 Dateien, 5021 Tests

Commit 24cd9fd (gemeinsam für #431, #432, #433), Wiki c098520 (MCP).

Umgesetzt in `24cd9fd`. - `get_asset` hat jetzt das Feld **`usedBy`**: jedes Asset, das die Id des Assets oder eines seiner Frames oder Clips trägt, mit der Stelle darin (Objekt, Node, Song-Item, Key), dazu Startszene, Master-FX und Master-Routing des Projekts. Leer, wenn nichts es nutzt. - Die Suche `usesOf` in `src/core/model/usages.ts` geht über die Daten des Projekts statt Feld für Feld, so wird auch ein neues Feld nicht übersehen. - Dass das Master-Routing für jedes Asset einen Node hat, zählt nicht als Verwendung. - Die Beschreibung von `delete_asset` verweist darauf. **Live** in *MCP Test Project*: *Melody* in 3 Song-Items und im Composition-Item, *Bass* im Bass-Item, *Player* in *Main* und *Intro*, *Main* als Startszene, *Theme* im *PlaySong*-Node — alles richtig gemeldet. **Tests** - `agent-files` (neu, 4 Tests) mit den übrigen Agent- und Relay-Tests: 130/130 - 8 Gegenproben, alle kompilieren, alle rot - e2e 71 (atx): 26/26, neu 71g9 (hochgeladener Sound wird gelistet und als Asset angelegt, ein Preset füllt ein Instrument) - Gate (atx): `CHECK EXIT 0`, 326 Dateien, 5021 Tests Commit `24cd9fd` (gemeinsam für #431, #432, #433), Wiki `c098520` (*MCP*).
admin moved this to Done in Development on 2026-10-18 20:07:12 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#433