1.4 KiB
1.4 KiB
name, description, user-invocable, metadata
| name | description | user-invocable | metadata | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| my-suite-transform | Deterministic transformations with a strict command allowlist (exec is optional and constrained). | false |
|
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):
jq --versionjq -c . <INPUT >OUTPUTjq -r . <INPUT >OUTPUThead -n <N> <INPUTtail -n <N> <INPUTwc -l <INPUTgrep -n "<literal>" <INPUTsed -n '<start>,<end>p' <INPUT
Constraints (MUST)
<INPUT>i<OUTPUT>MUSZĄ być ścieżkami pod{baseDir}/runs/<runId>/<N>to liczba 1..500"<literal>"nie może zawierać znaków:; | & $ \( ) { }`- Zakaz:
rm,mv,cppoza run,curl,wget,ssh,sudo,chmod,chown,dd,mkfs,> /dev/*itd.
Execution steps
- Waliduj, czy polecenie pasuje do allowlisty i constraintów.
- Jeśli nie pasuje → przerwij i zaproponuj alternatywę bez exec.
- Jeśli pasuje → uruchom
exectylko na plikach w katalogu run. - Wynik zapisz do:
{baseDir}/runs/<runId>/transform.log{baseDir}/runs/<runId>/<output files>
Why this exists
Zapobiega command injection i ogranicza skutki błędów do sandboxowego katalogu run.