Plan
A collapsible, step-by-step agent plan, with a status per task.
plan groups a sequence of tasks under one shared goal, each with its own status. It’s a Slack
block documented for agent surfaces,
newer than the version of @slack/types this library depends on, so its TypeScript type is the field
reference here. It’s read-only: expanding a plan doesn’t emit an action.
Click the pill to expand the plan and see each task’s details, output, and sources.
Fields
typestring
Always `plan`.
stringtitlestring
The plan's shared goal, shown in the collapsed pill.
stringtasks?PlanTask[]
The steps, in order. An invalid or missing value renders an empty plan.
PlanTask[]PlanTask
A plan’s tasks share the same shape as a standalone task card:
task_idstring
Identifies the task.
stringtitlestring
The task's one-line summary.
stringstatus"pending" | "in_progress" | "complete" | "error"
The task's state. The status icon distinguishes `complete` and `in_progress`; `pending` and `error` currently render the same dashed-circle icon.
"pending" | "in_progress" | "complete" | "error"details?RichTextBlock
What the task is doing, shown when the plan is expanded.
RichTextBlockoutput?RichTextBlock
The task's result, shown below `details`.
RichTextBlocksources?{ type: "url"; url: string; text?: string }[]
Links shown under the task. `text` defaults to the raw URL.
{ type: "url"; url: string; text?: string }[]The plan’s own collapsed pill shows one aggregate icon: in_progress if any task is in progress, else
pending if any task is pending, else complete.
Examples
Every task status
The preview above covers complete, in_progress, and pending in one plan, plus optional
details, output, and sources on the first two tasks. All three fields are safe to omit, as the
third task shows.