fix: wire slack into delivery routing

This commit is contained in:
Peter Steinberger
2026-01-04 11:40:17 +00:00
parent b234d82bf3
commit ec6980cda0
4 changed files with 20 additions and 5 deletions

View File

@@ -1,6 +1,7 @@
import { sendMessageDiscord } from "../discord/send.js"; import { sendMessageDiscord } from "../discord/send.js";
import { sendMessageIMessage } from "../imessage/send.js"; import { sendMessageIMessage } from "../imessage/send.js";
import { logWebSelfId, sendMessageWhatsApp } from "../providers/web/index.js"; import { logWebSelfId, sendMessageWhatsApp } from "../providers/web/index.js";
import { sendMessageSlack } from "../slack/send.js";
import { sendMessageSignal } from "../signal/send.js"; import { sendMessageSignal } from "../signal/send.js";
import { sendMessageSlack } from "../slack/send.js"; import { sendMessageSlack } from "../slack/send.js";
import { sendMessageTelegram } from "../telegram/send.js"; import { sendMessageTelegram } from "../telegram/send.js";

View File

@@ -464,12 +464,15 @@ export async function runCronIsolatedAgentTurn(params: {
}; };
} }
const slackTarget = resolvedDelivery.to; const slackTarget = resolvedDelivery.to;
const textLimit = resolveTextChunkLimit(params.cfg, "slack");
try { try {
for (const payload of payloads) { for (const payload of payloads) {
const mediaList = const mediaList =
payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []); payload.mediaUrls ?? (payload.mediaUrl ? [payload.mediaUrl] : []);
if (mediaList.length === 0) { if (mediaList.length === 0) {
await params.deps.sendMessageSlack(slackTarget, payload.text ?? ""); for (const chunk of chunkText(payload.text ?? "", textLimit)) {
await params.deps.sendMessageSlack(slackTarget, chunk);
}
} else { } else {
let first = true; let first = true;
for (const url of mediaList) { for (const url of mediaList) {

View File

@@ -137,7 +137,14 @@ export type HookAgentPayload = {
wakeMode: "now" | "next-heartbeat"; wakeMode: "now" | "next-heartbeat";
sessionKey: string; sessionKey: string;
deliver: boolean; deliver: boolean;
channel: "last" | "whatsapp" | "telegram" | "discord" | "signal" | "imessage"; channel:
| "last"
| "whatsapp"
| "telegram"
| "discord"
| "slack"
| "signal"
| "imessage";
to?: string; to?: string;
thinking?: string; thinking?: string;
timeoutSeconds?: number; timeoutSeconds?: number;
@@ -171,6 +178,7 @@ export function normalizeAgentPayload(
channelRaw === "whatsapp" || channelRaw === "whatsapp" ||
channelRaw === "telegram" || channelRaw === "telegram" ||
channelRaw === "discord" || channelRaw === "discord" ||
channelRaw === "slack" ||
channelRaw === "signal" || channelRaw === "signal" ||
channelRaw === "imessage" || channelRaw === "imessage" ||
channelRaw === "last" channelRaw === "last"
@@ -183,7 +191,8 @@ export function normalizeAgentPayload(
if (channel === null) { if (channel === null) {
return { return {
ok: false, ok: false,
error: "channel must be last|whatsapp|telegram|discord|signal|imessage", error:
"channel must be last|whatsapp|telegram|discord|slack|signal|imessage",
}; };
} }
const toRaw = payload.to; const toRaw = payload.to;

View File

@@ -21,6 +21,7 @@ import { createSubsystemLogger } from "../logging.js";
import { getQueueSize } from "../process/command-queue.js"; import { getQueueSize } from "../process/command-queue.js";
import { webAuthExists } from "../providers/web/index.js"; import { webAuthExists } from "../providers/web/index.js";
import { defaultRuntime, type RuntimeEnv } from "../runtime.js"; import { defaultRuntime, type RuntimeEnv } from "../runtime.js";
import { sendMessageSlack } from "../slack/send.js";
import { sendMessageSignal } from "../signal/send.js"; import { sendMessageSignal } from "../signal/send.js";
import { sendMessageSlack } from "../slack/send.js"; import { sendMessageSlack } from "../slack/send.js";
import { sendMessageTelegram } from "../telegram/send.js"; import { sendMessageTelegram } from "../telegram/send.js";
@@ -391,7 +392,9 @@ async function deliverHeartbeatReply(params: {
if (channel === "slack") { if (channel === "slack") {
if (mediaUrls.length === 0) { if (mediaUrls.length === 0) {
await deps.sendSlack(to, text); for (const chunk of chunkText(text, textLimit)) {
await deps.sendSlack(to, chunk);
}
return; return;
} }
let first = true; let first = true;
@@ -402,7 +405,6 @@ async function deliverHeartbeatReply(params: {
} }
return; return;
} }
if (mediaUrls.length === 0) { if (mediaUrls.length === 0) {
await deps.sendDiscord(to, text, { verbose: false }); await deps.sendDiscord(to, text, { verbose: false });
return; return;