
# CLI Reference

Alle Queuety-handlinger er som standard tilgængelige via WP-CLI under navnerummet `wp queuety`.

Definér `QUEUETY_CLI_COMMAND`, før Queuety starter, hvis du vil publicere det samme kommandotræ under en anden rod, f.eks. `wp themequeue`.

For agent-harnesses og andre virtual-bash-integrationer skal du bruge denne side som menneskelig reference og PHP-broen som maskinkontrakt:

- `Queuety::cli_command_map()` eksponerer det serialiserbare kommandokatalog
- `Queuety::resolve_cli_command( $path, $args, $assoc_args )` omsætter fortolket `wp queuety ...`-input til en normaliseret eksekveringsplan, der foretrækker direkte PHP-funktioner

Tilstandsmaskiner har ingen kommandoer i dette træ; undersøg dem via PHP API beskrevet i [State Machines](https://queuety.inline0.dev/da/docs/state-machines).

## Jobkommandoer

### `wp queuety work`

Start en worker, der behandler jobs.

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

| Tilvalg | Beskrivelse |
|---|---|
| `--queue=<queue>` | Queue(s) til behandling, kommasepareret efter prioritetsrækkefølge (standard: `default`) |
| `--once` | Behandl højst ét job, og afslut (afslut også med det samme, hvis intet kan tages) |
| `--workers=<n>` | Opret N workerprocesser (kræver udvidelserne `pcntl` og `posix`, ligesom `--min-workers` og `--max-workers`) |
| `--min-workers=<n>` | Mindste antal workers for en adaptiv pool. Kræver `--max-workers` |
| `--max-workers=<n>` | Største antal workers for en adaptiv 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
```

Når der angives flere køer, forsøger workeren at hente fra hver kø i den angivne rækkefølge. Den første kø med et tilgængeligt job vinder. `--workers` holder poolen fast. `--min-workers` og `--max-workers` aktiverer adaptiv skalering for den samme kommandogrænseflade. Se [Workers](https://queuety.inline0.dev/da/docs/features/workers) for udrulningsstrategier og [Resource Management](https://queuety.inline0.dev/da/docs/features/resource-management) for adgangsmodellen bag adaptive pools.

### `wp queuety flush`

Behandl alle ventende jobs, og afslut.

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

| Tilvalg | Beskrivelse |
|---|---|
| `--queue=<queue>` | Queue(s), der skal tømmes, kommasepareret efter prioritetsrækkefølge (standard: `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`

Send et job fra kommandolinjen.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<handler>` | Handlernavn eller klasse (påkrævet) |
| `--payload=<json>` | JSON-payload (standard: `{}`) |
| `--queue=<queue>` | Kønavn (standard: `default`) |
| `--priority=<priority>` | Prioritetsniveau 0-3 (standard: `0`) |
| `--delay=<seconds>` | Forsinkelse i sekunder (standard: `0`) |

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

### `wp queuety status`

Vis køstatistik.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--queue=<queue>` | Filtrer efter kønavn |

### `wp queuety list`

Vis jobs.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--queue=<queue>` | Filtrer efter kø |
| `--status=<status>` | Filtrer efter status (`pending`, `processing`, `completed`, `failed`, `buried`) |
| `--format=<format>` | Outputformat: `table` (standard), `json`, `csv`, `yaml` |

### `wp queuety inspect`

Vis alle oplysninger om et job, herunder payload og loghistorik.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Job-id (påkrævet) |

### `wp queuety retry`

Prøv et bestemt job igen.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Job-id, der skal prøves igen (påkrævet) |

### `wp queuety retry-buried`

Prøv alle parkerede jobs igen.

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

### `wp queuety bury`

Begrav et job manuelt.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Job-id, der skal begraves (påkrævet) |

### `wp queuety delete`

Slet et job.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Job-id, der skal slettes (påkrævet) |

### `wp queuety recover`

Gendan forældede jobs, der sidder fast med status `processing`.

```bash
wp queuety recover
```

### `wp queuety purge`

Ryd færdige jobs.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--older-than=<days>` | Slet jobs, der er ældre end N dage (standard: `QUEUETY_RETENTION_DAYS`) |

### `wp queuety pause`

Sæt en kø på pause, så workers springer den over.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<queue>` | Kønavn, der skal sættes på pause (påkrævet) |

### `wp queuety resume`

Genoptag en kø, der er sat på pause.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<queue>` | Kønavn, der skal genoptages (påkrævet) |

### `wp queuety metrics`

Vis målinger pr. handler.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--minutes=<minutes>` | Tidsinterval i minutter (standard: `60`) |
| `--format=<format>` | Outputformat: `table` (standard), `json`, `csv`, `yaml` |

### `wp queuety discover`

Find handlerklasser i en mappe.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<directory>` | Mappe, der skal scannes for handlerklasser (påkrævet) |
| `<namespace>` | PSR-4-navnepræfiks for mappen (påkrævet) |
| `--register` | Registrer de fundne handlere |

## Workflow-kommandoer

### `wp queuety workflow status`

Vis workflowets status og forløb.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |

`status` viser det aktuelle trin, et eventuelt trinnavn, versions-/hashmetadata, ventetilstand, en oversigt over artefakter og en `WaitInfo` JSON-blob, når workflowet aktuelt er blokeret af signaler eller afhængigheder.

### `wp queuety workflow list`

Vis workflows.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--status=<status>` | Filtrer efter status: `running`, `completed`, `failed`, `paused`, `waiting_for_signal`, `waiting_for_workflows`, `cancelled` |
| `--format=<format>` | Outputformat: `table` (standard), `json`, `csv`, `yaml` |

Kommandoen returnerer højst 50 workflows. Den læser en værdi fra `--limit`, men WP-CLI afviser i øjeblikket flaget, fordi kommandoen ikke erklærer det ([#12](https://github.com/inline0/queuety/issues/12)); brug `Queuety::list_workflows()` til at angive en anden grænse.

Standardtabellen indeholder `StepName` og `WaitMode`, så blokerede workflows er lettere at få øje på.

### `wp queuety workflow retry`

Prøv et mislykket workflow igen fra det trin, hvor det fejlede.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |

### `wp queuety workflow approve`

Send et godkendelsessignal til et workflow.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `--data=<json>` | Valgfrit JSON-objektpayload |
| `--signal=<name>` | Tilsidesæt navnet på godkendelsessignalet (standard: `approval`, som matcher `wait_for_approval()`; et `wait_for_decision()`-trin lytter som standard efter `approved`, så angiv `--signal=approved` dér) |

### `wp queuety workflow reject`

Send et afvisningssignal til et workflow.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `--data=<json>` | Valgfrit JSON-objektpayload |
| `--signal=<name>` | Tilsidesæt navnet på afvisningssignalet (standard: `rejected`) |

### `wp queuety workflow input`

Send struktureret input til et workflow.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `--data=<json>` | Valgfrit JSON-objektpayload |
| `--signal=<name>` | Tilsidesæt navnet på inputsignalet (standard: `input`) |

### `wp queuety workflow artifacts`

Vis gemte artefakter for et workflow.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `--format=<format>` | Outputformat: `table` (standard) eller `json` |
| `--with-content` | Medtag artefaktindhold i outputtet |

### `wp queuety workflow artifact`

Vis et gemt artefakt for et workflow.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `<key>` | Artefaktnøgle (påkrævet) |

### `wp queuety workflow pause`

Sæt et kørende workflow på pause.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |

### `wp queuety workflow resume`

Genoptag et workflow, der er sat på pause.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |

### `wp queuety workflow cancel`

Annuller et workflow, der hverken allerede er `completed` eller `cancelled`. I én transaktion sætter Queuety status til `cancelled`, begraver workflowets afventende og igangværende jobs og logger `workflow_cancelled`; derefter kører den kompenseringer og eventuelle registrerede oprydningshandlere.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id, der skal annulleres (påkrævet) |

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

### `wp queuety workflow timeline`

Vis workflowets hændelsesforløb. Viser alle trinshændelser (startet, fuldført, mislykket) med tidsstempler, handlere og varigheder.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `--limit=<limit>` | Højeste antal hændelser, der returneres (standard: `100`) |
| `--offset=<offset>` | Antal tidligere hændelser, der skal springes over (standard: `0`) |
| `--format=<format>` | Outputformat: `table` (standard), `json`, `csv`, `yaml` |

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

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

### `wp queuety workflow state-at`

Vis workflowets offentlige tilstand, efter at et bestemt workflowtrin er fuldført eller genoptaget.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `<step>` | Trinindeks, 0-baseret (påkrævet) |

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

Se [Workflow Event Log](https://queuety.inline0.dev/da/docs/workflows/event-log) for at få oplysninger om, hvad der registreres, og om anvendelsesmuligheder.

### `wp queuety workflow rewind`

Spol et workflow tilbage til et tidligere trin, og fortsæt fra trinnet efter det. Tilstanden gendannes fra hændelsesloggen `state_after` for det angivne trin, og det næste trin (`<step> + 1`) sættes i kø; det angivne trin køres ikke igen.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `<step>` | Trinindeks, der skal spoles tilbage til, 0-baseret (påkrævet) |

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

Se [Time Travel](https://queuety.inline0.dev/da/docs/workflows/time-travel) for at få flere oplysninger.

### `wp queuety workflow fork`

Forgren et kørende workflow til en uafhængig kopi af dets aktuelle tilstand. Det forgrenede workflow får et nyt id og fortsætter uafhængigt.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id, der skal forgrenes (påkrævet) |

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

Se [Forking](https://queuety.inline0.dev/da/docs/workflows/forking) for at få flere oplysninger.

### `wp queuety workflow export`

Eksportér et workflows fulde udførelseshistorik til JSON. Omfatter workflowrækken, jobs, workflowhændelser, logposter, gemte signaler og ventende workflowafhængigheder.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Workflow-id (påkrævet) |
| `--output=<file>` | Filsti, hvor JSON skal skrives. Standard er stdout. |

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

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

Se [Export and Replay](https://queuety.inline0.dev/da/docs/workflows/export-replay) for at få oplysninger om strukturen i JSON.

### `wp queuety workflow replay`

Afspil et eksporteret workflow fra en JSON-fil. Opretter et nyt workflow med den eksporterede tilstand, metadata og historiske tidslinje.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<file>` | Sti til den eksporterede JSON-fil (påkrævet) |

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

Se [Eksport og afspilning](https://queuety.inline0.dev/da/docs/workflows/export-replay) for detaljer.

## Planlægningskommandoer

### `wp queuety schedule list`

Vis alle tilbagevendende tidsplaner.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--format=<format>` | Outputformat: `table` (standard), `json`, `csv`, `yaml` |

### `wp queuety schedule add`

Tilføj en tilbagevendende tidsplan.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<handler>` | Handlernavn eller klasse (påkrævet) |
| `--every=<interval>` | Intervaludtryk (e.g. `1 hour`, `30 minutes`) |
| `--cron=<expression>` | Cron-udtryk (e.g. `0 3 * * *`) |
| `--payload=<json>` | JSON-payload (standard: `{}`) |
| `--queue=<queue>` | Kønavn (standard: `default`) |

Du skal angive enten `--every` eller `--cron`.

```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`

Fjern en tidsplan efter handlernavn.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<handler>` | Handlernavn, der skal fjernes (påkrævet) |

### `wp queuety schedule run`

Udløs et planlægningsinterval manuelt. Sætter jobs i kø for alle tidsplaner, der skal afvikles.

```bash
wp queuety schedule run
```

## Logkommandoer

### `wp queuety log`

Forespørg logposter.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--job=<id>` | Filtrer efter job-id |
| `--workflow=<id>` | Filtrer efter workflow-id |
| `--handler=<name>` | Filtrer efter handlernavn |
| `--event=<event>` | Filtrer efter hændelsestype (`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>` | Vis poster fra og med dette tidspunkt |
| `--limit=<n>` | Maksimalt antal poster, der vises (standard: `50`) |
| `--format=<format>` | Outputformat: `table` (standard), `json`, `csv`, `yaml` |

Filtre kombineres ikke: Queuety anvender det første filter, der er angivet, i rækkefølgen `--job`, `--workflow`, `--handler`, `--event`, `--since`. `--job` og `--workflow` returnerer alle poster med de ældste først og ignorerer `--limit`. `--handler` og `--event` returnerer de nyeste poster først. Uden et filter læser kommandoen de seneste 24 timer; den forespørgsel og `--since` viser poster med de ældste først, så `--limit` beholder de ældste poster i tidsintervallet.

```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"
```

### Sletning af logposter

`LogCommand` definerer en underkommando `purge` (`wp queuety log purge --older-than=<days>`), men WP-CLI registrerer `wp queuety log` som én enkelt kommando, så underkommandoen ikke kan nås og fejler med "Too many positional arguments: purge" ([#11](https://github.com/inline0/queuety/issues/11)). Ryd i stedet gamle logposter fra PHP:

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

## Webhook-kommandoer

### `wp queuety webhook add`

Registrer en webhook URL for en hændelse.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<event>` | Hændelsesnavn: `job.completed`, `job.failed`, `job.buried` eller `workflow.failed` (påkrævet) |
| `<url>` | URL, som POST-notifikationer skal sendes til (påkrævet) |

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

### `wp queuety webhook list`

Vis alle registrerede webhooks.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `--format=<format>` | Outputformat: `table` (standard), `json`, `csv`, `yaml` |

### `wp queuety webhook remove`

Fjern en webhook efter id.

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

| Valgmulighed | Beskrivelse |
|---|---|
| `<id>` | Webhook-id, der skal fjernes (påkrævet) |
