
# Referentie voor CLI

Alle Queuety-bewerkingen zijn standaard beschikbaar via WP-CLI onder de namespace `wp queuety`.

Definieer `QUEUETY_CLI_COMMAND` voordat Queuety start als u dezelfde opdrachtstructuur onder een andere root wilt publiceren, zoals `wp themequeue`.

Voor agent-harnesses en andere virtual-bash-integraties geldt deze pagina als naslag voor mensen en de PHP-bridge als machinecontract:

- `Queuety::cli_command_map()` stelt de serialiseerbare opdrachtcatalogus beschikbaar
- `Queuety::resolve_cli_command( $path, $args, $assoc_args )` zet geparseerde `wp queuety ...`-input om in een genormaliseerd uitvoeringsplan dat de voorkeur geeft aan directe aanroepbare functies van PHP

Statusmachines hebben geen opdrachten in deze structuur; bekijk ze via de PHP API die worden beschreven in [Statusmachines](https://queuety.inline0.dev/nl/docs/state-machines).

## Taakopdrachten

### `wp queuety work`

Start een worker die taken verwerkt.

```bash
wp queuety work [--queue=<queue>] [--once] [--workers=<n>]
wp queuety work [--queue=<queue>] [--min-workers=<n>] --max-workers=<n>
```

| Optie | Beschrijving |
|---|---|
| `--queue=<queue>` | Queue(s) om te verwerken, door komma's gescheiden voor prioriteitsvolgorde (standaard: `default`) |
| `--once` | Verwerk maximaal één taak en sluit af (sluit ook meteen af als er niets kan worden geclaimd) |
| `--workers=<n>` | Start N workerprocessen via forks (vereist de extensies `pcntl` en `posix`, net als `--min-workers` en `--max-workers`) |
| `--min-workers=<n>` | Minimumaantal workers voor een adaptieve pool. Vereist `--max-workers` |
| `--max-workers=<n>` | Maximumaantal workers voor een adaptieve pool |

```bash
# Single worker on default queue
wp queuety work

# Process a specific queue
wp queuety work --queue=emails

# Process multiple queues in priority order
wp queuety work --queue=critical,default,low

# One-shot mode
wp queuety work --once

# Multi-worker mode
wp queuety work --workers=4

# Adaptive worker pool
wp queuety work --queue=providers --min-workers=2 --max-workers=6
```

Wanneer meerdere wachtrijen zijn opgegeven, probeert de worker in de vermelde volgorde een taak uit elke wachtrij te claimen. De eerste wachtrij met een beschikbare taak wint. `--workers` houdt de pool vast. `--min-workers` en `--max-workers` schakelen adaptieve schaling in voor dezelfde opdrachtinterface. Zie [Workers](https://queuety.inline0.dev/nl/docs/features/workers) voor implementatiestrategieën en [Resourcebeheer](https://queuety.inline0.dev/nl/docs/features/resource-management) voor het toelatingsmodel achter adaptieve pools.

### `wp queuety flush`

Verwerk alle openstaande taken en sluit af.

```bash
wp queuety flush [--queue=<queue>]
```

| Optie | Beschrijving |
|---|---|
| `--queue=<queue>` | Queue(s) om te verwerken, door komma's gescheiden voor prioriteitsvolgorde (standaard: `default`) |

```bash
# Flush a single queue
wp queuety flush --queue=emails

# Flush multiple queues in priority order
wp queuety flush --queue=critical,default,low
```

### `wp queuety dispatch`

Verzend een taak vanaf de opdrachtregel.

```bash
wp queuety dispatch <handler> [--payload=<json>] [--queue=<queue>] [--priority=<priority>] [--delay=<seconds>]
```

| Optie | Beschrijving |
|---|---|
| `<handler>` | Handlernaam of klasse (vereist) |
| `--payload=<json>` | JSON-payload (standaard: `{}`) |
| `--queue=<queue>` | Wachtrijnaam (standaard: `default`) |
| `--priority=<priority>` | Prioriteitsniveau 0-3 (standaard: `0`) |
| `--delay=<seconds>` | Vertraging in seconden (standaard: `0`) |

```bash
wp queuety dispatch send_email --payload='{"to":"user@example.com"}' --queue=emails
```

### `wp queuety status`

Toon wachtrijstatistieken.

```bash
wp queuety status [--queue=<queue>]
```

| Optie | Beschrijving |
|---|---|
| `--queue=<queue>` | Filter op wachtrijnaam |

### `wp queuety list`

Taken weergeven.

```bash
wp queuety list [--queue=<queue>] [--status=<status>] [--format=<format>]
```

| Optie | Beschrijving |
|---|---|
| `--queue=<queue>` | Filter op wachtrij |
| `--status=<status>` | Filter op status (`pending`, `processing`, `completed`, `failed`, `buried`) |
| `--format=<format>` | Uitvoerformaat: `table` (standaard), `json`, `csv`, `yaml` |

### `wp queuety inspect`

Toon alle details van een taak, inclusief payload en loggeschiedenis.

```bash
wp queuety inspect <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Taak-ID (vereist) |

### `wp queuety retry`

Voer een specifieke taak opnieuw uit.

```bash
wp queuety retry <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Taak-ID die opnieuw moet worden uitgevoerd (vereist) |

### `wp queuety retry-buried`

Voer alle begraven taken opnieuw uit.

```bash
wp queuety retry-buried
```

### `wp queuety bury`

Begraaf een taak handmatig.

```bash
wp queuety bury <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Taak-ID die moet worden begraven (vereist) |

### `wp queuety delete`

Verwijder een taak.

```bash
wp queuety delete <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Taak-ID die moet worden verwijderd (vereist) |

### `wp queuety recover`

Herstel verouderde taken die vastzitten in de status `processing`.

```bash
wp queuety recover
```

### `wp queuety purge`

Verwijder voltooide taken definitief.

```bash
wp queuety purge [--older-than=<days>]
```

| Optie | Beschrijving |
|---|---|
| `--older-than=<days>` | Verwijder taken die ouder zijn dan N dagen (standaard: `QUEUETY_RETENTION_DAYS`) |

### `wp queuety pause`

Pauzeer een wachtrij zodat workers deze overslaan.

```bash
wp queuety pause <queue>
```

| Optie | Beschrijving |
|---|---|
| `<queue>` | Naam van de wachtrij die moet worden gepauzeerd (vereist) |

### `wp queuety resume`

Hervat een gepauzeerde wachtrij.

```bash
wp queuety resume <queue>
```

| Optie | Beschrijving |
|---|---|
| `<queue>` | Naam van de wachtrij die moet worden hervat (vereist) |

### `wp queuety metrics`

Toon statistieken per handler.

```bash
wp queuety metrics [--minutes=<minutes>] [--format=<format>]
```

| Optie | Beschrijving |
|---|---|
| `--minutes=<minutes>` | Tijdsvenster in minuten (standaard: `60`) |
| `--format=<format>` | Uitvoerformaat: `table` (standaard), `json`, `csv`, `yaml` |

### `wp queuety discover`

Ontdek handlerklassen in een map.

```bash
wp queuety discover <directory> <namespace> [--register]
```

| Optie | Beschrijving |
|---|---|
| `<directory>` | Map waarin naar handlerklassen wordt gezocht (vereist) |
| `<namespace>` | PSR-4-namespaceprefix voor de map (vereist) |
| `--register` | Ontdekte handlers daadwerkelijk registreren |

## Workflowopdrachten

### `wp queuety workflow status`

Toon de status en voortgang van een workflow.

```bash
wp queuety workflow status <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |

`status` toont de huidige stap, een optionele stapnaam, versie-/hashmetadata, de wachtmodus, een artefactoverzicht en een blob `WaitInfo` JSON wanneer de workflow wacht op signalen of afhankelijkheden.

### `wp queuety workflow list`

Workflows weergeven.

```bash
wp queuety workflow list [--status=<status>] [--format=<format>]
```

| Optie | Beschrijving |
|---|---|
| `--status=<status>` | Filter op status: `running`, `completed`, `failed`, `paused`, `waiting_for_signal`, `waiting_for_workflows`, `cancelled` |
| `--format=<format>` | Uitvoerformaat: `table` (standaard), `json`, `csv`, `yaml` |

De opdracht retourneert maximaal 50 workflows. De waarde `--limit` wordt gelezen, maar WP-CLI weigert de vlag momenteel omdat de opdracht deze niet declareert ([#12](https://github.com/inline0/queuety/issues/12)); gebruik `Queuety::list_workflows()` voor een andere limiet.

De standaardtabel bevat `StepName` en `WaitMode`, zodat geblokkeerde workflows gemakkelijker te scannen zijn.

### `wp queuety workflow retry`

Probeer een mislukte workflow opnieuw vanaf de stap waarop deze is mislukt.

```bash
wp queuety workflow retry <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |

### `wp queuety workflow approve`

Stuur een goedkeuringssignaal naar een workflow.

```bash
wp queuety workflow approve <id> [--data=<json>] [--signal=<name>]
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `--data=<json>` | Optionele JSON-objectpayload |
| `--signal=<name>` | Overschrijf de naam van het goedkeuringssignaal (standaard: `approval`, komt overeen met `wait_for_approval()`; een stap van het type `wait_for_decision()` luistert standaard naar `approved`, geef daar dus `--signal=approved` door) |

### `wp queuety workflow reject`

Stuur een afwijzingssignaal naar een workflow.

```bash
wp queuety workflow reject <id> [--data=<json>] [--signal=<name>]
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `--data=<json>` | Optionele JSON-objectpayload |
| `--signal=<name>` | Overschrijf de naam van het afwijzingssignaal (standaard: `rejected`) |

### `wp queuety workflow input`

Stuur gestructureerde invoer naar een workflow.

```bash
wp queuety workflow input <id> [--data=<json>] [--signal=<name>]
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `--data=<json>` | Optionele JSON-objectpayload |
| `--signal=<name>` | Overschrijf de naam van het invoersignaal (standaard: `input`) |

### `wp queuety workflow artifacts`

Geef opgeslagen artefacten van een workflow weer.

```bash
wp queuety workflow artifacts <id> [--format=<format>] [--with-content]
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `--format=<format>` | Uitvoerformaat: `table` (standaard) of `json` |
| `--with-content` | Artefactinhoud opnemen in de uitvoer |

### `wp queuety workflow artifact`

Toon één opgeslagen artefact van een workflow.

```bash
wp queuety workflow artifact <id> <key>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `<key>` | Artefactsleutel (vereist) |

### `wp queuety workflow pause`

Pauzeer een actieve workflow.

```bash
wp queuety workflow pause <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |

### `wp queuety workflow resume`

Hervat een gepauzeerde workflow.

```bash
wp queuety workflow resume <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |

### `wp queuety workflow cancel`

Annuleer een workflow die niet al `completed` of `cancelled` is. In één transactie stelt Queuety de status in op `cancelled`, begraaft de wachtende en verwerkende taken van de workflow en registreert `workflow_cancelled`; daarna voert deze compensaties en eventuele geregistreerde opschoonhandler uit.

```bash
wp queuety workflow cancel <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID om te annuleren (vereist) |

```bash
wp queuety workflow cancel 42
```

### `wp queuety workflow timeline`

Toon de gebeurtenissentijdlijn van een workflow. Geeft alle stapgebeurtenissen (gestart, voltooid, mislukt) weer, met tijdstempels, handlers en tijdsduren.

```bash
wp queuety workflow timeline <id> [--limit=<limit>] [--offset=<offset>] [--format=<format>]
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `--limit=<limit>` | Maximaal aantal gebeurtenissen (standaard: `100`) |
| `--offset=<offset>` | Aantal eerdere gebeurtenissen dat wordt overgeslagen (standaard: `0`) |
| `--format=<format>` | Uitvoerformaat: `table` (standaard), `json`, `csv`, `yaml` |

```bash
wp queuety workflow timeline 42
```

Uitvoerkolommen: `ID`, `Step`, `Event`, `Handler`, `Duration_ms`, `Error`, `Created_at`.

### `wp queuety workflow state-at`

Toon de openbare workflowstatus nadat een specifieke workflowstap is voltooid of hervat.

```bash
wp queuety workflow state-at <id> <step>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `<step>` | Stapindex, vanaf 0 geteld (vereist) |

```bash
wp queuety workflow state-at 42 0
```

Zie [Workflowgebeurtenissenlog](https://queuety.inline0.dev/nl/docs/workflows/event-log) voor meer informatie over wat wordt vastgelegd en waarvoor u het kunt gebruiken.

### `wp queuety workflow rewind`

Zet een workflow terug naar een eerdere stap en ga verder vanaf de daaropvolgende stap. De status wordt hersteld vanuit het gebeurtenissenlogboek `state_after` voor de opgegeven stap en de volgende stap (`<step> + 1`) wordt in de wachtrij geplaatst; de opgegeven stap zelf wordt niet opnieuw uitgevoerd.

```bash
wp queuety workflow rewind <id> <step>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `<step>` | Stapindex om naar terug te zetten, vanaf 0 geteld (vereist) |

```bash
wp queuety workflow rewind 42 1
```

Zie [Tijdreizen](https://queuety.inline0.dev/nl/docs/workflows/time-travel) voor meer informatie.

### `wp queuety workflow fork`

Splits een actieve workflow af naar een zelfstandige kopie in de huidige staat. De afgesplitste workflow krijgt een nieuwe ID en gaat zelfstandig verder.

```bash
wp queuety workflow fork <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID om af te splitsen (vereist) |

```bash
wp queuety workflow fork 42
# Success: Workflow #42 forked. New workflow ID: 43.
```

Zie [Afsplitsen](https://queuety.inline0.dev/nl/docs/workflows/forking) voor meer informatie.

### `wp queuety workflow export`

Exporteer de volledige uitvoeringsgeschiedenis van een workflow naar JSON. Dit omvat de workflowrij, taken, workflowgebeurtenissen, logboekvermeldingen, opgeslagen signalen en wachtende workflowafhankelijkheden.

```bash
wp queuety workflow export <id> [--output=<file>]
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Workflow-ID (vereist) |
| `--output=<file>` | Bestandspad waarnaar de JSON wordt geschreven. Standaard is stdout. |

```bash
# Print to stdout
wp queuety workflow export 42

# Write to a file
wp queuety workflow export 42 --output=/tmp/workflow-42.json
```

Zie [Exporteren en afspelen](https://queuety.inline0.dev/nl/docs/workflows/export-replay) voor meer informatie over de structuur van JSON.

### `wp queuety workflow replay`

Speel een geëxporteerde workflow opnieuw af vanuit een JSON-bestand. Maakt een nieuwe workflow aan met de geëxporteerde status, metadata en historische tijdlijn.

```bash
wp queuety workflow replay <file>
```

| Optie | Beschrijving |
|---|---|
| `<file>` | Pad naar het geëxporteerde JSON-bestand (vereist) |

```bash
wp queuety workflow replay /tmp/workflow-42.json
# Success: Workflow replayed. New workflow ID: 85.
```

Zie [Exporteren en opnieuw afspelen](https://queuety.inline0.dev/nl/docs/workflows/export-replay) voor meer informatie.

## Planningsopdrachten

### `wp queuety schedule list`

Geef alle terugkerende schema's weer.

```bash
wp queuety schedule list [--format=<format>]
```

| Optie | Beschrijving |
|---|---|
| `--format=<format>` | Uitvoerformaat: `table` (standaard), `json`, `csv`, `yaml` |

### `wp queuety schedule add`

Voeg een terugkerend schema toe.

```bash
wp queuety schedule add <handler> [--every=<interval>] [--cron=<expression>] [--payload=<json>] [--queue=<queue>]
```

| Optie | Beschrijving |
|---|---|
| `<handler>` | Handlernaam of -klasse (vereist) |
| `--every=<interval>` | Intervalexpressie (e.g. `1 hour`, `30 minutes`) |
| `--cron=<expression>` | Cron-expressie (e.g. `0 3 * * *`) |
| `--payload=<json>` | JSON-payload (standaard: `{}`) |
| `--queue=<queue>` | Wachtrijnaam (standaard: `default`) |

U moet `--every` of `--cron` opgeven.

```bash
wp queuety schedule add cleanup_handler --every="1 hour"
wp queuety schedule add nightly_report --cron="0 3 * * *" --queue=reports
```

### `wp queuety schedule remove`

Verwijder een schema op basis van de handlernaam.

```bash
wp queuety schedule remove <handler>
```

| Optie | Beschrijving |
|---|---|
| `<handler>` | Te verwijderen handlernaam (vereist) |

### `wp queuety schedule run`

Activeer handmatig een plannerstap. Plaatst taken voor alle schema's die aan de beurt zijn in de wachtrij.

```bash
wp queuety schedule run
```

## Logboekopdrachten

### `wp queuety log`

Query logboekvermeldingen.

```bash
wp queuety log [--job=<id>] [--workflow=<id>] [--handler=<name>] [--event=<event>] [--since=<datetime>] [--limit=<n>] [--format=<format>]
```

| Optie | Beschrijving |
|---|---|
| `--job=<id>` | Filter op taak-ID |
| `--workflow=<id>` | Filter op workflow-ID |
| `--handler=<name>` | Filter op handlernaam |
| `--event=<event>` | Filter op gebeurtenistype (`started`, `completed`, `failed`, `buried`, `retried`, `workflow_started`, `workflow_completed`, `workflow_failed`, `workflow_paused`, `workflow_resumed`, `workflow_cancelled`, `workflow_rewound`, `workflow_forked`, `workflow_deadline_exceeded`, `debug`) |
| `--since=<datetime>` | Toon vermeldingen vanaf deze datum en tijd |
| `--limit=<n>` | Maximaal aantal vermeldingen (standaard: `50`) |
| `--format=<format>` | Uitvoerformaat: `table` (standaard), `json`, `csv`, `yaml` |

Filters worden niet gecombineerd: Queuety past het eerste aanwezige filter toe in de volgorde `--job`, `--workflow`, `--handler`, `--event`, `--since`. `--job` en `--workflow` retourneren alle vermeldingen, van oud naar nieuw, en negeren `--limit`. `--handler` en `--event` retourneren eerst de nieuwste vermeldingen. Zonder filter leest de opdracht de afgelopen 24 uur; die query en `--since` geven vermeldingen weer van oud naar nieuw, dus `--limit` behoudt de oudste vermeldingen binnen het tijdvenster.

```bash
# Logs from the last 24 hours (oldest first)
wp queuety log

# Logs for a job
wp queuety log --job=42

# Failed events
wp queuety log --event=failed --limit=100

# Logs since a specific time
wp queuety log --since="2025-03-01 00:00:00"
```

### Logboeken opschonen

`LogCommand` definieert een subopdracht `purge` (`wp queuety log purge --older-than=<days>`), maar WP-CLI registreert `wp queuety log` als één opdracht, waardoor de subopdracht niet bereikbaar is en mislukt met "Too many positional arguments: purge" ([#11](https://github.com/inline0/queuety/issues/11)). Ruim oude logboekvermeldingen op vanuit PHP:

```bash
wp eval 'echo Queuety\Queuety::purge_logs( 30 );'
```

## Webhookopdrachten

### `wp queuety webhook add`

Registreer een webhook URL voor een gebeurtenis.

```bash
wp queuety webhook add <event> <url>
```

| Optie | Beschrijving |
|---|---|
| `<event>` | Gebeurtenisnaam: `job.completed`, `job.failed`, `job.buried` of `workflow.failed` (vereist) |
| `<url>` | URL waar meldingen naartoe worden gepost (vereist) |

```bash
wp queuety webhook add job.buried https://hooks.slack.com/services/...
```

### `wp queuety webhook list`

Geef alle geregistreerde webhooks weer.

```bash
wp queuety webhook list [--format=<format>]
```

| Optie | Beschrijving |
|---|---|
| `--format=<format>` | Uitvoerformaat: `table` (standaard), `json`, `csv`, `yaml` |

### `wp queuety webhook remove`

Verwijder een webhook op basis van ID.

```bash
wp queuety webhook remove <id>
```

| Optie | Beschrijving |
|---|---|
| `<id>` | Te verwijderen webhook-ID (vereist) |
