
# Artefacten

Met artefacten kun je duurzame workflowresultaten opslaan zonder de inhoud van de hoofdstatus van de workflow te vergroten.

Ze zijn geschikt voor conceptdocumenten, geëxtraheerde JSON-plannen, citaten, bronmanifesten, gegenereerde bestandspaden of momentopnamen van prompts en antwoorden die je later wilt inspecteren. Dit is vooral handig voor agentworkflows, waarbij de uiteindelijke status klein en leesbaar moet blijven, ook al kan elke run grote tussentijdse resultaten opleveren.

## Waarom artefacten in plaats van workflowstatus

Workflowstatus is ideaal voor de kleine openbare gegevens die de volgende stap meteen nodig heeft.

Artefacten zijn beter geschikt wanneer de uitvoer groter is dan normale statuswaarden, vooral bedoeld is voor latere inspectie, nuttig is voor beoordeling of export, of simpelweg beter als benoemde uitvoer kan worden gemodelleerd dan als één groot statusobject.

## Een artefact opslaan voor de huidige workflowstap

Wanneer code al binnen een workflowstap wordt uitgevoerd, gebruik je `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 voegt automatisch de huidige workflow-ID en stapindex toe.

## Een artefact opslaan buiten de workflow

Als je de workflow-ID al weet, gebruik je `Queuety::put_artifact()`:

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

## Artefacten teruglezen

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

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

Elk artefactrecord bevat de velden `key`, `kind`, `content`, `metadata`, `step_index`, `created_at` en `updated_at`. `Queuety::workflow_artifacts()` laat `content` weg, tenzij je `true` als tweede argument meegeeft.

## Integratie met de workflowstatus

`Queuety::workflow_status()` bevat nu een beknopt artefactoverzicht:

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

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

Zo blijven artefacten zichtbaar zonder dat hun volledige inhoud in de statusuitvoer wordt opgenomen.

## CLI

Artefacten voor een workflow weergeven:

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

Eén artefact met inhoud weergeven:

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

Zie [CLI](https://queuety.inline0.dev/nl/docs/cli) voor de volledige opdrachtreferentie.

## Exports en opnieuw afspelen

Artefacten worden opgenomen in workflowexports en gekopieerd naar opnieuw afgespeelde workflows.

Zo blijven agentruns met artefacten inspecteerbaar wanneer je ze tussen omgevingen verplaatst of een run opnieuw maakt vanuit de geëxporteerde uitvoeringsgeschiedenis.
