dev.superpipeline.attention.answer.v2
A person’s answer to an attention.v2, naming the wait they were shown (board, card, wait id) and referencing the card’s message. A resume carries its instruction as text. Readers ignore properties they do not know.
How it rides
Section titled “How it rides”An m.room.message whose content carries suite_event_type: "dev.superpipeline.attention.answer.v2".
Who sends it, who reads it
Section titled “Who sends it, who reads it”- Sent by SuperMessage.
- Read by AgentPod, SuperExchange.
The carrier is whichever service carries the board’s chat: AgentPod’s hub, or SuperExchange for a board that has moved to it.
Fields
Section titled “Fields”| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
msgtype |
"m.text" |
no | ||
body |
string | no | ||
suite_event_type |
"dev.superpipeline.attention.answer.v2" |
yes | ||
board_id |
string | yes | at least 1 character; at most 200 characters | |
card_id |
string | yes | at least 1 character; at most 200 characters | |
wait_id |
string | yes | at least 1 character; at most 200 characters | |
option_id |
string | yes | pattern ^(resume_here|archive|resume_at:.+)$; at most 200 characters |
|
text |
string | no | at most 16000 characters | |
m.relates_to |
object | yes | ||
m.relates_to.rel_type |
"m.reference" |
yes | ||
m.relates_to.event_id |
string | yes | at least 1 character |
The schema also states these rules across fields, as written:
{ "allOf": [ { "if": { "properties": { "option_id": { "pattern": "^resume" } } }, "then": { "required": [ "text" ], "properties": { "text": { "pattern": "\\S", "maxLength": 2730 } } } } ]}Example
Section titled “Example”From fixtures/matrix-events/examples.json, case “resume here with an instruction”:
{ "msgtype": "m.text", "body": "Resume here", "suite_event_type": "dev.superpipeline.attention.answer.v2", "board_id": "brd_7c1f", "card_id": "crd_6b40", "wait_id": "wait_0123456789abcdef", "option_id": "resume_here", "text": "The database is back; run the migrations again.", "m.relates_to": { "rel_type": "m.reference", "event_id": "$attentionEventId" }}The corpus has 3 valid cases in all:
resume at an earlier stage
{ "msgtype": "m.text", "body": "Resume at Plan", "suite_event_type": "dev.superpipeline.attention.answer.v2", "board_id": "brd_7c1f", "card_id": "crd_6b40", "wait_id": "wait_0123456789abcdef", "option_id": "resume_at:plan", "text": "Re-plan around the outage.", "m.relates_to": { "rel_type": "m.reference", "event_id": "$attentionEventId" }}archive, with no text
{ "msgtype": "m.text", "body": "Archive", "suite_event_type": "dev.superpipeline.attention.answer.v2", "board_id": "brd_7c1f", "card_id": "crd_6b40", "wait_id": "wait_0123456789abcdef", "option_id": "archive", "m.relates_to": { "rel_type": "m.reference", "event_id": "$attentionEventId" }}Refused
Section titled “Refused”Each of these must fail. The corpus says why:
- a resume with no instruction (refused by
schema) - a resume whose instruction is longer than the board takes (refused by
schema) - a forward move the card did not offer (refused by
schema) - a different wait than the one posted (refused by
recorded) - a quoted reply, not a reference (refused by
schema) - a reference to another message (refused by
recorded)
Source
Section titled “Source”- Schema:
schemas/matrix/dev.superpipeline.attention.answer.v2.json - In the package:
import schema from "@superjackfruitlabs/treaty-matrix-events/schemas/dev.superpipeline.attention.answer.v2.json" with { type: "json" };