
# Artefak

Artefak memungkinkan Anda menyimpan keluaran alur kerja yang tahan lama tanpa memperbesar payload status utama alur kerja.

Artefak cocok untuk dokumen draf, rencana JSON yang diekstrak, sitasi, manifes sumber, jalur file yang dihasilkan, atau snapshot prompt dan respons yang ingin Anda periksa nanti. Ini sangat berguna untuk alur kerja agent, karena status akhir harus tetap ringkas dan mudah dibaca meskipun setiap eksekusi dapat menghasilkan banyak keluaran perantara.

## Mengapa menggunakan artefak alih-alih status alur kerja

Status alur kerja ideal untuk data publik berukuran kecil yang langsung diperlukan oleh langkah berikutnya.

Artefak lebih cocok ketika keluarannya lebih besar daripada nilai status biasa, terutama untuk pemeriksaan nanti, berguna di berbagai tampilan tinjauan atau ekspor, atau lebih tepat dimodelkan sebagai keluaran bernama daripada satu blob status besar.

## Simpan artefak untuk langkah alur kerja saat ini

Jika kode sudah berjalan di dalam langkah alur kerja, gunakan `Queuety::put_current_artifact()`:

```php
use Queuety\Queuety;
use Queuety\Step;

final class DraftBriefStep implements Step
{
    public function handle(array $state): array
    {
        $draft = [
            'title' => 'Pricing brief',
            'body' => '...',
        ];

        Queuety::put_current_artifact(
            'draft',
            $draft,
            'json',
            [ 'source' => 'planner' ],
        );

        return [ 'draft_ready' => true ];
    }

    public function config(): array
    {
        return [];
    }
}
```

Queuety secara otomatis melampirkan ID alur kerja dan indeks langkah saat ini.

## Simpan artefak dari luar alur kerja

Jika Anda sudah mengetahui ID alur kerja, gunakan `Queuety::put_artifact()`:

```php
Queuety::put_artifact(
    $workflow_id,
    'research_brief',
    "# Research Brief\n\nDone.",
    'markdown',
    metadata: [ 'reviewed_by' => 'editor@example.com' ],
);
```

## Baca kembali artefak

```php
$artifact = Queuety::workflow_artifact( $workflow_id, 'draft' );

$artifacts = Queuety::workflow_artifacts( $workflow_id );
```

Setiap catatan artefak mencakup kolom `key`, `kind`, `content`, `metadata`, `step_index`, `created_at`, dan `updated_at`. `Queuety::workflow_artifacts()` tidak menyertakan `content` kecuali Anda meneruskan `true` sebagai argumen keduanya.

## Integrasi status alur kerja

`Queuety::workflow_status()` kini menyertakan ringkasan artefak singkat:

```php
$status = Queuety::workflow_status( $workflow_id );

echo $status->artifact_count; // 2
print_r( $status->artifact_keys ); // ['draft', 'citations']
```

Dengan demikian, artefak tetap terlihat tanpa memasukkan seluruh kontennya ke dalam keluaran status.

## CLI

Daftarkan artefak untuk suatu alur kerja:

```bash
wp queuety workflow artifacts 42
```

Tampilkan satu artefak beserta kontennya:

```bash
wp queuety workflow artifact 42 draft
```

Lihat [CLI](https://queuety.inline0.dev/id/docs/cli) untuk referensi perintah lengkap.

## Ekspor dan pemutaran ulang

Artefak disertakan dalam ekspor alur kerja dan disalin ke alur kerja yang diputar ulang.

Artinya, eksekusi agent yang didukung artefak tetap dapat diperiksa bahkan saat Anda memindahkannya antarlingkungan atau membuat ulang eksekusi dari riwayat pelaksanaannya yang diekspor.
