
# Artefakter

Artefakter lader dig gemme holdbart output fra workflows uden at gøre workflowets primære tilstandspayload større.

De egner sig godt til dokumentudkast, udtrukne JSON-planer, kildehenvisninger, kildemanifester, genererede filstier eller øjebliksbilleder af prompter og svar, som du vil inspicere senere. Det er især nyttigt til agentworkflows, hvor den endelige tilstand skal forblive lille og overskuelig, selvom hver kørsel kan generere store mellemliggende resultater.

## Hvorfor bruge artefakter i stedet for workflowtilstand

Workflowtilstand er ideel til de små offentlige data, som næste trin har brug for med det samme.

Artefakter er bedre, når outputtet er større end almindelige tilstandsværdier, primært skal inspiceres senere, er nyttigt i forbindelse med gennemgang eller eksport eller ganske enkelt fungerer bedre som et navngivet output end som én stor tilstandsblob.

## Gem et artefakt for det aktuelle workflowtrin

Når koden allerede kører i et workflowtrin, skal du bruge `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 tilføjer automatisk det aktuelle workflow-id og trinindeks.

## Gem et artefakt uden for workflowet

Hvis du allerede kender workflow-id'et, skal du bruge `Queuety::put_artifact()`:

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

## Læs artefakter igen

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

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

Hver artefaktpost indeholder felterne `key`, `kind`, `content`, `metadata`, `step_index`, `created_at` og `updated_at`. `Queuety::workflow_artifacts()` udelader `content`, medmindre du videregiver `true` som det andet argument.

## Integration med workflowstatus

`Queuety::workflow_status()` indeholder nu et kort artefaktoverblik:

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

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

Dermed er artefakter synlige uden at deres fulde indhold føjes til statusoutputtet.

## CLI

Vis artefakter for et workflow:

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

Vis ét artefakt med indhold:

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

Se [CLI](https://queuety.inline0.dev/da/docs/cli) for hele kommandoreferencen.

## Eksport og afspilning igen

Artefakter er inkluderet i workfloweksport og kopieres til workflows, der afspilles igen.

Det betyder, at agentkørsler, der bruger artefakter, stadig kan inspiceres, når du flytter dem mellem miljøer eller genskaber en kørsel ud fra dens eksporterede kørselsoversigt.
