Partager des fichiers et des rapports
Enregistrez les fichiers produits par vos tâches et transmettez leurs références entre tâches ou processus.
Publier et lire un artefact
Section intitulée « Publier et lire un artefact »Utilisez un artefact lorsqu’une tâche produit un fichier ou un rapport à conserver séparément de son résultat. publishArtifact() encode et enregistre le contenu, puis renvoie une référence que readStoredArtifact() utilise pour le relire.
Le contenu est écrit dans .outpost/storage/artifacts/<id>.blob. La référence est un petit objet JSON : id, une empreinte SHA-256 digest, size, contract, producer et parents. La lecture vérifie le contrat, la taille et l’empreinte avant de décoder.
Quand utiliser un artefact
Section intitulée « Quand utiliser un artefact »| Sortie de tâche | Artefact | |
|---|---|---|
| Contenu | JSON sans perte dans une exécution à checkpoint | JSON vérifié par un schéma, ou octets |
| Taille | Le checkpoint entier est plafonné à 16 Mio | Chaque artefact jusqu’à 16 Mio par défaut (maxBytes) |
| Lisible par | Les tâches dépendantes de la même exécution | Tout processus disposant du stockage et de la référence |
| Vérifications | Aucune validation à la lecture | Contrat, taille et empreinte à chaque lecture |
Gardez les petits résultats comme sorties de tâche. Publiez un artefact pour un rapport volumineux, un fichier binaire ou un résultat lu par un autre processus : le checkpoint ne conserve alors que la référence.
Choisir un contrat
Section intitulée « Choisir un contrat »| Contrat | Valeur | À la publication et à la lecture |
|---|---|---|
defineJsonArtifact({ name, version, schema }) | JSON sans perte | Valide avec un Standard Schema (Zod, Valibot…) ou une fonction qui lève une erreur |
defineBinaryArtifact({ name, version }) | Uint8Array | Copie les octets tels quels |
Changez version quand le format change. Un contrat dont le nom, la version ou l’encodage diffère rejette la référence avec Artifact contract mismatch.
Utiliser les artefacts dans un workflow
Section intitulée « Utiliser les artefacts dans un workflow »defineArtifactTask() prend les options habituelles d’une tâche, plus store, contract et produce(context). Sa sortie est la référence ; readArtifact() la lit depuis une tâche listée dans after.
La tâche renseigne producer à partir de l’exécution, de sa clé et de la tentative. readArtifact() rejette une référence produite par une autre exécution ou une autre tâche, puis vérifie et décode le contenu. Dans un vrai workflow, produce lit le résultat d’une tâche d’agent avec context.value().
Enregistrer la filiation
Section intitulée « Enregistrer la filiation »parents liste, dans l’ordre, les références dont un artefact est dérivé. Dans defineArtifactTask(), passez parents: (context) => [context.value(audit)].
Le producteur et les parents font partie de la référence et de son id. Passez producer ou parents à readStoredArtifact() pour rejeter une référence qui ne leur correspond pas.
Lire un artefact depuis un autre processus
Section intitulée « Lire un artefact depuis un autre processus »Une référence est du JSON ordinaire : enregistrez-la dans un checkpoint, un job de file d’attente ou un fichier. Un autre processus ouvre un stockage sur le même transport et la lit avec le même contrat.
readStoredArtifact() valide la référence elle-même : un id, un digest ou un producer modifié est rejeté.
Stocker les artefacts à distance
Section intitulée « Stocker les artefacts à distance »createArtifactStore({ transporter }) accepte n’importe quel Transport. Utilisez un transport S3 ou R2 pour partager les artefacts entre machines ; Où vivent les données décrit l’arborescence locale.
- Le contenu d’un artefact est chargé en mémoire à la publication et à la lecture. Pour choisir une limite de taille, consultez ArtifactStoreOptions.
- Un artefact publié est immuable. Outpost n’en supprime jamais : faites expirer les anciens objets avec les règles de votre stockage.
API : defineJsonArtifact · defineBinaryArtifact · createArtifactStore · publishArtifact · readStoredArtifact · defineArtifactTask · readArtifact · ArtifactReference