MCP: vorhandene Dateien als Texture, Font, Sound oder Video anlegen #431

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

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

Anlass

Beim Nachbau der Musik aus dem 5d-Test sollten die Instrumente Lead und Bass einen Sample-Node bekommen. Das ging nicht: Das Projekt hatte keinen Sound, und der Agent kann keinen anlegen. Er hat deshalb Synths von Hand gebaut.

Stand heute (im Code nachgesehen)

  • create_asset lehnt Texture, Font, Sound und Video ab (src/editor/agent/catalog/assets.ts, FILE_TYPES): „each needs a file, and there is no upload for agents“.
  • Auf dem Server liegen aber schon Dateien: die eigenen Uploads und das Demo-Material (#428). Die Picker im Editor listen sie über FileStore.list() und machen per importStored → adopt (src/editor/assetImport.ts) ein Asset daraus. Liegt die Datei schon im Projekt, wird das bestehende Asset genommen.
  • Ein Upload durch den Agenten ist dafür nicht nötig.

Vorschlag

  • Neues Tool list_files mit type (texture, font, sound, video) und optional query: Datei, Upload-Name, Größe, bei Bildern Breite und Höhe, bei Videos Status, Länge, fps und Ton, dazu demo und das Asset, das die Datei im Projekt schon trägt.
  • Neuer Command add_file_asset (Bereich assets) mit type, file und optional name: legt das Asset so an wie der Picker. Abgelehnt wird eine Datei, die es nicht gibt, ein Bild ohne lesbare Größe, ein Video, das noch nicht fertig konvertiert ist, und eine Datei, die schon ein Asset im Projekt hat. In diesem Fall nennt die Meldung die Id des Assets.
  • Ein Undo-Schritt wie jeder andere Command, $name funktioniert in späteren Schritten.
  • Hochladen bleibt Sache des Users.
Aus #429, Nachbetrachtung nach Etappe 5d („was am MCP noch fehlt“). Punkt 1 von 6. ## Anlass Beim Nachbau der Musik aus dem 5d-Test sollten die Instrumente *Lead* und *Bass* einen *Sample*-Node bekommen. Das ging nicht: Das Projekt hatte keinen Sound, und der Agent kann keinen anlegen. Er hat deshalb Synths von Hand gebaut. ## Stand heute (im Code nachgesehen) - `create_asset` lehnt Texture, Font, Sound und Video ab (`src/editor/agent/catalog/assets.ts`, `FILE_TYPES`): „each needs a file, and there is no upload for agents“. - Auf dem Server liegen aber schon Dateien: die eigenen Uploads und das Demo-Material (#428). Die Picker im Editor listen sie über `FileStore.list()` und machen per `importStored` → `adopt` (`src/editor/assetImport.ts`) ein Asset daraus. Liegt die Datei schon im Projekt, wird das bestehende Asset genommen. - Ein Upload durch den Agenten ist dafür nicht nötig. ## Vorschlag - **Neues Tool `list_files`** mit `type` (texture, font, sound, video) und optional `query`: Datei, Upload-Name, Größe, bei Bildern Breite und Höhe, bei Videos Status, Länge, fps und Ton, dazu `demo` und das Asset, das die Datei im Projekt schon trägt. - **Neuer Command `add_file_asset`** (Bereich *assets*) mit `type`, `file` und optional `name`: legt das Asset so an wie der Picker. Abgelehnt wird eine Datei, die es nicht gibt, ein Bild ohne lesbare Größe, ein Video, das noch nicht fertig konvertiert ist, und eine Datei, die schon ein Asset im Projekt hat. In diesem Fall nennt die Meldung die Id des Assets. - Ein Undo-Schritt wie jeder andere Command, `$name` funktioniert in späteren Schritten. - Hochladen bleibt Sache des Users.
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:00 +02:00
Author
Owner

Umgesetzt in 24cd9fd.

  • Neues Tool list_files (type: texture, font, sound, video, optional query): die Dateien, die der Server für das Konto hält, Demo-Material markiert, mit Größe, bei Bildern Breite und Höhe, bei Videos Status, Länge, Frame-Rate und Ton, und dem Asset im Projekt, das die Datei schon nutzt. Bakes und Streaming-Kopien von Songs sind ausgeblendet.
  • Neuer Command add_file_asset: legt aus einer Datei ein Asset an, wie der Picker. Er nutzt die create-Regeln der Import-Pipeline, die vier Import-Arten sind dafür exportiert.
  • Abgelehnt werden: eine Datei, die schon im Projekt ist (die Meldung nennt das Asset), ein Bild ohne lesbare Größe, ein noch nicht konvertiertes Video und eine Datei, die es nicht gibt.
  • run_commands holt die Dateilisten, die seine Schritte brauchen, vor dem Lauf. Die Commands selbst bleiben synchron.
  • Hochladen bleibt beim User.

Live in MCP Test Project: 18 Bilder und 12 Sounds vom echten Server gelistet, TD - Player.png als Texture angelegt und vom Player getragen, ein zweites Anlegen derselben Datei mit dem Asset in der Meldung abgelehnt, danach per Undo zurück.

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`. - Neues Tool **`list_files`** (`type`: texture, font, sound, video, optional `query`): die Dateien, die der Server für das Konto hält, Demo-Material markiert, mit Größe, bei Bildern Breite und Höhe, bei Videos Status, Länge, Frame-Rate und Ton, und dem Asset im Projekt, das die Datei schon nutzt. Bakes und Streaming-Kopien von Songs sind ausgeblendet. - Neuer Command **`add_file_asset`**: legt aus einer Datei ein Asset an, wie der Picker. Er nutzt die `create`-Regeln der Import-Pipeline, die vier Import-Arten sind dafür exportiert. - Abgelehnt werden: eine Datei, die schon im Projekt ist (die Meldung nennt das Asset), ein Bild ohne lesbare Größe, ein noch nicht konvertiertes Video und eine Datei, die es nicht gibt. - `run_commands` holt die Dateilisten, die seine Schritte brauchen, vor dem Lauf. Die Commands selbst bleiben synchron. - Hochladen bleibt beim User. **Live** in *MCP Test Project*: 18 Bilder und 12 Sounds vom echten Server gelistet, *TD - Player.png* als Texture angelegt und vom *Player* getragen, ein zweites Anlegen derselben Datei mit dem Asset in der Meldung abgelehnt, danach per Undo zurück. **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:09 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#431