* feishu: add structured card actions and interactive approval flows * feishu: address review fixes and test-gate regressions * feishu: hold inflight card dedup until completion * feishu: restore fire-and-forget bot menu handling * feishu: format card interaction helpers * Feishu: add changelog entry for card interactions * Feishu: add changelog entry for ACP session binding
34 lines
827 B
TypeScript
34 lines
827 B
TypeScript
import type { FeishuCardInteractionEnvelope } from "./card-interaction.js";
|
|
|
|
export function buildFeishuCardButton(params: {
|
|
label: string;
|
|
value: FeishuCardInteractionEnvelope;
|
|
type?: "default" | "primary" | "danger";
|
|
}) {
|
|
return {
|
|
tag: "button",
|
|
text: {
|
|
tag: "plain_text",
|
|
content: params.label,
|
|
},
|
|
type: params.type ?? "default",
|
|
value: params.value,
|
|
};
|
|
}
|
|
|
|
export function buildFeishuCardInteractionContext(params: {
|
|
operatorOpenId: string;
|
|
chatId?: string;
|
|
expiresAt: number;
|
|
chatType?: "p2p" | "group";
|
|
sessionKey?: string;
|
|
}) {
|
|
return {
|
|
u: params.operatorOpenId,
|
|
...(params.chatId ? { h: params.chatId } : {}),
|
|
...(params.sessionKey ? { s: params.sessionKey } : {}),
|
|
e: params.expiresAt,
|
|
...(params.chatType ? { t: params.chatType } : {}),
|
|
};
|
|
}
|