--- name: my-suite-transform description: Deterministic transformations with a strict command allowlist (exec is optional and constrained). user-invocable: false metadata: {"openclaw":{"emoji":"🧪","requires":{"config":["group:runtime"],"bins":["jq"]}}} --- # Transform (Allowlisted exec) ## Golden rule Preferuj transformacje bez `exec`. Jeśli `exec` jest potrzebny → tylko allowlista poniżej. ## Command allowlist (STRICT) Dozwolone są WYŁĄCZNIE te komendy (dokładne wzorce): 1) `jq --version` 2) `jq -c . OUTPUT` 3) `jq -r . OUTPUT` 4) `head -n " ,p' ` i `` MUSZĄ być ścieżkami pod `{baseDir}/runs//` - `` to liczba 1..500 - `""` nie może zawierać znaków: `; | & $ \` ( ) { }` - Zakaz: `rm`, `mv`, `cp` poza run, `curl`, `wget`, `ssh`, `sudo`, `chmod`, `chown`, `dd`, `mkfs`, `> /dev/*` itd. ## Execution steps 1) Waliduj, czy polecenie pasuje do allowlisty i constraintów. 2) Jeśli nie pasuje → przerwij i zaproponuj alternatywę bez exec. 3) Jeśli pasuje → uruchom `exec` tylko na plikach w katalogu run. 4) Wynik zapisz do: - `{baseDir}/runs//transform.log` - `{baseDir}/runs//` ## Why this exists Zapobiega command injection i ogranicza skutki błędów do sandboxowego katalogu run.