add optional in_reply_to field on send for conversation threading
This commit is contained in:
parent
03db764101
commit
67b47872e0
9 changed files with 90 additions and 16 deletions
|
|
@ -170,6 +170,12 @@ pub struct Message {
|
|||
pub from: String,
|
||||
pub to: String,
|
||||
pub body: String,
|
||||
/// Optional broker row-id of the message this is a reply to.
|
||||
/// Stored in the DB and echoed back on `Recv` so the dashboard can
|
||||
/// render conversation threads. `None` for messages that start a
|
||||
/// new thread. Ignored if the referenced id is unknown or out of
|
||||
/// retention — purely advisory.
|
||||
pub in_reply_to: Option<i64>,
|
||||
}
|
||||
|
||||
/// One row of a broker inbox query — what the dashboard renders in
|
||||
|
|
@ -183,6 +189,9 @@ pub struct InboxRow {
|
|||
pub from: String,
|
||||
pub body: String,
|
||||
pub at: i64,
|
||||
/// Row-id of the message this is a reply to, if any.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub in_reply_to: Option<i64>,
|
||||
}
|
||||
|
||||
/// One delivered message in a `Recv` response. The unified
|
||||
|
|
@ -207,6 +216,9 @@ pub struct DeliveredMessage {
|
|||
/// sees the warning per-message in the batch.
|
||||
#[serde(default)]
|
||||
pub redelivered: bool,
|
||||
/// Row-id of the message this is a reply to, if any.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub in_reply_to: Option<i64>,
|
||||
}
|
||||
|
||||
/// Reminder timing: either relative (wait N seconds) or absolute (at unix
|
||||
|
|
@ -298,7 +310,15 @@ pub enum CancelLooseEndKind {
|
|||
#[serde(tag = "cmd", rename_all = "snake_case")]
|
||||
pub enum AgentRequest {
|
||||
/// Send a message to another agent.
|
||||
Send { to: String, body: String },
|
||||
Send {
|
||||
to: String,
|
||||
body: String,
|
||||
/// Optional id of the message being replied to. Stored in the
|
||||
/// broker DB and returned on `Recv` so the dashboard can render
|
||||
/// threads. Ignored if the id is unknown or out of retention.
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
in_reply_to: Option<i64>,
|
||||
},
|
||||
/// Pop pending messages from this agent's inbox. Always returns
|
||||
/// a list (`Messages { messages }`) — empty when nothing's
|
||||
/// pending. `max` caps the batch size (default 1 = single-message
|
||||
|
|
@ -624,6 +644,10 @@ pub enum ManagerRequest {
|
|||
Send {
|
||||
to: String,
|
||||
body: String,
|
||||
/// Optional id of the message being replied to. Mirror of
|
||||
/// `AgentRequest::Send.in_reply_to`; see that doc.
|
||||
#[serde(default, skip_serializing_if = "Option::is_none")]
|
||||
in_reply_to: Option<i64>,
|
||||
},
|
||||
/// Same shape as `AgentRequest::Recv` — caller-tunable
|
||||
/// `wait_seconds` (capped at 60s server-side, default 30s when
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue