fix(clawsweeper): address review for clawsweeper-commit-openclaw-openclaw-587b537b4745 (1)

This commit is contained in:
openclaw-clawsweeper[bot]
2026-04-29 14:53:50 +00:00
committed by Peter Steinberger
parent 4e115c5dbb
commit 63fe2e12d7
2 changed files with 176 additions and 16 deletions

View File

@@ -1,11 +1,27 @@
export { discordPlugin } from "./src/channel.js";
export { discordSetupPlugin } from "./src/channel.setup.js";
export { inspectDiscordAccount } from "./src/account-inspect.js";
export {
handleDiscordSubagentDeliveryTarget,
handleDiscordSubagentEnded,
handleDiscordSubagentSpawning,
} from "./src/subagent-hooks.js";
export {
type DiscordCredentialStatus,
inspectDiscordAccount,
type InspectedDiscordAccount,
} from "./src/account-inspect.js";
export {
createDiscordActionGate,
listDiscordAccountIds,
listEnabledDiscordAccounts,
mergeDiscordAccountConfig,
type ResolvedDiscordAccount,
resolveDefaultDiscordAccountId,
resolveDiscordAccount,
resolveDiscordAccountConfig,
resolveDiscordMaxLinesPerMessage,
} from "./src/accounts.js";
export { tryHandleDiscordMessageActionGuildAdmin } from "./src/actions/handle-action.guild-admin.js";
export { buildDiscordComponentMessage } from "./src/components.js";
export {
listDiscordDirectoryGroupsFromConfig,
@@ -33,16 +49,38 @@ export const handleDiscordMessageAction: HandleDiscordMessageAction = (async (..
}) as HandleDiscordMessageAction;
export {
buildDiscordInteractiveComponents,
buildDiscordComponentCustomId,
buildDiscordComponentMessageFlags,
buildDiscordInteractiveComponents,
buildDiscordModalCustomId,
createDiscordFormModal,
DISCORD_COMPONENT_ATTACHMENT_PREFIX,
DISCORD_COMPONENT_CUSTOM_ID_KEY,
DISCORD_MODAL_CUSTOM_ID_KEY,
DiscordFormModal,
formatDiscordComponentEventText,
parseDiscordComponentCustomId,
parseDiscordComponentCustomIdForInteraction,
parseDiscordModalCustomId,
parseDiscordModalCustomIdForInteraction,
readDiscordComponentSpec,
resolveDiscordComponentAttachmentName,
type ComponentData,
type DiscordComponentBlock,
type DiscordComponentBuildResult,
type DiscordComponentButtonSpec,
type DiscordComponentButtonStyle,
type DiscordComponentEntry,
type DiscordComponentMessageSpec,
type DiscordComponentModalFieldType,
type DiscordComponentSectionAccessory,
type DiscordComponentSelectOption,
type DiscordComponentSelectSpec,
type DiscordComponentSelectType,
type DiscordModalEntry,
type DiscordModalFieldDefinition,
type DiscordModalFieldSpec,
type DiscordModalSpec,
} from "./src/components.js";
export {
parseDiscordComponentCustomIdForInteraction as parseDiscordComponentCustomIdForCarbon,
@@ -54,6 +92,17 @@ export {
isDiscordExecApprovalClientEnabled,
shouldSuppressLocalDiscordExecApprovalPrompt,
} from "./src/exec-approvals.js";
export type {
DiscordInteractiveHandlerContext,
DiscordInteractiveHandlerRegistration,
} from "./src/interactive-dispatch.js";
export {
type DiscordPluralKitConfig,
fetchPluralKitMessageInfo,
type PluralKitMemberInfo,
type PluralKitMessageInfo,
type PluralKitSystemInfo,
} from "./src/pluralkit.js";
export {
fetchDiscordApplicationId,
fetchDiscordApplicationSummary,
@@ -65,6 +114,7 @@ export {
type DiscordPrivilegedIntentStatus,
type DiscordProbe,
} from "./src/probe.js";
export { normalizeExplicitDiscordSessionKey } from "./src/session-key-normalization.js";
export { parseDiscordSendTarget, type SendDiscordTarget } from "./src/send-target-parsing.js";
export {
parseDiscordTarget,
@@ -74,6 +124,8 @@ export {
type DiscordTargetKind,
type DiscordTargetParseOptions,
} from "./src/targets.js";
export { collectDiscordSecurityAuditFindings } from "./src/security-audit.js";
export { resolveDiscordRuntimeGroupPolicy } from "./src/runtime-group-policy.js";
export {
DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS,
DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS,
@@ -81,3 +133,6 @@ export {
DISCORD_DEFAULT_LISTENER_TIMEOUT_MS,
mergeAbortSignals,
} from "./src/monitor/timeouts.js";
export type { DiscordSendComponents, DiscordSendEmbeds } from "./src/send.shared.js";
export type { DiscordSendResult } from "./src/send.types.js";
export type { DiscordTokenResolution } from "./src/token.js";

View File

@@ -9,6 +9,108 @@ import {
} from "./component-custom-id.js";
const API_SOURCE_PATH = resolve(dirname(fileURLToPath(import.meta.url)), "../api.ts");
const itOnSupportedNode = Number(process.versions.node.split(".")[0]) >= 22 ? it : it.skip;
const FORMER_PUBLIC_API_EXPORTS = [
"DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS",
"DISCORD_ATTACHMENT_TOTAL_TIMEOUT_MS",
"DISCORD_COMPONENT_ATTACHMENT_PREFIX",
"DISCORD_COMPONENT_CUSTOM_ID_KEY",
"DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS",
"DISCORD_DEFAULT_LISTENER_TIMEOUT_MS",
"DISCORD_MODAL_CUSTOM_ID_KEY",
"DiscordApplicationSummary",
"DiscordComponentBlock",
"DiscordComponentBuildResult",
"DiscordComponentButtonSpec",
"DiscordComponentButtonStyle",
"DiscordComponentEntry",
"DiscordComponentMessageSpec",
"DiscordComponentModalFieldType",
"DiscordComponentSectionAccessory",
"DiscordComponentSelectOption",
"DiscordComponentSelectSpec",
"DiscordComponentSelectType",
"DiscordCredentialStatus",
"DiscordFormModal",
"DiscordInteractiveHandlerContext",
"DiscordInteractiveHandlerRegistration",
"DiscordModalEntry",
"DiscordModalFieldDefinition",
"DiscordModalFieldSpec",
"DiscordModalSpec",
"DiscordPluralKitConfig",
"DiscordPrivilegedIntentStatus",
"DiscordPrivilegedIntentsSummary",
"DiscordProbe",
"DiscordSendComponents",
"DiscordSendEmbeds",
"DiscordSendResult",
"DiscordTarget",
"DiscordTargetKind",
"DiscordTargetParseOptions",
"DiscordTokenResolution",
"InspectedDiscordAccount",
"PluralKitMemberInfo",
"PluralKitMessageInfo",
"PluralKitSystemInfo",
"ResolvedDiscordAccount",
"buildDiscordComponentCustomId",
"buildDiscordComponentMessage",
"buildDiscordComponentMessageFlags",
"buildDiscordInteractiveComponents",
"buildDiscordModalCustomId",
"collectDiscordSecurityAuditFindings",
"collectDiscordStatusIssues",
"createDiscordActionGate",
"createDiscordFormModal",
"discordPlugin",
"discordSetupPlugin",
"fetchDiscordApplicationId",
"fetchDiscordApplicationSummary",
"fetchPluralKitMessageInfo",
"formatDiscordComponentEventText",
"getDiscordExecApprovalApprovers",
"handleDiscordMessageAction",
"handleDiscordSubagentDeliveryTarget",
"handleDiscordSubagentEnded",
"handleDiscordSubagentSpawning",
"inspectDiscordAccount",
"isDiscordExecApprovalApprover",
"isDiscordExecApprovalClientEnabled",
"listDiscordAccountIds",
"listDiscordDirectoryGroupsFromConfig",
"listDiscordDirectoryPeersFromConfig",
"listEnabledDiscordAccounts",
"looksLikeDiscordTargetId",
"mergeDiscordAccountConfig",
"normalizeDiscordMessagingTarget",
"normalizeDiscordOutboundTarget",
"normalizeExplicitDiscordSessionKey",
"parseApplicationIdFromToken",
"parseDiscordComponentCustomId",
"parseDiscordComponentCustomIdForCarbon",
"parseDiscordComponentCustomIdForInteraction",
"parseDiscordModalCustomId",
"parseDiscordModalCustomIdForCarbon",
"parseDiscordModalCustomIdForInteraction",
"parseDiscordTarget",
"probeDiscord",
"readDiscordComponentSpec",
"resolveDefaultDiscordAccountId",
"resolveDiscordAccount",
"resolveDiscordAccountConfig",
"resolveDiscordChannelId",
"resolveDiscordComponentAttachmentName",
"resolveDiscordGroupRequireMention",
"resolveDiscordGroupToolPolicy",
"resolveDiscordMaxLinesPerMessage",
"resolveDiscordPrivilegedIntentsFromFlags",
"resolveDiscordRuntimeGroupPolicy",
"resolveDiscordTarget",
"shouldSuppressLocalDiscordExecApprovalPrompt",
"tryHandleDiscordMessageActionGuildAdmin",
] as const;
function collectExportedNames(): Set<string> {
const source = ts.createSourceFile(
@@ -46,24 +148,27 @@ describe("discord public API barrel", () => {
it("keeps compatibility exports for existing @openclaw/discord/api.js consumers", () => {
const exportedNames = collectExportedNames();
for (const exportName of [
"DISCORD_ATTACHMENT_IDLE_TIMEOUT_MS",
"buildDiscordInteractiveComponents",
"handleDiscordMessageAction",
"isDiscordExecApprovalApprover",
"isDiscordExecApprovalClientEnabled",
"parseApplicationIdFromToken",
"parseDiscordComponentCustomIdForCarbon",
"parseDiscordSendTarget",
"parseDiscordTarget",
"probeDiscord",
"resolveDiscordChannelId",
"resolveDiscordPrivilegedIntentsFromFlags",
]) {
for (const exportName of FORMER_PUBLIC_API_EXPORTS) {
expect(exportedNames).toContain(exportName);
}
});
itOnSupportedNode("links restored runtime compatibility exports", async () => {
const api = await import("../api.js");
for (const exportName of [
"DISCORD_COMPONENT_CUSTOM_ID_KEY",
"buildDiscordComponentMessageFlags",
"createDiscordFormModal",
"handleDiscordSubagentSpawning",
"listEnabledDiscordAccounts",
"resolveDiscordRuntimeGroupPolicy",
"tryHandleDiscordMessageActionGuildAdmin",
]) {
expect(api).toHaveProperty(exportName);
}
});
it("keeps legacy Carbon component parser aliases aligned with interaction parsers", () => {
const exportedNames = collectExportedNames();
const customId = buildDiscordComponentCustomId({