
# Referensi CLI

Semua operasi Queuety tersedia melalui WP-CLI di namespace `wp queuety` secara bawaan.

Tentukan `QUEUETY_CLI_COMMAND` sebelum Queuety dimulai jika Anda ingin memublikasikan pohon perintah yang sama dengan root berbeda, seperti `wp themequeue`.

Untuk harness agen dan integrasi virtual-bash lainnya, jadikan halaman ini sebagai referensi bagi pengguna dan gunakan bridge PHP sebagai kontrak mesin:

- `Queuety::cli_command_map()` menampilkan katalog perintah yang dapat diserialisasi
- `Queuety::resolve_cli_command( $path, $args, $assoc_args )` mengubah masukan `wp queuety ...` yang telah diuraikan menjadi rencana eksekusi ternormalisasi yang mengutamakan callable PHP langsung

Pohon ini tidak memiliki perintah untuk mesin status; periksa mesin status melalui PHP API yang dijelaskan di [Mesin Status](https://queuety.inline0.dev/id/docs/state-machines).

## Perintah pekerjaan

### `wp queuety work`

Jalankan worker yang memproses pekerjaan.

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

| Opsi | Deskripsi |
|---|---|
| `--queue=<queue>` | Queue(s) untuk diproses, dipisahkan koma untuk urutan prioritas (bawaan: `default`) |
| `--once` | Proses paling banyak satu pekerjaan lalu keluar (juga langsung keluar jika tidak ada pekerjaan yang dapat diklaim) |
| `--workers=<n>` | Buat fork N proses worker (memerlukan ekstensi `pcntl` dan `posix`, seperti halnya `--min-workers` dan `--max-workers`) |
| `--min-workers=<n>` | Jumlah worker minimum untuk kumpulan adaptif. Memerlukan `--max-workers` |
| `--max-workers=<n>` | Jumlah worker maksimum untuk kumpulan adaptif |

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

Jika beberapa antrean ditentukan, worker mencoba mengklaim pekerjaan dari setiap antrean sesuai urutan yang tercantum. Antrean pertama yang memiliki pekerjaan tersedia akan dipilih. `--workers` menjaga kumpulan tetap. `--min-workers` dan `--max-workers` mengaktifkan penskalaan adaptif untuk permukaan perintah yang sama. Lihat [Worker](https://queuety.inline0.dev/id/docs/features/workers) untuk strategi penerapan dan [Pengelolaan Sumber Daya](https://queuety.inline0.dev/id/docs/features/resource-management) untuk model penerimaan di balik kumpulan adaptif.

### `wp queuety flush`

Proses semua pekerjaan tertunda lalu keluar.

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

| Opsi | Deskripsi |
|---|---|
| `--queue=<queue>` | Queue(s) untuk dikosongkan, dipisahkan koma untuk urutan prioritas (bawaan: `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`

Kirim pekerjaan dari baris perintah.

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

| Opsi | Deskripsi |
|---|---|
| `<handler>` | Nama handler atau kelas (wajib) |
| `--payload=<json>` | Payload JSON (bawaan: `{}`) |
| `--queue=<queue>` | Nama antrean (bawaan: `default`) |
| `--priority=<priority>` | Tingkat prioritas 0-3 (bawaan: `0`) |
| `--delay=<seconds>` | Jeda dalam detik (bawaan: `0`) |

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

### `wp queuety status`

Tampilkan statistik antrean.

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

| Opsi | Deskripsi |
|---|---|
| `--queue=<queue>` | Filter berdasarkan nama antrean |

### `wp queuety list`

Buat daftar pekerjaan.

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

| Opsi | Deskripsi |
|---|---|
| `--queue=<queue>` | Filter berdasarkan antrean |
| `--status=<status>` | Filter berdasarkan status (`pending`, `processing`, `completed`, `failed`, `buried`) |
| `--format=<format>` | Format keluaran: `table` (bawaan), `json`, `csv`, `yaml` |

### `wp queuety inspect`

Tampilkan detail lengkap pekerjaan, termasuk payload dan riwayat log.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID pekerjaan (wajib) |

### `wp queuety retry`

Coba ulang pekerjaan tertentu.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID pekerjaan yang akan dicoba ulang (wajib) |

### `wp queuety retry-buried`

Coba ulang semua pekerjaan yang dikubur.

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

### `wp queuety bury`

Kubur pekerjaan secara manual.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID pekerjaan yang akan dikubur (wajib) |

### `wp queuety delete`

Hapus pekerjaan.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID pekerjaan yang akan dihapus (wajib) |

### `wp queuety recover`

Pulihkan pekerjaan usang yang tersangkut dalam status `processing`.

```bash
wp queuety recover
```

### `wp queuety purge`

Bersihkan pekerjaan yang telah selesai.

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

| Opsi | Deskripsi |
|---|---|
| `--older-than=<days>` | Hapus pekerjaan yang lebih lama dari N hari (bawaan: `QUEUETY_RETENTION_DAYS`) |

### `wp queuety pause`

Jeda antrean agar worker melewatinya.

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

| Opsi | Deskripsi |
|---|---|
| `<queue>` | Nama antrean yang akan dijeda (wajib) |

### `wp queuety resume`

Lanjutkan antrean yang dijeda.

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

| Opsi | Deskripsi |
|---|---|
| `<queue>` | Nama antrean yang akan dilanjutkan (wajib) |

### `wp queuety metrics`

Tampilkan metrik per handler.

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

| Opsi | Deskripsi |
|---|---|
| `--minutes=<minutes>` | Jendela waktu dalam menit (default: `60`) |
| `--format=<format>` | Format output: `table` (default), `json`, `csv`, `yaml` |

### `wp queuety discover`

Temukan kelas handler di sebuah direktori.

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

| Opsi | Deskripsi |
|---|---|
| `<directory>` | Direktori untuk memindai kelas handler (wajib) |
| `<namespace>` | Prefiks namespace PSR-4 untuk direktori (wajib) |
| `--register` | Daftarkan handler yang ditemukan |

## Perintah workflow

### `wp queuety workflow status`

Tampilkan status dan progres workflow.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |

`status` menampilkan langkah saat ini, nama langkah opsional, metadata versi/hash, mode tunggu, ringkasan artefak, serta blob `WaitInfo` JSON saat workflow sedang terhalang oleh sinyal atau dependensi.

### `wp queuety workflow list`

Daftar workflow.

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

| Opsi | Deskripsi |
|---|---|
| `--status=<status>` | Filter berdasarkan status: `running`, `completed`, `failed`, `paused`, `waiting_for_signal`, `waiting_for_workflows`, `cancelled` |
| `--format=<format>` | Format output: `table` (default), `json`, `csv`, `yaml` |

Perintah ini mengembalikan paling banyak 50 workflow. Perintah ini membaca nilai `--limit`, tetapi WP-CLI saat ini menolak flag tersebut karena perintah ini tidak mendeklarasikannya ([#12](https://github.com/inline0/queuety/issues/12)); gunakan `Queuety::list_workflows()` untuk batas yang berbeda.

Tabel default menyertakan `StepName` dan `WaitMode` agar workflow yang terhalang lebih mudah dipindai.

### `wp queuety workflow retry`

Coba ulang alur kerja yang gagal dari langkah yang gagal.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |

### `wp queuety workflow approve`

Kirim sinyal persetujuan ke workflow.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `--data=<json>` | Payload objek JSON opsional |
| `--signal=<name>` | Ganti nama sinyal persetujuan (default: `approval`, yang cocok dengan `wait_for_approval()`; langkah `wait_for_decision()` secara default mendengarkan `approved`, jadi berikan `--signal=approved` di sana) |

### `wp queuety workflow reject`

Kirim sinyal penolakan ke workflow.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `--data=<json>` | Payload objek JSON opsional |
| `--signal=<name>` | Ganti nama sinyal penolakan (default: `rejected`) |

### `wp queuety workflow input`

Kirim input terstruktur ke workflow.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `--data=<json>` | Payload objek JSON opsional |
| `--signal=<name>` | Ganti nama sinyal input (default: `input`) |

### `wp queuety workflow artifacts`

Daftar artefak tersimpan untuk workflow.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `--format=<format>` | Format output: `table` (default) atau `json` |
| `--with-content` | Sertakan konten artefak dalam output |

### `wp queuety workflow artifact`

Tampilkan satu artefak tersimpan untuk workflow.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `<key>` | Kunci artefak (wajib) |

### `wp queuety workflow pause`

Jeda workflow yang sedang berjalan.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |

### `wp queuety workflow resume`

Lanjutkan alur kerja yang dijeda.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |

### `wp queuety workflow cancel`

Batalkan workflow yang belum berstatus `completed` atau `cancelled`. Dalam satu transaksi, Queuety mengatur status menjadi `cancelled`, mengubur tugas workflow yang tertunda dan sedang diproses, serta mencatat `workflow_cancelled`; setelah itu, perintah menjalankan kompensasi dan handler pembersihan yang terdaftar.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow yang akan dibatalkan (wajib) |

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

### `wp queuety workflow timeline`

Tampilkan linimasa peristiwa workflow. Menampilkan semua peristiwa langkah (dimulai, selesai, gagal) beserta stempel waktu, handler, dan durasinya.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `--limit=<limit>` | Jumlah maksimum peristiwa yang dikembalikan (default: `100`) |
| `--offset=<offset>` | Jumlah peristiwa sebelumnya yang dilewati (default: `0`) |
| `--format=<format>` | Format output: `table` (default), `json`, `csv`, `yaml` |

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

Kolom output: `ID`, `Step`, `Event`, `Handler`, `Duration_ms`, `Error`, `Created_at`.

### `wp queuety workflow state-at`

Tampilkan status publik workflow setelah langkah workflow tertentu selesai atau dilanjutkan kembali.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `<step>` | Indeks langkah, berbasis 0 (wajib) |

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

Lihat [Log Peristiwa Workflow](https://queuety.inline0.dev/id/docs/workflows/event-log) untuk detail tentang hal yang dicatat dan kasus penggunaannya.

### `wp queuety workflow rewind`

Kembalikan workflow ke langkah sebelumnya dan lanjutkan dari langkah sesudahnya. Status dipulihkan dari `state_after` log peristiwa untuk langkah yang diberikan, lalu langkah berikutnya (`<step> + 1`) dimasukkan ke antrean; langkah yang diberikan tidak dijalankan lagi.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `<step>` | Indeks langkah untuk dikembalikan, berbasis 0 (wajib) |

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

Lihat [Perjalanan Waktu](https://queuety.inline0.dev/id/docs/workflows/time-travel) untuk detailnya.

### `wp queuety workflow fork`

Buat cabang independen dari workflow yang sedang berjalan pada statusnya saat ini. Workflow cabang mendapat ID baru dan berjalan secara independen.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow yang akan dibuat cabang (wajib) |

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

Lihat [Percabangan](https://queuety.inline0.dev/id/docs/workflows/forking) untuk detailnya.

### `wp queuety workflow export`

Ekspor seluruh riwayat eksekusi workflow ke JSON. Ekspor ini mencakup baris workflow, tugas, peristiwa workflow, entri log, sinyal tersimpan, dan penantian dependensi workflow.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID workflow (wajib) |
| `--output=<file>` | Jalur file untuk menulis JSON. Default-nya stdout. |

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

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

Lihat [Ekspor dan Pemutaran Ulang](https://queuety.inline0.dev/id/docs/workflows/export-replay) untuk detail struktur JSON.

### `wp queuety workflow replay`

Putar ulang workflow yang diekspor dari file JSON. Membuat workflow baru dengan status, metadata, dan linimasa historis yang diekspor.

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

| Opsi | Deskripsi |
|---|---|
| `<file>` | Jalur ke file JSON yang diekspor (wajib) |

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

Lihat [Ekspor dan Pemutaran Ulang](https://queuety.inline0.dev/id/docs/workflows/export-replay) untuk detail.

## Perintah jadwal

### `wp queuety schedule list`

Daftar semua jadwal berulang.

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

| Opsi | Deskripsi |
|---|---|
| `--format=<format>` | Format output: `table` (default), `json`, `csv`, `yaml` |

### `wp queuety schedule add`

Tambahkan jadwal berulang.

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

| Opsi | Deskripsi |
|---|---|
| `<handler>` | Nama atau kelas handler (wajib) |
| `--every=<interval>` | Ekspresi interval (e.g. `1 hour`, `30 minutes`) |
| `--cron=<expression>` | Ekspresi Cron (e.g. `0 3 * * *`) |
| `--payload=<json>` | Payload JSON (default: `{}`) |
| `--queue=<queue>` | Nama antrean (default: `default`) |

Anda harus menentukan `--every` atau `--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`

Hapus jadwal berdasarkan nama handler.

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

| Opsi | Deskripsi |
|---|---|
| `<handler>` | Nama handler yang akan dihapus (wajib) |

### `wp queuety schedule run`

Picu tick penjadwal secara manual. Memasukkan tugas ke antrean untuk semua jadwal yang waktunya sudah tiba.

```bash
wp queuety schedule run
```

## Perintah log

### `wp queuety log`

Kueri entri log.

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

| Opsi | Deskripsi |
|---|---|
| `--job=<id>` | Filter berdasarkan ID tugas |
| `--workflow=<id>` | Filter berdasarkan ID workflow |
| `--handler=<name>` | Filter berdasarkan nama handler |
| `--event=<event>` | Filter berdasarkan jenis peristiwa (`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>` | Tampilkan entri sejak tanggal dan waktu ini |
| `--limit=<n>` | Maksimum entri yang ditampilkan (default: `50`) |
| `--format=<format>` | Format output: `table` (default), `json`, `csv`, `yaml` |

Filter tidak digabungkan: Queuety menerapkan filter pertama yang tersedia, dengan urutan `--job`, `--workflow`, `--handler`, `--event`, `--since`. `--job` dan `--workflow` mengembalikan semua entri, dari yang terlama, dan mengabaikan `--limit`. `--handler` dan `--event` mengembalikan entri terbaru terlebih dahulu. Tanpa filter, perintah membaca 24 jam terakhir; kueri tersebut dan `--since` mencantumkan entri dari yang terlama, sehingga `--limit` mempertahankan entri terlama dalam rentang waktu itu.

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

### Menghapus log

`LogCommand` mendefinisikan subperintah `purge` (`wp queuety log purge --older-than=<days>`), tetapi WP-CLI mendaftarkan `wp queuety log` sebagai satu perintah, sehingga subperintah tersebut tidak dapat diakses dan gagal dengan "Too many positional arguments: purge" ([#11](https://github.com/inline0/queuety/issues/11)). Hapus entri log lama dari PHP sebagai gantinya:

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

## Perintah webhook

### `wp queuety webhook add`

Daftarkan webhook URL untuk suatu peristiwa.

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

| Opsi | Deskripsi |
|---|---|
| `<event>` | Nama peristiwa: `job.completed`, `job.failed`, `job.buried`, atau `workflow.failed` (wajib) |
| `<url>` | URL untuk mengirim notifikasi melalui POST (wajib) |

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

### `wp queuety webhook list`

Daftar semua webhook yang terdaftar.

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

| Opsi | Deskripsi |
|---|---|
| `--format=<format>` | Format output: `table` (default), `json`, `csv`, `yaml` |

### `wp queuety webhook remove`

Hapus webhook berdasarkan ID.

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

| Opsi | Deskripsi |
|---|---|
| `<id>` | ID webhook yang akan dihapus (wajib) |
