The slack-primitive spec (specs/slack-primitive.md) defines askQuestion as a
step that posts a question to Slack and resumes when a human replies. The
primitive itself emits the question/answer pair on the step output, but
persistence belongs to the workflow runner.
We need to extend the workflow run record schema to store, per askQuestion step:
- channel, questionTs, questionText
- replierUserId, replyText, replyTs
- matched choice / regex groups (if any)
- timeout outcome (if step failed via human_no_response)
This unblocks post-mortems where we need to see what the agent asked and
how the human answered, without depending on Slack's own retention (messages
can be edited/deleted and aren't queryable from the run record).
Out of scope for the slack-primitive package itself — schema work lives in
the runner. Tracked as a follow-up to v1 of the primitive.
The slack-primitive spec (specs/slack-primitive.md) defines
askQuestionas astep that posts a question to Slack and resumes when a human replies. The
primitive itself emits the question/answer pair on the step output, but
persistence belongs to the workflow runner.
We need to extend the workflow run record schema to store, per askQuestion step:
This unblocks post-mortems where we need to see what the agent asked and
how the human answered, without depending on Slack's own retention (messages
can be edited/deleted and aren't queryable from the run record).
Out of scope for the slack-primitive package itself — schema work lives in
the runner. Tracked as a follow-up to v1 of the primitive.