
# Artefakty

Artefakty umožňujú ukladať odolné výstupy pracovného postupu bez zbytočného zväčšovania hlavnej časti údajov o jeho stave.

Hodia sa pre návrhy dokumentov, extrahované plány JSON, citácie, manifesty zdrojov, cesty k vygenerovaným súborom alebo snímky výziev a odpovedí, ktoré si chcete neskôr prezrieť. Je to obzvlášť užitočné pri pracovných postupoch agentov, kde má výsledný stav zostať stručný a prehľadný, hoci každý beh môže vytvoriť veľké množstvo priebežných výstupov.

## Prečo použiť artefakty namiesto stavu pracovného postupu

Stav pracovného postupu je ideálny pre malé verejné údaje, ktoré nasledujúci krok potrebuje okamžite.

Artefakty sú vhodnejšie, keď je výstup väčší než bežné hodnoty stavu, slúži najmä na neskoršiu kontrolu, je užitočný pri kontrole alebo exporte, prípadne sa lepšie modeluje ako pomenovaný výstup než ako jeden veľký blok údajov stavu.

## Uloženie artefaktu pre aktuálny krok pracovného postupu

Ak kód už beží v rámci kroku pracovného postupu, použite `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 automaticky pripojí aktuálne ID pracovného postupu a index kroku.

## Uloženie artefaktu mimo pracovného postupu

Ak už poznáte ID pracovného postupu, použite `Queuety::put_artifact()`:

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

## Načítanie artefaktov

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

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

Každý záznam artefaktu obsahuje polia `key`, `kind`, `content`, `metadata`, `step_index`, `created_at` a `updated_at`. `Queuety::workflow_artifacts()` vynechá `content`, pokiaľ ho neodovzdáte ako druhý argument `true`.

## Integrácia so stavom pracovného postupu

`Queuety::workflow_status()` teraz obsahuje stručný súhrn artefaktov:

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

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

Vďaka tomu sú artefakty viditeľné bez načítania celého ich obsahu do výstupu stavu.

## CLI

Zoznam artefaktov pracovného postupu:

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

Zobrazenie jedného artefaktu aj s obsahom:

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

Úplný prehľad príkazov nájdete v časti [CLI](https://queuety.inline0.dev/sk/docs/cli).

## Exporty a opätovné prehratie

Artefakty sú súčasťou exportov pracovných postupov a kopírujú sa do opätovne prehratých pracovných postupov.

To znamená, že behy agentov s artefaktmi zostávajú kontrolovateľné aj po presune medzi prostrediami alebo po obnovení behu z exportovanej histórie vykonávania.
