

























@@ -30,6 +30,9 @@ type SlackPendingDelivery = {
3030blocks: SlackBlock[];
3131};
323233+const SLACK_CONTEXT_ELEMENTS_MAX = 10;
34+const SLACK_TEXT_OBJECT_MAX = 3000;
35+3336type SlackExecApprovalConfig = NonNullable<
3437NonNullable<NonNullable<OpenClawConfig["channels"]>["slack"]>["execApprovals"]
3538>;
@@ -80,6 +83,21 @@ function buildSlackMetadataLines(metadata: readonly { label: string; value: stri
8083return metadata.map((item) => formatSlackMetadataLine(item.label, item.value));
8184}
828586+function buildSlackMetadataContextElements(metadata: readonly { label: string; value: string }[]) {
87+const lines = buildSlackMetadataLines(metadata);
88+const visibleLines =
89+lines.length > SLACK_CONTEXT_ELEMENTS_MAX
90+ ? [
91+ ...lines.slice(0, SLACK_CONTEXT_ELEMENTS_MAX - 1),
92+`…+${lines.length - (SLACK_CONTEXT_ELEMENTS_MAX - 1)} more`,
93+]
94+ : lines;
95+return visibleLines.map((line) => ({
96+type: "mrkdwn" as const,
97+text: truncateSlackMrkdwn(line, SLACK_TEXT_OBJECT_MAX),
98+}));
99+}
100+83101function resolveSlackApprovalDecisionLabel(
84102decision: "allow-once" | "allow-always" | "deny",
85103): string {
@@ -104,7 +122,7 @@ function buildSlackPendingApprovalText(view: ExecApprovalPendingView): string {
104122}
105123106124function buildSlackPendingApprovalBlocks(view: ExecApprovalPendingView): SlackBlock[] {
107-const metadataLines = buildSlackMetadataLines(view.metadata);
125+const metadataElements = buildSlackMetadataContextElements(view.metadata);
108126const interactiveBlocks =
109127resolveSlackReplyBlocks({
110128text: "",
@@ -125,14 +143,11 @@ function buildSlackPendingApprovalBlocks(view: ExecApprovalPendingView): SlackBl
125143text: `*Command*\n${buildSlackCodeBlock(truncateSlackMrkdwn(view.commandText, 2600))}`,
126144},
127145},
128- ...(metadataLines.length > 0
146+ ...(metadataElements.length > 0
129147 ? [
130148{
131149type: "context",
132-elements: metadataLines.map((line) => ({
133-type: "mrkdwn" as const,
134-text: line,
135-})),
150+elements: metadataElements,
136151} satisfies SlackBlock,
137152]
138153 : []),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。