From 1fc19ffe118205956ebf2845832f2c7773c01b4d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 27 Apr 2026 20:34:28 +0100 Subject: [PATCH] refactor: narrow messaging public api barrels --- .../.generated/plugin-sdk-api-baseline.sha256 | 4 +- extensions/discord/api.ts | 115 ++++++++-- extensions/slack/api.ts | 126 +++++++++-- extensions/telegram/api.ts | 195 +++++++++++++++-- extensions/whatsapp/api.ts | 205 +++++++++++++++++- 5 files changed, 575 insertions(+), 70 deletions(-) diff --git a/docs/.generated/plugin-sdk-api-baseline.sha256 b/docs/.generated/plugin-sdk-api-baseline.sha256 index 1fcbe4bb217..6ba74fbbd9c 100644 --- a/docs/.generated/plugin-sdk-api-baseline.sha256 +++ b/docs/.generated/plugin-sdk-api-baseline.sha256 @@ -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 diff --git a/extensions/discord/api.ts b/extensions/discord/api.ts index b2629843845..26f43fe3fc7 100644 --- a/extensions/discord/api.ts +++ b/extensions/discord/api.ts @@ -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, diff --git a/extensions/slack/api.ts b/extensions/slack/api.ts index 0f729d38740..37b6613e6a0 100644 --- a/extensions/slack/api.ts +++ b/extensions/slack/api.ts @@ -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"; diff --git a/extensions/telegram/api.ts b/extensions/telegram/api.ts index 45d739b080d..677f599ae2e 100644 --- a/extensions/telegram/api.ts +++ b/extensions/telegram/api.ts @@ -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"; diff --git a/extensions/whatsapp/api.ts b/extensions/whatsapp/api.ts index df9503c822c..0fe9da961d4 100644 --- a/extensions/whatsapp/api.ts +++ b/extensions/whatsapp/api.ts @@ -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";