refactor: align same-chat approval routing

This commit is contained in:
Peter Steinberger
2026-03-30 06:52:09 +09:00
parent f16c176a4c
commit 3ec000b995
12 changed files with 141 additions and 105 deletions

View File

@@ -52,6 +52,7 @@ import {
shouldSuppressTelegramExecApprovalForwardingFallback,
} from "./exec-approval-forwarding.js";
import {
getTelegramExecApprovalApprovers,
isTelegramExecApprovalClientEnabled,
resolveTelegramExecApprovalTarget,
} from "./exec-approvals.js";
@@ -457,7 +458,10 @@ export const telegramPlugin = createChatChannelPlugin({
},
},
execApprovals: {
getInitiatingSurfaceState: () => ({ kind: "enabled" }),
getInitiatingSurfaceState: ({ cfg, accountId }) =>
getTelegramExecApprovalApprovers({ cfg, accountId }).length > 0
? { kind: "enabled" }
: { kind: "disabled" },
hasConfiguredDmRoute: ({ cfg }) => hasTelegramExecApprovalDmRoute(cfg),
shouldSuppressForwardingFallback: (params) =>
shouldSuppressTelegramExecApprovalForwardingFallback(params),

View File

@@ -221,6 +221,11 @@ describe("telegram exec approvals", () => {
expect(isTelegramExecApprovalAuthorizedSender({ cfg, senderId: "123" })).toBe(true);
});
it("accepts explicit approvers even when the richer client is disabled", () => {
const cfg = buildConfig({ enabled: false, approvers: ["123"] });
expect(isTelegramExecApprovalAuthorizedSender({ cfg, senderId: "123" })).toBe(true);
});
it("accepts active forwarded DM targets", () => {
const cfg = {
channels: { telegram: { botToken: "tok" } },

View File

@@ -126,10 +126,7 @@ export function isTelegramExecApprovalAuthorizedSender(params: {
accountId?: string | null;
senderId?: string | null;
}): boolean {
return (
(isTelegramExecApprovalClientEnabled(params) && isTelegramExecApprovalApprover(params)) ||
isTelegramExecApprovalTargetRecipient(params)
);
return isTelegramExecApprovalApprover(params) || isTelegramExecApprovalTargetRecipient(params);
}
export function resolveTelegramExecApprovalTarget(params: {