
# Artefakti

Artefakti omogočajo shranjevanje trajnih izhodov poteka dela, ne da bi povečali koristni tovor glavnega stanja poteka dela.

Primerni so za osnutke dokumentov, izvlečene načrte JSON, navedke, manifeste izvornih datotek, ustvarjene poti do datotek ali posnetke pozivov in odgovorov, ki jih želite pregledati pozneje. To je posebej uporabno pri potekih dela z agenti, kjer naj končno stanje ostane majhno in pregledno, čeprav lahko vsaka izvedba ustvari velike vmesne izhode.

## Zakaj artefakti namesto stanja poteka dela

Stanje poteka dela je idealno za majhne javne podatke, ki jih potrebuje naslednji korak.

Artefakti so primernejši, kadar je izhod večji od običajnih vrednosti stanja, namenjen predvsem poznejšemu pregledu, uporaben na zaslonih za pregled ali izvoz oziroma ga je preprosto bolje predstaviti kot poimenovan izhod kot pa kot velik skupek podatkov stanja.

## Shranjevanje artefakta za trenutni korak poteka dela

Če se koda že izvaja znotraj koraka poteka dela, uporabite `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 samodejno doda trenutni ID poteka dela in indeks koraka.

## Shranjevanje artefakta zunaj poteka dela

Če že poznate ID poteka dela, uporabite `Queuety::put_artifact()`:

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

## Branje shranjenih artefaktov

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

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

Vsak zapis artefakta vključuje polja `key`, `kind`, `content`, `metadata`, `step_index`, `created_at` in `updated_at`. `Queuety::workflow_artifacts()` ne vključuje `content`, razen če mu kot drugi argument posredujete `true`.

## Integracija s stanjem poteka dela

`Queuety::workflow_status()` zdaj vključuje kratek povzetek artefakta:

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

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

Tako so artefakti vidni, ne da bi se njihova celotna vsebina vključila v izpis stanja.

## CLI

Seznam artefaktov za potek dela:

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

Prikaz enega artefakta z vsebino:

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

Za celoten pregled ukazov glejte [CLI](https://queuety.inline0.dev/sl/docs/cli).

## Izvozi in ponovitve

Artefakti so vključeni v izvoze potekov dela in kopirani v ponovljene poteke dela.

To pomeni, da je mogoče izvajanja agentov z artefakti pregledovati tudi, ko jih premaknete med okolji ali znova ustvarite izvedbo iz izvožene zgodovine izvajanja.
