|
1 | 1 | import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime"; |
2 | 2 | import type { ChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-runtime"; |
3 | 3 | import { resolveApprovalRequestSessionConversation } from "openclaw/plugin-sdk/approval-native-runtime"; |
4 | | -import type { DiscordExecApprovalConfig, OpenClawConfig } from "openclaw/plugin-sdk/config-runtime"; |
5 | | -import type { ExecApprovalRequest, PluginApprovalRequest } from "openclaw/plugin-sdk/infra-runtime"; |
| 4 | +import type { DiscordExecApprovalConfig } from "openclaw/plugin-sdk/config-runtime"; |
6 | 5 | import { |
7 | 6 | normalizeLowercaseStringOrEmpty, |
8 | 7 | normalizeOptionalString, |
9 | 8 | } from "openclaw/plugin-sdk/text-runtime"; |
| 9 | +export { shouldHandleDiscordApprovalRequest } from "./approval-shared.js"; |
10 | 10 | import { listDiscordAccountIds, resolveDiscordAccount } from "./accounts.js"; |
11 | 11 | import { |
12 | 12 | createChannelApproverDmTargetResolver, |
13 | 13 | createChannelNativeOriginTargetResolver, |
14 | 14 | createApproverRestrictedNativeApprovalCapability, |
15 | 15 | splitChannelApprovalCapability, |
16 | | - doesApprovalRequestMatchChannelAccount, |
17 | | - isChannelExecApprovalClientEnabledFromConfig, |
18 | | - matchesApprovalRequestFilters, |
19 | 16 | } from "./approval-runtime.js"; |
| 17 | +import { shouldHandleDiscordApprovalRequest } from "./approval-shared.js"; |
20 | 18 | import { |
21 | 19 | getDiscordExecApprovalApprovers, |
22 | 20 | isDiscordExecApprovalApprover, |
23 | 21 | isDiscordExecApprovalClientEnabled, |
24 | 22 | } from "./exec-approvals.js"; |
25 | 23 |
|
26 | | -type ApprovalRequest = ExecApprovalRequest | PluginApprovalRequest; |
27 | | - |
28 | 24 | // Legacy export kept for monitor test/support surfaces; native routing now uses |
29 | 25 | // the shared session-conversation fallback helper instead. |
30 | 26 | export function extractDiscordChannelId(sessionKey?: string | null): string | null { |
@@ -80,45 +76,6 @@ function normalizeDiscordThreadId(value?: string | number | null): string | unde |
80 | 76 | return /^\d+$/.test(normalized) ? normalized : undefined; |
81 | 77 | } |
82 | 78 |
|
83 | | -export function shouldHandleDiscordApprovalRequest(params: { |
84 | | - cfg: OpenClawConfig; |
85 | | - accountId?: string | null; |
86 | | - request: ApprovalRequest; |
87 | | - configOverride?: DiscordExecApprovalConfig | null; |
88 | | -}): boolean { |
89 | | - const config = |
90 | | - params.configOverride ?? |
91 | | - resolveDiscordAccount({ cfg: params.cfg, accountId: params.accountId }).config.execApprovals; |
92 | | - const approvers = getDiscordExecApprovalApprovers({ |
93 | | - cfg: params.cfg, |
94 | | - accountId: params.accountId, |
95 | | - configOverride: params.configOverride, |
96 | | - }); |
97 | | - if ( |
98 | | - !doesApprovalRequestMatchChannelAccount({ |
99 | | - cfg: params.cfg, |
100 | | - request: params.request, |
101 | | - channel: "discord", |
102 | | - accountId: params.accountId, |
103 | | - }) |
104 | | - ) { |
105 | | - return false; |
106 | | - } |
107 | | - if ( |
108 | | - !isChannelExecApprovalClientEnabledFromConfig({ |
109 | | - enabled: config?.enabled, |
110 | | - approverCount: approvers.length, |
111 | | - }) |
112 | | - ) { |
113 | | - return false; |
114 | | - } |
115 | | - return matchesApprovalRequestFilters({ |
116 | | - request: params.request.request, |
117 | | - agentFilter: config?.agentFilter, |
118 | | - sessionFilter: config?.sessionFilter, |
119 | | - }); |
120 | | -} |
121 | | - |
122 | 79 | function createDiscordOriginTargetResolver(configOverride?: DiscordExecApprovalConfig | null) { |
123 | 80 | return createChannelNativeOriginTargetResolver({ |
124 | 81 | channel: "discord", |
|
0 commit comments