storkit: merge 402_bug_whatsapp_and_slack_missing_rebuild_command_handler

This commit is contained in:
Timmy
2026-03-26 11:18:25 +00:00
parent e66149e07c
commit 61f6fd60a8
3 changed files with 811 additions and 231 deletions
+54
View File
@@ -842,6 +842,27 @@ async fn handle_incoming_message(
return;
}
if crate::chat::transport::matrix::rebuild::extract_rebuild_command(
message,
&ctx.bot_name,
&ctx.bot_user_id,
)
.is_some()
{
slog!("[slack] Handling rebuild command from {user} in {channel}");
let ack = "Rebuilding server… this may take a moment.";
let _ = ctx.transport.send_message(channel, ack, "").await;
let response = crate::chat::transport::matrix::rebuild::handle_rebuild(
&ctx.bot_name,
&ctx.project_root,
&ctx.agents,
)
.await;
let response = markdown_to_slack(&response);
let _ = ctx.transport.send_message(channel, &response, "").await;
return;
}
// No command matched — forward to LLM for conversational response.
slog!("[slack] No command matched, forwarding to LLM for {user} in {channel}");
handle_llm_message(ctx, channel, user, message).await;
@@ -1671,4 +1692,37 @@ mod tests {
fn slack_empty_string_unchanged() {
assert_eq!(markdown_to_slack(""), "");
}
// ── rebuild command extraction ─────────────────────────────────────
#[test]
fn rebuild_command_extracted_from_slack_message() {
let result = crate::chat::transport::matrix::rebuild::extract_rebuild_command(
"Storkit rebuild",
"Storkit",
"slack-bot",
);
assert!(result.is_some(), "'Storkit rebuild' should be recognised");
}
#[test]
fn rebuild_command_extracted_plain_no_mention() {
// Slack slash-command synthetic messages may not include a bot mention.
let result = crate::chat::transport::matrix::rebuild::extract_rebuild_command(
"rebuild",
"Storkit",
"slack-bot",
);
assert!(result.is_some(), "plain 'rebuild' should be recognised");
}
#[test]
fn non_rebuild_slack_message_not_extracted() {
let result = crate::chat::transport::matrix::rebuild::extract_rebuild_command(
"Storkit status",
"Storkit",
"slack-bot",
);
assert!(result.is_none(), "'status' should not be recognised as rebuild");
}
}