use serde_json::Value;
use super::Verb;
pub const ATTENTION: Verb = Verb {
word: "attention",
params: &[],
summary: "everything waiting on you, across every workspace",
detail: "One row per conversation asking for you, anywhere an engine this \
box holds can see: why it is asking, what it last said, how long \
it has waited, whether a flag was raised on it and in whose \
words, and the workspace and conversation to aim an answer at. It \
takes no address, so its subject is EVERY channel this box holds: \
it asks each in turn and prints the union under the name of the \
channel each answer came from. Answer a row with `message`, \
`stop` or `seen`.",
};
pub const FLAG: Verb = Verb {
word: "flag",
params: &["workspace", "agent", "reason"],
summary: "raise an attention item on a conversation, with a reason",
detail: "It records that this conversation wants a human look, and why, \
in the raiser's own words. It changes nothing else — it does not \
stop, message or touch the conversation — and what it changed \
shows up as a `flag` on that conversation's `attention` row. The \
reason is required: a flag with no words is a row an operator \
cannot triage.",
};
pub const SEEN: Verb = Verb {
word: "seen",
params: &["workspace", "agent"],
summary: "answer a conversation's place in the attention queue",
detail: "It records what the conversation is currently asking about as \
seen, which is what takes it off the queue — the same watermarks \
a window writes simply by having that conversation open. It \
quiets what the conversation has SAID; undelivered mail is not a \
watermark and clears only when a driver reads it, and new \
evidence re-raises the row. It answers with the queue that \
remains, not with a receipt.",
};
pub fn attention() -> Value {
ATTENTION.built(Vec::new())
}
pub fn flag(workspace: String, agent: String, reason: String) -> Value {
FLAG.built(vec![workspace, agent, reason])
}
pub fn seen(workspace: String, agent: String) -> Value {
SEEN.built(vec![workspace, agent])
}