refactor: narrow messaging public api barrels

This commit is contained in:
Peter Steinberger
2026-04-27 20:34:28 +01:00
parent a20f97f728
commit 1fc19ffe11
5 changed files with 575 additions and 70 deletions

View File

@@ -1,2 +1,2 @@
7178659d932136074130426d08e596738a991c6812b2494149427d1f822f1be8 plugin-sdk-api-baseline.json
fc1e3ab9f21b6f7b6a55498cf5ee322d62dccf4c23322f0ba27559e55a59f901 plugin-sdk-api-baseline.jsonl
9a9970607c4ee25d8b493ea1bb1ecef939dc11330c16188251bd69eee7ab6b2d plugin-sdk-api-baseline.json
e37f1ec7f6a9b19466ab09935f713890f375cc6c8d67647dca701140a989f5f4 plugin-sdk-api-baseline.jsonl

View File

@@ -5,25 +5,110 @@ export {
handleDiscordSubagentEnded,
handleDiscordSubagentSpawning,
} from "./src/subagent-hooks.js";
export * from "./src/account-inspect.js";
export * from "./src/accounts.js";
export * from "./src/actions/handle-action.guild-admin.js";
export * from "./src/actions/handle-action.js";
export * from "./src/components.js";
export * from "./src/directory-config.js";
export * from "./src/exec-approvals.js";
export * from "./src/group-policy.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 { handleDiscordMessageAction } from "./src/actions/handle-action.js";
export {
buildDiscordComponentCustomId,
buildDiscordComponentMessage,
buildDiscordComponentMessageFlags,
buildDiscordInteractiveComponents,
buildDiscordModalCustomId,
createDiscordFormModal,
DISCORD_COMPONENT_ATTACHMENT_PREFIX,
DISCORD_COMPONENT_CUSTOM_ID_KEY,
DISCORD_MODAL_CUSTOM_ID_KEY,
type DiscordComponentBlock,
type DiscordComponentBuildResult,
type DiscordComponentButtonSpec,
type DiscordComponentButtonStyle,
type DiscordComponentEntry,
type DiscordComponentMessageSpec,
type DiscordComponentModalFieldType,
type DiscordComponentSectionAccessory,
type DiscordComponentSelectOption,
type DiscordComponentSelectSpec,
type DiscordComponentSelectType,
DiscordFormModal,
type DiscordModalEntry,
type DiscordModalFieldDefinition,
type DiscordModalFieldSpec,
type DiscordModalSpec,
formatDiscordComponentEventText,
parseDiscordComponentCustomId,
parseDiscordComponentCustomIdForCarbon,
parseDiscordModalCustomId,
parseDiscordModalCustomIdForCarbon,
readDiscordComponentSpec,
resolveDiscordComponentAttachmentName,
} from "./src/components.js";
export {
listDiscordDirectoryGroupsFromConfig,
listDiscordDirectoryPeersFromConfig,
} from "./src/directory-config.js";
export {
getDiscordExecApprovalApprovers,
isDiscordExecApprovalApprover,
isDiscordExecApprovalClientEnabled,
shouldSuppressLocalDiscordExecApprovalPrompt,
} from "./src/exec-approvals.js";
export {
resolveDiscordGroupRequireMention,
resolveDiscordGroupToolPolicy,
} from "./src/group-policy.js";
export type {
DiscordInteractiveHandlerContext,
DiscordInteractiveHandlerRegistration,
} from "./src/interactive-dispatch.js";
export * from "./src/normalize.js";
export * from "./src/pluralkit.js";
export * from "./src/probe.js";
export * from "./src/session-key-normalization.js";
export * from "./src/status-issues.js";
export * from "./src/targets.js";
export * from "./src/security-audit.js";
export {
looksLikeDiscordTargetId,
normalizeDiscordMessagingTarget,
normalizeDiscordOutboundTarget,
} from "./src/normalize.js";
export {
type DiscordPluralKitConfig,
fetchPluralKitMessageInfo,
type PluralKitMemberInfo,
type PluralKitMessageInfo,
type PluralKitSystemInfo,
} from "./src/pluralkit.js";
export {
type DiscordApplicationSummary,
type DiscordPrivilegedIntentsSummary,
type DiscordPrivilegedIntentStatus,
type DiscordProbe,
fetchDiscordApplicationId,
fetchDiscordApplicationSummary,
parseApplicationIdFromToken,
probeDiscord,
resolveDiscordPrivilegedIntentsFromFlags,
} from "./src/probe.js";
export { normalizeExplicitDiscordSessionKey } from "./src/session-key-normalization.js";
export { collectDiscordStatusIssues } from "./src/status-issues.js";
export {
type DiscordTarget,
type DiscordTargetKind,
type DiscordTargetParseOptions,
parseDiscordTarget,
resolveDiscordChannelId,
resolveDiscordTarget,
} from "./src/targets.js";
export { collectDiscordSecurityAuditFindings } from "./src/security-audit.js";
export { resolveDiscordRuntimeGroupPolicy } from "./src/runtime-group-policy.js";
export {
DISCORD_DEFAULT_INBOUND_WORKER_TIMEOUT_MS,

View File

@@ -1,26 +1,114 @@
export { slackPlugin } from "./src/channel.js";
export { slackSetupPlugin } from "./src/channel.setup.js";
export * from "./src/account-inspect.js";
export * from "./src/accounts.js";
export * from "./src/action-threading.js";
export * from "./src/actions.js";
export * from "./src/blocks-input.js";
export * from "./src/blocks-render.js";
export * from "./src/channel-type.js";
export * from "./src/client.js";
export * from "./src/directory-config.js";
export * from "./src/http/index.js";
export {
type InspectedSlackAccount,
inspectSlackAccount,
type SlackCredentialStatus,
} from "./src/account-inspect.js";
export {
listEnabledSlackAccounts,
listSlackAccountIds,
mergeSlackAccountConfig,
resolveDefaultSlackAccountId,
type ResolvedSlackAccount,
resolveSlackAccount,
resolveSlackReplyToMode,
type SlackTokenSource,
} from "./src/accounts.js";
export { resolveSlackAutoThreadId } from "./src/action-threading.js";
export {
deleteSlackMessage,
downloadSlackFile,
editSlackMessage,
getSlackMemberInfo,
listSlackEmojis,
listSlackPins,
listSlackReactions,
pinSlackMessage,
reactSlackMessage,
readSlackMessages,
removeOwnSlackReactions,
removeSlackReaction,
sendSlackMessage,
type SlackActionClientOpts,
type SlackMessageSummary,
type SlackPin,
unpinSlackMessage,
} from "./src/actions.js";
export {
parseSlackBlocksInput,
SLACK_MAX_BLOCKS,
validateSlackBlocksArray,
} from "./src/blocks-input.js";
export {
buildSlackInteractiveBlocks,
buildSlackPresentationBlocks,
type SlackBlock,
} from "./src/blocks-render.js";
export {
__resetSlackChannelTypeCacheForTest,
resolveSlackChannelType,
} from "./src/channel-type.js";
export {
clearSlackWriteClientCacheForTest,
createSlackTokenCacheKey,
createSlackWebClient,
createSlackWriteClient,
getSlackWriteClient,
resolveSlackWebClientOptions,
resolveSlackWriteClientOptions,
SLACK_DEFAULT_RETRY_OPTIONS,
SLACK_WRITE_RETRY_OPTIONS,
} from "./src/client.js";
export {
listSlackDirectoryGroupsFromConfig,
listSlackDirectoryPeersFromConfig,
} from "./src/directory-config.js";
export {
handleSlackHttpRequest,
normalizeSlackWebhookPath,
registerSlackHttpHandler,
type SlackHttpRequestHandler,
} from "./src/http/index.js";
export type {
SlackInteractiveHandlerContext,
SlackInteractiveHandlerRegistration,
} from "./src/interactive-dispatch.js";
export * from "./src/interactive-replies.js";
export * from "./src/message-actions.js";
export * from "./src/group-policy.js";
export * from "./src/monitor/allow-list.js";
export * from "./src/probe.js";
export * from "./src/security-audit.js";
export * from "./src/sent-thread-cache.js";
export * from "./src/targets.js";
export * from "./src/threading-tool-context.js";
export {
compileSlackInteractiveReplies,
isSlackInteractiveRepliesEnabled,
parseSlackOptionsLine,
} from "./src/interactive-replies.js";
export { extractSlackToolSend, listSlackMessageActions } from "./src/message-actions.js";
export {
resolveSlackGroupRequireMention,
resolveSlackGroupToolPolicy,
} from "./src/group-policy.js";
export {
allowListMatches,
normalizeAllowList,
normalizeAllowListLower,
normalizeSlackAllowOwnerEntry,
normalizeSlackSlug,
resolveSlackAllowListMatch,
resolveSlackUserAllowed,
type SlackAllowListMatch,
} from "./src/monitor/allow-list.js";
export { probeSlack, type SlackProbe } from "./src/probe.js";
export { collectSlackSecurityAuditFindings } from "./src/security-audit.js";
export {
clearSlackThreadParticipationCache,
hasSlackThreadParticipation,
recordSlackThreadParticipation,
} from "./src/sent-thread-cache.js";
export {
looksLikeSlackTargetId,
normalizeSlackMessagingTarget,
parseSlackTarget,
resolveSlackChannelId,
type SlackTarget,
type SlackTargetKind,
type SlackTargetParseOptions,
} from "./src/targets.js";
export { buildSlackThreadingToolContext } from "./src/threading-tool-context.js";
export { resolveSlackRuntimeGroupPolicy } from "./src/monitor/provider.js";

View File

@@ -1,37 +1,184 @@
export { telegramPlugin } from "./src/channel.js";
export { telegramSetupPlugin } from "./src/channel.setup.js";
export * from "./src/account-inspect.js";
export * from "./src/accounts.js";
export * from "./src/action-threading.js";
export * from "./src/allow-from.js";
export * from "./src/api-fetch.js";
export * from "./src/bot/helpers.js";
export * from "./src/command-config.js";
export {
type InspectedTelegramAccount,
inspectTelegramAccount,
type TelegramCredentialStatus,
} from "./src/account-inspect.js";
export {
createTelegramActionGate,
listEnabledTelegramAccounts,
listTelegramAccountIds,
mergeTelegramAccountConfig,
resetMissingDefaultWarnFlag,
resolveDefaultTelegramAccountId,
type ResolvedTelegramAccount,
resolveTelegramAccount,
resolveTelegramAccountConfig,
resolveTelegramMediaRuntimeOptions,
resolveTelegramPollActionGateState,
type TelegramMediaRuntimeOptions,
type TelegramPollActionGateState,
} from "./src/accounts.js";
export { resolveTelegramAutoThreadId } from "./src/action-threading.js";
export {
isNumericTelegramSenderUserId,
isNumericTelegramUserId,
normalizeTelegramAllowFromEntry,
} from "./src/allow-from.js";
export {
fetchTelegramChatId,
lookupTelegramChatId,
resolveTelegramChatLookupFetch,
} from "./src/api-fetch.js";
export {
buildGroupLabel,
buildSenderLabel,
buildSenderName,
buildTelegramGroupFrom,
buildTelegramGroupPeerId,
buildTelegramParentPeer,
buildTelegramRoutingTarget,
buildTelegramThreadParams,
buildTypingThreadParams,
describeReplyTarget,
expandTextLinks,
extractTelegramForumFlag,
extractTelegramLocation,
getTelegramTextParts,
hasBotMention,
isBinaryContent,
normalizeForwardedContext,
resetTelegramForumFlagCacheForTest,
resolveTelegramDirectPeerId,
resolveTelegramForumFlag,
resolveTelegramForumThreadId,
resolveTelegramGroupAllowFromContext,
resolveTelegramMediaPlaceholder,
resolveTelegramReplyId,
resolveTelegramStreamMode,
resolveTelegramThreadSpec,
type TelegramForwardedContext,
type TelegramReplyTarget,
type TelegramTextEntity,
type TelegramThreadSpec,
withResolvedTelegramForumFlag,
} from "./src/bot/helpers.js";
export {
normalizeTelegramCommandDescription,
normalizeTelegramCommandName,
resolveTelegramCustomCommands,
TELEGRAM_COMMAND_NAME_PATTERN,
type TelegramCustomCommandInput,
type TelegramCustomCommandIssue,
} from "./src/command-config.js";
export {
buildCommandsPaginationKeyboard,
buildTelegramModelsProviderChannelData,
} from "./src/command-ui.js";
export * from "./src/directory-config.js";
export * from "./src/exec-approval-forwarding.js";
export * from "./src/exec-approvals.js";
export * from "./src/group-policy.js";
export {
listTelegramDirectoryGroupsFromConfig,
listTelegramDirectoryPeersFromConfig,
} from "./src/directory-config.js";
export {
buildTelegramExecApprovalPendingPayload,
shouldSuppressTelegramExecApprovalForwardingFallback,
} from "./src/exec-approval-forwarding.js";
export {
getTelegramExecApprovalApprovers,
isTelegramExecApprovalApprover,
isTelegramExecApprovalAuthorizedSender,
isTelegramExecApprovalClientEnabled,
isTelegramExecApprovalHandlerConfigured,
isTelegramExecApprovalTargetRecipient,
resolveTelegramExecApprovalConfig,
resolveTelegramExecApprovalTarget,
shouldEnableTelegramExecApprovalButtons,
shouldHandleTelegramExecApprovalRequest,
shouldInjectTelegramExecApprovalButtons,
shouldSuppressLocalTelegramExecApprovalPrompt,
} from "./src/exec-approvals.js";
export {
resolveTelegramGroupRequireMention,
resolveTelegramGroupToolPolicy,
} from "./src/group-policy.js";
export type {
TelegramInteractiveHandlerContext,
TelegramInteractiveHandlerRegistration,
} from "./src/interactive-dispatch.js";
export * from "./src/inline-buttons.js";
export * from "./src/model-buttons.js";
export * from "./src/normalize.js";
export * from "./src/outbound-adapter.js";
export * from "./src/outbound-params.js";
export * from "./src/probe.js";
export * from "./src/reaction-level.js";
export * from "./src/security-audit.js";
export * from "./src/sticker-cache.js";
export * from "./src/status-issues.js";
export * from "./src/targets.js";
export * from "./src/topic-conversation.js";
export * from "./src/update-offset-store.js";
export {
isTelegramInlineButtonsEnabled,
resolveTelegramInlineButtonsConfigScope,
resolveTelegramInlineButtonsScope,
resolveTelegramInlineButtonsScopeFromCapabilities,
resolveTelegramTargetChatType,
} from "./src/inline-buttons.js";
export {
buildBrowseProvidersButton,
buildModelSelectionCallbackData,
buildModelsKeyboard,
buildProviderKeyboard,
type ButtonRow,
calculateTotalPages,
getModelsPageSize,
type ModelsKeyboardParams,
type ParsedModelCallback,
parseModelCallbackData,
type ProviderInfo,
resolveModelSelection,
type ResolveModelSelectionResult,
} from "./src/model-buttons.js";
export { looksLikeTelegramTargetId, normalizeTelegramMessagingTarget } from "./src/normalize.js";
export {
sendTelegramPayloadMessages,
TELEGRAM_TEXT_CHUNK_LIMIT,
telegramOutbound,
} from "./src/outbound-adapter.js";
export {
normalizeTelegramReplyToMessageId,
parseTelegramReplyToMessageId,
parseTelegramThreadId,
} from "./src/outbound-params.js";
export {
probeTelegram,
resetTelegramProbeFetcherCacheForTests,
type TelegramProbe,
type TelegramProbeOptions,
} from "./src/probe.js";
export {
type ResolvedReactionLevel,
resolveTelegramReactionLevel,
type TelegramReactionLevel,
} from "./src/reaction-level.js";
export { collectTelegramSecurityAuditFindings } from "./src/security-audit.js";
export {
type CachedSticker,
cacheSticker,
describeStickerImage,
type DescribeStickerParams,
getAllCachedStickers,
getCachedSticker,
getCacheStats,
searchStickers,
} from "./src/sticker-cache.js";
export { collectTelegramStatusIssues } from "./src/status-issues.js";
export {
isNumericTelegramChatId,
normalizeTelegramChatId,
normalizeTelegramLookupTarget,
parseTelegramTarget,
stripTelegramInternalPrefixes,
type TelegramTarget,
} from "./src/targets.js";
export {
type ParsedTelegramTopicConversation,
parseTelegramTopicConversation,
} from "./src/topic-conversation.js";
export {
deleteTelegramUpdateOffset,
readTelegramUpdateOffset,
writeTelegramUpdateOffset,
} from "./src/update-offset-store.js";
export type { TelegramButtonStyle, TelegramInlineButtons } from "./src/button-types.js";
export type { StickerMetadata } from "./src/bot/types.js";
export type { TelegramTokenResolution } from "./src/token.js";

View File

@@ -1,13 +1,202 @@
export { whatsappPlugin } from "./src/channel.js";
export { whatsappSetupPlugin } from "./src/channel.setup.js";
export * from "./src/accounts.js";
export * from "./src/auto-reply/constants.js";
export {
DEFAULT_WHATSAPP_MEDIA_MAX_MB,
hasAnyWhatsAppAuth,
listEnabledWhatsAppAccounts,
listWhatsAppAccountIds,
listWhatsAppAuthDirs,
resolveDefaultWhatsAppAccountId,
type ResolvedWhatsAppAccount,
resolveWhatsAppAccount,
resolveWhatsAppAuthDir,
resolveWhatsAppMediaMaxBytes,
} from "./src/accounts.js";
export { DEFAULT_WEB_MEDIA_BYTES } from "./src/auto-reply/constants.js";
export { whatsappCommandPolicy } from "./src/command-policy.js";
export * from "./src/group-policy.js";
export {
resolveWhatsAppGroupRequireMention,
resolveWhatsAppGroupToolPolicy,
} from "./src/group-policy.js";
export { WHATSAPP_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./src/outbound-send-deps.js";
export * from "./src/text-runtime.js";
export type * from "./src/auto-reply/types.js";
export type * from "./src/inbound/types.js";
export {
__test__,
asNullableObjectRecord,
asNullableRecord,
asOptionalObjectRecord,
asOptionalRecord,
asRecord,
assertWebChannel,
type AssistantVisibleTextSanitizerProfile,
bindAbortRelay,
buildTimeoutAbortSignal,
chunkItems,
chunkMarkdownIR,
clamp,
clampInt,
clampNumber,
type CodeRegion,
CONFIG_DIR,
convertMarkdownTables,
createScopedExpiringIdCache,
DEFAULT_LOG_DIR,
DEFAULT_LOG_FILE,
diagnosticLogger,
type DisplayMessageWithContent,
displayPath,
displayString,
ensureDir,
escapeRegExp,
fetchWithTimeout,
FILE_REF_EXTENSIONS_WITH_TLD,
findCodeRegions,
getChildLogger,
getDefaultRedactPatterns,
getDiagnosticSessionStateCountForTest,
getLogger,
getResolvedLoggerSettings,
hasNonEmptyString,
hasOrphanReasoningCloseBoundary,
hasSystemMark,
type InlineDirectiveParseResult,
isAutoLinkedFileRef,
isFileLogLevelEnabled,
isInsideCode,
isRecord,
isSelfChatMode,
jidToE164,
type JidToE164Options,
localeLowercasePreservingWhitespace,
logActiveRuns,
logDebug,
logError,
type LoggerResolvedSettings,
type LoggerSettings,
logInfo,
logLaneDequeue,
logLaneEnqueue,
logMessageProcessed,
logMessageQueued,
logRunAttempt,
logSessionStateChange,
logSessionStuck,
logSuccess,
logToolLoopAction,
logWarn,
logWebhookError,
logWebhookProcessed,
logWebhookReceived,
lowercasePreservingWhitespace,
type MarkdownIR,
type MarkdownLinkSpan,
type MarkdownParseOptions,
type MarkdownStyle,
type MarkdownStyleSpan,
type MarkdownTableData,
type MarkdownTableMeta,
markdownToIR,
markdownToIRWithMeta,
markdownToWhatsApp,
normalizeArrayBackedTrimmedStringList,
normalizeAtHashSlug,
normalizeCsvOrLooseStringList,
normalizeE164,
normalizeFastMode,
normalizeHyphenSlug,
normalizeLowercaseStringOrEmpty,
normalizeNullableString,
normalizeOptionalLowercaseString,
normalizeOptionalString,
normalizeOptionalStringifiedId,
normalizeOptionalThreadValue,
normalizeOptionalTrimmedStringList,
normalizeSingleOrTrimmedStringList,
normalizeStringEntries,
normalizeStringEntriesLower,
normalizeStringifiedOptionalString,
normalizeTrimmedStringList,
parseInlineDirectives,
pathExists,
type PinoLikeLogger,
prefixSystemMessage,
type ReactionLevel,
readStringField,
readStringValue,
type ReasoningTagMode,
type ReasoningTagTrim,
redactIdentifier,
redactSensitiveLines,
type RedactSensitiveMode,
redactSensitiveText,
redactToolDetail,
type RenderedMarkdownChunk,
type RenderLink,
renderMarkdownIRChunksWithinLimit,
type RenderMarkdownIRChunksWithinLimitOptions,
renderMarkdownWithMarkers,
type RenderOptions,
type RenderStyleMap,
type RenderStyleMarker,
resetDiagnosticStateForTest,
resetLogger,
resolveConfigDir,
type ResolvedReactionLevel,
type ResolvedRedactOptions,
resolveGlobalMap,
resolveGlobalSingleton,
resolveHomeDir,
resolveJidToE164,
resolvePrimaryStringValue,
resolveReactionLevel,
resolveRedactOptions,
resolveStuckSessionWarnMs,
resolveUserPath,
safeParseJson,
sanitizeAssistantVisibleText,
sanitizeAssistantVisibleTextWithOptions,
sanitizeAssistantVisibleTextWithProfile,
sanitizeReplyDirectiveId,
sanitizeTerminalText,
type ScopedExpiringIdCache,
setLoggerOverride,
sha256HexPrefix,
shortenHomeInString,
shortenHomePath,
sleep,
sliceMarkdownIR,
sliceUtf16Safe,
startDiagnosticHeartbeat,
stopDiagnosticHeartbeat,
stripAssistantInternalScaffolding,
stripDowngradedToolCallText,
stripInlineDirectiveTagsForDelivery,
stripInlineDirectiveTagsForDisplay,
stripInlineDirectiveTagsFromMessageForDisplay,
stripMarkdown,
stripMinimaxToolCallXml,
stripReasoningTagsFromText,
stripToolCallXmlTags,
summarizeStringEntries,
SYSTEM_MARK,
toPinoLikeLogger,
toWhatsappJid,
truncateUtf16Safe,
type WebChannel,
withTimeout,
} from "./src/text-runtime.js";
export {
type WebChannelHealthState,
type WebChannelStatus,
type WebInboundMsg,
type WebMonitorTuning,
} from "./src/auto-reply/types.js";
export {
type ActiveWebListener,
type ActiveWebSendOptions,
type WebInboundMessage,
type WebListenerCloseReason,
type WhatsAppStructuredContactContext,
} from "./src/inbound/types.js";
export {
listWhatsAppDirectoryGroupsFromConfig,
listWhatsAppDirectoryPeersFromConfig,
@@ -21,9 +210,5 @@ export {
normalizeWhatsAppMessagingTarget,
normalizeWhatsAppTarget,
} from "./src/normalize-target.js";
export {
resolveWhatsAppGroupRequireMention,
resolveWhatsAppGroupToolPolicy,
} from "./src/group-policy.js";
export { resolveWhatsAppGroupIntroHint } from "./src/runtime-api.js";
export { __testing as whatsappAccessControlTesting } from "./src/inbound/access-control.js";