Spaces:
Paused
Paused
| import type { | |
| ChannelThreadingContext, | |
| ChannelThreadingToolContext, | |
| } from "../channels/plugins/types.js"; | |
| import type { OpenClawConfig } from "../config/config.js"; | |
| import { resolveSlackAccount, resolveSlackReplyToMode } from "./accounts.js"; | |
| export function buildSlackThreadingToolContext(params: { | |
| cfg: OpenClawConfig; | |
| accountId?: string | null; | |
| context: ChannelThreadingContext; | |
| hasRepliedRef?: { value: boolean }; | |
| }): ChannelThreadingToolContext { | |
| const account = resolveSlackAccount({ | |
| cfg: params.cfg, | |
| accountId: params.accountId, | |
| }); | |
| const configuredReplyToMode = resolveSlackReplyToMode(account, params.context.ChatType); | |
| const effectiveReplyToMode = params.context.ThreadLabel ? "all" : configuredReplyToMode; | |
| const threadId = params.context.MessageThreadId ?? params.context.ReplyToId; | |
| return { | |
| currentChannelId: params.context.To?.startsWith("channel:") | |
| ? params.context.To.slice("channel:".length) | |
| : undefined, | |
| currentThreadTs: threadId != null ? String(threadId) : undefined, | |
| replyToMode: effectiveReplyToMode, | |
| hasRepliedRef: params.hasRepliedRef, | |
| }; | |
| } | |