Docs / Plans and tasks /
ArtifactStack
Stacked list of artifacts produced by a task — files, links, or structured outputs.
Preview
Generated artifacts3
migration.sql
DeployAgent· 14:06:12· 2.1 KB
test-report.json
TestAgent· 14:05:44· 18.4 KB· 97% conf.
coverage-summary.html
TestAgent· 14:05:51· 64.0 KB
Variants
Empty state
No artifacts yet
ArtifactPreviewRow — ready
schema-diff.patch
MigrationAgent· 14:03:22· 4.2 KB
ArtifactPreviewRow — rejected
validation-output.json
ValidatorAgent· 14:04:00· 1.1 KB
ArtifactPreviewRow — stale
performance-baseline.png
BenchmarkAgent· 2026-06-10· 38.7 KB
Props
| Prop | Type | Description |
|---|---|---|
| artifacts* | ArtifactStackItem[] | Ordered list of artifact rows. Each item extends ArtifactPreviewRowProps plus a required id. |
| title | string | Optional section title with a count badge on the right. |
| onOpen | (id: string) => void | Global open handler applied to every row that doesn't supply its own. |
| onDownload | (id: string) => void | Global download handler applied to every row that doesn't supply its own. |
| onCopy | (id: string) => void | Global copy handler applied to every row that doesn't supply its own. |
* required.
Usage
import { ArtifactStack } from "@/components/tasks/artifact-stack";
<ArtifactStack
title="Generated artifacts"
artifacts={[
{ id: "1", type: "file", title: "migration.sql", source: "DeployAgent", size: "2.1 KB", state: "ready" },
{ id: "2", type: "json", title: "test-report.json", source: "TestAgent", size: "18.4 KB", confidence: 0.97, state: "ready" },
]}
onOpen={(id) => console.log("open", id)}
onDownload={(id) => console.log("download", id)}
onCopy={(id) => console.log("copy", id)}
/>