
# Artefakty

Artefakty umożliwiają przechowywanie trwałych wyników przepływu pracy bez powiększania głównego ładunku stanu przepływu pracy.

Sprawdzają się w przypadku roboczych dokumentów, planów JSON wyodrębnionych z danych, cytowań, manifestów źródłowych, wygenerowanych ścieżek plików oraz migawek promptów i odpowiedzi, które chcesz później przejrzeć. Jest to szczególnie przydatne w przepływach pracy agentów: stan końcowy pozostaje mały i czytelny, nawet jeśli każde uruchomienie może wygenerować duże wyniki pośrednie.

## Dlaczego artefakty zamiast stanu przepływu pracy

Stan przepływu pracy najlepiej nadaje się do przechowywania niewielkich, publicznych danych potrzebnych natychmiast w następnym kroku.

Artefakty są lepsze, gdy wynik jest większy niż zwykłe wartości stanu, służy głównie do późniejszego przeglądania, przydaje się w widokach do sprawdzania lub eksportowania albo po prostu lepiej reprezentuje go nazwany wynik niż jeden duży obiekt stanu.

## Zapisz artefakt dla bieżącego kroku przepływu pracy

Gdy kod działa już w kroku przepływu pracy, użyj `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 automatycznie przypisuje bieżący identyfikator przepływu pracy i indeks kroku.

## Zapisz artefakt spoza przepływu pracy

Jeśli znasz już identyfikator przepływu pracy, użyj `Queuety::put_artifact()`:

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

## Odczytaj artefakty

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

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

Każdy rekord artefaktu zawiera pola `key`, `kind`, `content`, `metadata`, `step_index`, `created_at` i `updated_at`. `Queuety::workflow_artifacts()` pomija `content`, chyba że przekażesz `true` jako drugi argument.

## Integracja ze statusem przepływu pracy

`Queuety::workflow_status()` zawiera teraz krótkie podsumowanie artefaktów:

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

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

Dzięki temu artefakty są widoczne, ale ich pełna zawartość nie trafia do danych wyjściowych statusu.

## CLI

Wyświetl listę artefaktów przepływu pracy:

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

Pokaż jeden artefakt wraz z zawartością:

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

Pełny opis poleceń znajdziesz w [CLI](https://queuety.inline0.dev/pl/docs/cli).

## Eksport i odtwarzanie

Artefakty są uwzględniane w eksportach przepływów pracy i kopiowane do odtwarzanych przepływów.

Dzięki temu przebiegi agentów oparte na artefaktach można nadal przeglądać, nawet po przeniesieniu ich między środowiskami lub odtworzeniu na podstawie wyeksportowanej historii wykonania.
