diff --git a/docs/.generated/plugin-sdk-api-baseline.sha256 b/docs/.generated/plugin-sdk-api-baseline.sha256 index d4b0ceadd38..ca13e5e6ba0 100644 --- a/docs/.generated/plugin-sdk-api-baseline.sha256 +++ b/docs/.generated/plugin-sdk-api-baseline.sha256 @@ -1,2 +1,2 @@ -f826635804fdc28fb6e1725f1c9d7e6aa8486a9085262496445885ad246860f8 plugin-sdk-api-baseline.json -0467fa5b0ce4060d7e45d5cb76c50136a0923ce19fda3550317d7734124f8af8 plugin-sdk-api-baseline.jsonl +eab8d67d3601d697253d2cc265ea3b18c719a0fa8ca6e983bf1edcd38b9382e7 plugin-sdk-api-baseline.json +8c7e737467cb84d3a1c80c677cb94b26fe4d5739d154245c48d744aef80f53f8 plugin-sdk-api-baseline.jsonl diff --git a/docs/plugins/sdk-subpaths.md b/docs/plugins/sdk-subpaths.md index 419a1803a51..19ab9426fae 100644 --- a/docs/plugins/sdk-subpaths.md +++ b/docs/plugins/sdk-subpaths.md @@ -257,7 +257,7 @@ For the plugin authoring guide, see [Plugin SDK overview](/plugins/sdk-overview) | `plugin-sdk/webhook-path` | Webhook path normalization helpers | | `plugin-sdk/web-media` | Shared remote/local media loading helpers | | `plugin-sdk/zod` | Re-exported `zod` for plugin SDK consumers | - | `plugin-sdk/testing` | `installCommonResolveTargetErrorCases`, `shouldAckReaction` | + | `plugin-sdk/testing` | Public extension test helpers including `installCommonResolveTargetErrorCases`, `shouldAckReaction`, `writeSkill`, `createTestRegistry`, and live generation env loading | diff --git a/extensions/bluebubbles/api.ts b/extensions/bluebubbles/api.ts index 5c1d78810d8..05db06edac7 100644 --- a/extensions/bluebubbles/api.ts +++ b/extensions/bluebubbles/api.ts @@ -1,7 +1,15 @@ export { bluebubblesPlugin } from "./src/channel.js"; export { bluebubblesSetupPlugin } from "./src/channel.setup.js"; -export * from "./src/conversation-id.js"; -export * from "./src/conversation-bindings.js"; +export { + matchBlueBubblesAcpConversation, + normalizeBlueBubblesAcpConversationId, + resolveBlueBubblesConversationIdFromTarget, + resolveBlueBubblesInboundConversationId, +} from "./src/conversation-id.js"; +export { + __testing, + createBlueBubblesConversationBindingManager, +} from "./src/conversation-bindings.js"; export { collectBlueBubblesStatusIssues } from "./src/status-issues.js"; export { resolveBlueBubblesGroupRequireMention, diff --git a/extensions/discord/src/test-support/component-runtime.ts b/extensions/discord/src/test-support/component-runtime.ts index d4c64ae8019..292f8410c05 100644 --- a/extensions/discord/src/test-support/component-runtime.ts +++ b/extensions/discord/src/test-support/component-runtime.ts @@ -1,7 +1,9 @@ +import { + parsePluginBindingApprovalCustomId, + resolvePinnedMainDmOwnerFromAllowlist, +} from "openclaw/plugin-sdk/conversation-runtime"; import { isSingleUseReplyToMode } from "openclaw/plugin-sdk/reply-reference"; import { vi, type Mock } from "vitest"; -import { parsePluginBindingApprovalCustomId } from "../../../../src/plugins/conversation-binding.js"; -import { resolvePinnedMainDmOwnerFromAllowlist } from "../../../../src/security/dm-policy-shared.js"; type UnknownMock = Mock<(...args: unknown[]) => unknown>; type AsyncUnknownMock = Mock<(...args: unknown[]) => Promise>; diff --git a/extensions/feishu/api.ts b/extensions/feishu/api.ts index 7477d82f471..8ad5c33b8f0 100644 --- a/extensions/feishu/api.ts +++ b/extensions/feishu/api.ts @@ -10,10 +10,21 @@ export { handleFeishuSubagentEnded, handleFeishuSubagentSpawning, } from "./src/subagent-hooks.js"; -export * from "./src/conversation-id.js"; -export * from "./src/setup-core.js"; -export * from "./src/setup-surface.js"; -export * from "./src/thread-bindings.js"; +export { + buildFeishuConversationId, + buildFeishuModelOverrideParentCandidates, + type FeishuGroupSessionScope, + parseFeishuConversationId, + parseFeishuDirectConversationId, + parseFeishuTargetId, +} from "./src/conversation-id.js"; +export { feishuSetupAdapter, setFeishuNamedAccountEnabled } from "./src/setup-core.js"; +export { feishuSetupWizard, runFeishuLogin } from "./src/setup-surface.js"; +export { + __testing, + createFeishuThreadBindingManager, + getFeishuThreadBindingManager, +} from "./src/thread-bindings.js"; export { __testing as feishuThreadBindingTesting } from "./src/thread-bindings.js"; export { createClackPrompter } from "openclaw/plugin-sdk/setup-runtime"; diff --git a/extensions/googlechat/api.ts b/extensions/googlechat/api.ts index 1ec2405713e..fa02d6c7237 100644 --- a/extensions/googlechat/api.ts +++ b/extensions/googlechat/api.ts @@ -1,3 +1,3 @@ export { googlechatPlugin } from "./src/channel.js"; -export * from "./src/setup-core.js"; -export * from "./src/setup-surface.js"; +export { googlechatSetupAdapter } from "./src/setup-core.js"; +export { googlechatSetupWizard } from "./src/setup-surface.js"; diff --git a/extensions/imessage/api.ts b/extensions/imessage/api.ts index f6721732c41..4a40949f4f0 100644 --- a/extensions/imessage/api.ts +++ b/extensions/imessage/api.ts @@ -1,11 +1,57 @@ export { imessagePlugin } from "./src/channel.js"; export { imessageSetupPlugin } from "./src/channel.setup.js"; -export * from "./src/accounts.js"; -export * from "./src/conversation-bindings.js"; -export * from "./src/conversation-id.js"; -export * from "./src/group-policy.js"; +export { + listEnabledIMessageAccounts, + listIMessageAccountIds, + resolveDefaultIMessageAccountId, + type ResolvedIMessageAccount, + resolveIMessageAccount, +} from "./src/accounts.js"; +export { + __testing, + createIMessageConversationBindingManager, +} from "./src/conversation-bindings.js"; +export { + matchIMessageAcpConversation, + normalizeIMessageAcpConversationId, + resolveIMessageConversationIdFromTarget, + resolveIMessageInboundConversationId, +} from "./src/conversation-id.js"; +export { + resolveIMessageGroupRequireMention, + resolveIMessageGroupToolPolicy, +} from "./src/group-policy.js"; export { looksLikeIMessageTargetId, normalizeIMessageMessagingTarget } from "./src/normalize.js"; export { IMESSAGE_LEGACY_OUTBOUND_SEND_DEP_KEYS } from "./src/outbound-send-deps.js"; -export * from "./src/probe.js"; -export * from "./src/target-parsing-helpers.js"; -export * from "./src/targets.js"; +export { + DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS, + type IMessageProbe, + type IMessageProbeOptions, + probeIMessage, +} from "./src/probe.js"; +export { + type ChatSenderAllowParams, + type ChatTargetPrefixesParams, + createAllowedChatSenderMatcher, + parseChatAllowTargetPrefixes, + parseChatTargetPrefixesOrThrow, + type ParsedChatAllowTarget, + type ParsedChatTarget, + resolveServicePrefixedAllowTarget, + resolveServicePrefixedChatTarget, + resolveServicePrefixedOrChatAllowTarget, + resolveServicePrefixedTarget, + type ServicePrefix, +} from "./src/target-parsing-helpers.js"; +export { + formatIMessageChatTarget, + type IMessageAllowTarget, + type IMessageService, + type IMessageTarget, + inferIMessageTargetChatType, + isAllowedIMessageSender, + looksLikeIMessageExplicitTargetId, + normalizeIMessageHandle, + parseIMessageAllowTarget, + parseIMessageTarget, +} from "./src/targets.js"; diff --git a/extensions/irc/api.ts b/extensions/irc/api.ts index f409c7b5d95..5404875213e 100644 --- a/extensions/irc/api.ts +++ b/extensions/irc/api.ts @@ -1,4 +1,10 @@ export { ircPlugin } from "./src/channel.js"; export { setIrcRuntime } from "./src/runtime.js"; -export * from "./src/accounts.js"; -export * from "./src/setup-surface.js"; +export { + listEnabledIrcAccounts, + listIrcAccountIds, + resolveDefaultIrcAccountId, + type ResolvedIrcAccount, + resolveIrcAccount, +} from "./src/accounts.js"; +export { ircSetupAdapter, ircSetupWizard } from "./src/setup-surface.js"; diff --git a/extensions/llm-task/api.ts b/extensions/llm-task/api.ts index 19d4e17880f..43063ce557e 100644 --- a/extensions/llm-task/api.ts +++ b/extensions/llm-task/api.ts @@ -1,4 +1,4 @@ -export * from "./src/runtime-api.js"; +export { resolvePreferredOpenClawTmpDir } from "./src/runtime-api.js"; export { definePluginEntry, type AnyAgentTool, diff --git a/extensions/lmstudio/api.ts b/extensions/lmstudio/api.ts index e21f8a1f806..162078e8e50 100644 --- a/extensions/lmstudio/api.ts +++ b/extensions/lmstudio/api.ts @@ -1 +1,36 @@ -export * from "./src/api.js"; +export { + buildLmstudioAuthHeaders, + buildLmstudioModelName, + configureLmstudioNonInteractive, + discoverLmstudioProvider, + LMSTUDIO_DEFAULT_API_KEY_ENV_VAR, + LMSTUDIO_DEFAULT_BASE_URL, + LMSTUDIO_DEFAULT_EMBEDDING_MODEL, + LMSTUDIO_DEFAULT_INFERENCE_BASE_URL, + LMSTUDIO_DEFAULT_LOAD_CONTEXT_LENGTH, + LMSTUDIO_DEFAULT_MODEL_ID, + LMSTUDIO_DOCKER_HOST_BASE_URL, + LMSTUDIO_DOCKER_HOST_INFERENCE_BASE_URL, + LMSTUDIO_LOCAL_API_KEY_PLACEHOLDER, + LMSTUDIO_MODEL_PLACEHOLDER, + LMSTUDIO_PROVIDER_ID, + LMSTUDIO_PROVIDER_LABEL, + type LmstudioModelBase, + type LmstudioModelWire, + mapLmstudioWireEntry, + mapLmstudioWireModelsToConfig, + normalizeLmstudioConfiguredCatalogEntries, + normalizeLmstudioConfiguredCatalogEntry, + normalizeLmstudioProviderConfig, + prepareLmstudioDynamicModels, + promptAndConfigureLmstudioInteractive, + resolveLmstudioConfiguredApiKey, + resolveLmstudioInferenceBase, + resolveLmstudioProviderHeaders, + resolveLmstudioReasoningCapability, + resolveLmstudioReasoningCompat, + resolveLmstudioRequestContext, + resolveLmstudioRuntimeApiKey, + resolveLmstudioServerBase, + resolveLoadedContextWindow, +} from "./src/api.js"; diff --git a/extensions/lmstudio/src/api.ts b/extensions/lmstudio/src/api.ts index 352b66c00cd..135cd5a22e7 100644 --- a/extensions/lmstudio/src/api.ts +++ b/extensions/lmstudio/src/api.ts @@ -1,4 +1,42 @@ -export * from "./defaults.js"; -export * from "./models.js"; -export * from "./runtime.js"; -export * from "./setup.js"; +export { + LMSTUDIO_DEFAULT_API_KEY_ENV_VAR, + LMSTUDIO_DEFAULT_BASE_URL, + LMSTUDIO_DEFAULT_EMBEDDING_MODEL, + LMSTUDIO_DEFAULT_INFERENCE_BASE_URL, + LMSTUDIO_DEFAULT_LOAD_CONTEXT_LENGTH, + LMSTUDIO_DEFAULT_MODEL_ID, + LMSTUDIO_DOCKER_HOST_BASE_URL, + LMSTUDIO_DOCKER_HOST_INFERENCE_BASE_URL, + LMSTUDIO_LOCAL_API_KEY_PLACEHOLDER, + LMSTUDIO_MODEL_PLACEHOLDER, + LMSTUDIO_PROVIDER_ID, + LMSTUDIO_PROVIDER_LABEL, +} from "./defaults.js"; +export { + buildLmstudioModelName, + type LmstudioModelBase, + type LmstudioModelWire, + mapLmstudioWireEntry, + mapLmstudioWireModelsToConfig, + normalizeLmstudioConfiguredCatalogEntries, + normalizeLmstudioConfiguredCatalogEntry, + normalizeLmstudioProviderConfig, + resolveLmstudioInferenceBase, + resolveLmstudioReasoningCapability, + resolveLmstudioReasoningCompat, + resolveLmstudioServerBase, + resolveLoadedContextWindow, +} from "./models.js"; +export { + buildLmstudioAuthHeaders, + resolveLmstudioConfiguredApiKey, + resolveLmstudioProviderHeaders, + resolveLmstudioRequestContext, + resolveLmstudioRuntimeApiKey, +} from "./runtime.js"; +export { + configureLmstudioNonInteractive, + discoverLmstudioProvider, + prepareLmstudioDynamicModels, + promptAndConfigureLmstudioInteractive, +} from "./setup.js"; diff --git a/extensions/matrix/api.ts b/extensions/matrix/api.ts index a8ace8d3136..c84665236ce 100644 --- a/extensions/matrix/api.ts +++ b/extensions/matrix/api.ts @@ -1,9 +1,29 @@ export { matrixPlugin } from "./src/channel.js"; -export * from "./src/setup-core.js"; -export * from "./src/setup-surface.js"; -export * from "./src/account-selection.js"; -export * from "./src/env-vars.js"; -export * from "./src/storage-paths.js"; +export { createMatrixSetupWizardProxy, matrixSetupAdapter } from "./src/setup-core.js"; +export { matrixOnboardingAdapter } from "./src/setup-surface.js"; +export { + findMatrixAccountEntry, + requiresExplicitMatrixDefaultAccount, + resolveConfiguredMatrixAccountIds, + resolveMatrixChannelConfig, + resolveMatrixDefaultOrOnlyAccountId, +} from "./src/account-selection.js"; +export { + getMatrixScopedEnvVarNames, + listMatrixEnvAccountIds, + resolveMatrixEnvAccountToken, +} from "./src/env-vars.js"; +export { + hashMatrixAccessToken, + resolveMatrixAccountStorageRoot, + resolveMatrixCredentialsDir, + resolveMatrixCredentialsFilename, + resolveMatrixCredentialsPath, + resolveMatrixHomeserverKey, + resolveMatrixLegacyFlatStoragePaths, + resolveMatrixLegacyFlatStoreRoot, + sanitizeMatrixPathSegment, +} from "./src/storage-paths.js"; export { createMatrixThreadBindingManager, getMatrixThreadBindingManager, diff --git a/extensions/matrix/src/test-support/monitor-route-test-support.ts b/extensions/matrix/src/test-support/monitor-route-test-support.ts index 620fd12da25..a7bbd8257d6 100644 --- a/extensions/matrix/src/test-support/monitor-route-test-support.ts +++ b/extensions/matrix/src/test-support/monitor-route-test-support.ts @@ -1,8 +1,10 @@ export { registerSessionBindingAdapter, __testing, -} from "../../../../src/infra/outbound/session-binding-service.js"; -export { setActivePluginRegistry } from "../../../../src/plugins/runtime.js"; -export { resolveAgentRoute } from "../../../../src/routing/resolve-route.js"; -export { createTestRegistry } from "../../../../src/test-utils/channel-plugins.js"; -export type { OpenClawConfig } from "../../../../src/config/config.js"; +} from "openclaw/plugin-sdk/session-binding-runtime"; +export { resolveAgentRoute } from "openclaw/plugin-sdk/routing"; +export { + createTestRegistry, + setActivePluginRegistry, + type OpenClawConfig, +} from "openclaw/plugin-sdk/testing"; diff --git a/extensions/msteams/api.ts b/extensions/msteams/api.ts index 5713c49c661..5070773e8c8 100644 --- a/extensions/msteams/api.ts +++ b/extensions/msteams/api.ts @@ -1,3 +1,3 @@ export { msteamsPlugin } from "./src/channel.js"; -export * from "./src/setup-core.js"; -export * from "./src/setup-surface.js"; +export { createMSTeamsSetupWizardBase, msteamsSetupAdapter } from "./src/setup-core.js"; +export { msteamsSetupWizard, openDelegatedOAuthUrl } from "./src/setup-surface.js"; diff --git a/extensions/nostr/api.ts b/extensions/nostr/api.ts index f068665c0d2..61595c3b79b 100644 --- a/extensions/nostr/api.ts +++ b/extensions/nostr/api.ts @@ -1,4 +1,8 @@ -export * from "./runtime-api.js"; +export { + getPluginRuntimeGatewayRequestScope, + type OpenClawConfig, + type PluginRuntime, +} from "./runtime-api.js"; export { nostrPlugin } from "./src/channel.js"; export { createNostrProfileHttpHandler } from "./src/nostr-profile-http.js"; export { getNostrRuntime, setNostrRuntime } from "./src/runtime.js"; diff --git a/extensions/qa-channel/api.ts b/extensions/qa-channel/api.ts index 813fe53ae3a..2775497a4fc 100644 --- a/extensions/qa-channel/api.ts +++ b/extensions/qa-channel/api.ts @@ -1,5 +1,44 @@ -export * from "./src/accounts.js"; -export * from "./src/channel.js"; -export * from "./src/channel-actions.js"; -export * from "./src/runtime.js"; -export * from "./test-api.js"; +export { + DEFAULT_ACCOUNT_ID, + listEnabledQaChannelAccounts, + listQaChannelAccountIds, + resolveDefaultQaChannelAccountId, + type ResolvedQaChannelAccount, + resolveQaChannelAccount, +} from "./src/accounts.js"; +export { qaChannelPlugin } from "./src/channel.js"; +export { qaChannelMessageActions } from "./src/channel-actions.js"; +export { getQaChannelRuntime, setQaChannelRuntime } from "./src/runtime.js"; +export { + buildQaTarget, + createQaBusThread, + deleteQaBusMessage, + editQaBusMessage, + getQaBusState, + injectQaBusInboundMessage, + normalizeQaTarget, + parseQaTarget, + pollQaBus, + type QaBusAttachment, + type QaBusConversation, + type QaBusConversationKind, + type QaBusCreateThreadInput, + type QaBusDeleteMessageInput, + type QaBusEditMessageInput, + type QaBusEvent, + type QaBusInboundMessageInput, + type QaBusMessage, + type QaBusOutboundMessageInput, + type QaBusPollInput, + type QaBusPollResult, + type QaBusReactToMessageInput, + type QaBusReadMessageInput, + type QaBusSearchMessagesInput, + type QaBusStateSnapshot, + type QaBusThread, + type QaBusWaitForInput, + reactToQaBusMessage, + readQaBusMessage, + searchQaBusMessages, + sendQaBusMessage, +} from "./test-api.js"; diff --git a/extensions/qa-lab/api.ts b/extensions/qa-lab/api.ts index 47f510f55b7..c21be4938c6 100644 --- a/extensions/qa-lab/api.ts +++ b/extensions/qa-lab/api.ts @@ -1,19 +1,104 @@ -export * from "./src/bus-queries.js"; -export * from "./src/bus-server.js"; -export * from "./src/bus-state.js"; -export * from "./src/bus-waiters.js"; -export * from "./src/cli.js"; -export * from "./src/harness-runtime.js"; -export * from "./src/lab-server.js"; -export * from "./src/docker-harness.js"; -export * from "./src/qa-agent-bootstrap.js"; -export * from "./src/qa-agent-workspace.js"; -export * from "./src/qa-gateway-config.js"; -export * from "./src/report.js"; -export * from "./src/scenario.js"; -export * from "./src/scenario-catalog.js"; -export * from "./src/self-check-scenario.js"; -export * from "./src/self-check.js"; -export * from "./src/self-check-runner.js"; -export * from "./src/gateway-child.js"; -export * from "./src/suite.js"; +export { + buildQaBusSnapshot, + cloneEvent, + cloneMessage, + DEFAULT_ACCOUNT_ID, + normalizeAccountId, + normalizeConversationFromTarget, + pollQaBusEvents, + readQaBusMessage, + searchQaBusMessages, +} from "./src/bus-queries.js"; +export { + closeQaHttpServer, + createQaBusServer, + handleQaBusRequest, + startQaBusServer, + writeError, + writeJson, +} from "./src/bus-server.js"; +export { createQaBusState, type QaBusState } from "./src/bus-state.js"; +export { + createQaBusWaiterStore, + DEFAULT_WAIT_TIMEOUT_MS, + type QaBusWaitMatch, +} from "./src/bus-waiters.js"; +export { isQaLabCliAvailable, registerQaLabCli } from "./src/cli.js"; +export { createQaRunnerRuntime } from "./src/harness-runtime.js"; +export { + type QaLabLatestReport, + type QaLabScenarioOutcome, + type QaLabScenarioRun, + type QaLabServerHandle, + type QaLabServerStartParams, + startQaLabServer, +} from "./src/lab-server.js"; +export { buildQaDockerHarnessImage, writeQaDockerHarnessFiles } from "./src/docker-harness.js"; +export { + buildQaScenarioPlanMarkdown, + readQaAgentIdentityMarkdown, +} from "./src/qa-agent-bootstrap.js"; +export { seedQaAgentWorkspace } from "./src/qa-agent-workspace.js"; +export { + buildQaGatewayConfig, + DEFAULT_QA_CONTROL_UI_ALLOWED_ORIGINS, + mergeQaControlUiAllowedOrigins, + normalizeQaThinkingLevel, + QA_BASE_RUNTIME_PLUGIN_IDS, + type QaThinkingLevel, +} from "./src/qa-gateway-config.js"; +export { type QaReportCheck, type QaReportScenario, renderQaMarkdownReport } from "./src/report.js"; +export { + type QaScenarioDefinition, + type QaScenarioResult, + type QaScenarioStep, + type QaScenarioStepContext, + type QaScenarioStepResult, + runQaScenario, +} from "./src/scenario.js"; +export { + DEFAULT_QA_AGENT_IDENTITY_MARKDOWN, + hasQaScenarioPack, + listQaScenarioMarkdownPaths, + type QaBootstrapScenarioCatalog, + type QaScenarioExecution, + type QaScenarioFlow, + type QaScenarioPack, + type QaSeedScenario, + type QaSeedScenarioWithSource, + readQaBootstrapScenarioCatalog, + readQaScenarioById, + readQaScenarioExecutionConfig, + readQaScenarioOverviewMarkdown, + readQaScenarioPack, + readQaScenarioPackMarkdown, + validateQaScenarioExecutionConfig, +} from "./src/scenario-catalog.js"; +export { createQaSelfCheckScenario } from "./src/self-check-scenario.js"; +export { + type QaSelfCheckResult, + resolveQaSelfCheckOutputPath, + runQaSelfCheckAgainstState, +} from "./src/self-check.js"; +export { runQaE2eSelfCheck, runQaLabSelfCheck } from "./src/self-check-runner.js"; +export { + __testing, + buildQaRuntimeEnv, + type QaCliBackendAuthMode, + type QaGatewayChildCommand, + type QaGatewayChildStateMutationContext, + resolveQaControlUiRoot, + resolveQaGatewayChildProviderMode, + startQaGatewayChild, +} from "./src/gateway-child.js"; +export { + buildQaSuiteSummaryJson, + qaSuiteProgressTesting, + type QaSuiteResult, + type QaSuiteRunParams, + type QaSuiteScenarioResult, + type QaSuiteStartLabFn, + type QaSuiteSummaryJson, + type QaSuiteSummaryJsonParams, + runQaSuite, +} from "./src/suite.js"; diff --git a/extensions/qqbot/api.ts b/extensions/qqbot/api.ts index 9fed28c161e..0e9e23ae780 100644 --- a/extensions/qqbot/api.ts +++ b/extensions/qqbot/api.ts @@ -5,6 +5,52 @@ export { registerChannelTool } from "./src/bridge/tools/channel.js"; export { registerRemindTool } from "./src/bridge/tools/remind.js"; export { registerQQBotTools } from "./src/bridge/tools/index.js"; export { registerQQBotFull } from "./src/bridge/channel-entry.js"; -export * from "./src/types.js"; -export * from "./src/bridge/config.js"; -export * from "./src/engine/messaging/outbound.js"; +export { + type AudioFormatPolicy, + type C2CMessageEvent, + type GroupMessageEvent, + type GuildMessageEvent, + type MessageAttachment, + type QQBotAccountConfig, + type QQBotConfig, + type QQBotDmPolicy, + type QQBotExecApprovalConfig, + type QQBotGroupPolicy, + type ResolvedQQBotAccount, + type WSPayload, +} from "./src/types.js"; +export { + applyQQBotAccountConfig, + DEFAULT_ACCOUNT_ID, + listQQBotAccountIds, + resolveDefaultQQBotAccountId, + resolveQQBotAccount, +} from "./src/bridge/config.js"; +export { + buildMediaTarget, + checkMessageReplyLimit, + DEFAULT_MEDIA_SEND_ERROR, + getMessageReplyConfig, + getMessageReplyStats, + type MediaOutboundContext, + type MediaTargetContext, + MESSAGE_REPLY_LIMIT, + OUTBOUND_ERROR_CODES, + type OutboundContext, + type OutboundErrorCode, + type OutboundResult, + parseTarget, + recordMessageReply, + type ReplyLimitResult, + resolveOutboundMediaPath, + resolveUserFacingMediaError, + sendCronMessage, + sendDocument, + sendMedia, + sendPhoto, + sendProactiveMessage, + sendText, + sendVideoMsg, + sendVoice, + setOutboundAudioPort, +} from "./src/engine/messaging/outbound.js"; diff --git a/extensions/signal/api.ts b/extensions/signal/api.ts index 7a39601974f..1e04f4885b7 100644 --- a/extensions/signal/api.ts +++ b/extensions/signal/api.ts @@ -1,15 +1,66 @@ export { signalPlugin } from "./src/channel.js"; export { signalSetupPlugin } from "./src/channel.setup.js"; -export * from "./src/accounts.js"; -export * from "./src/format.js"; -export * from "./src/identity.js"; -export * from "./src/install-signal-cli.js"; -export * from "./src/message-actions.js"; -export * from "./src/monitor.js"; -export * from "./src/normalize.js"; -export * from "./src/outbound-session.js"; -export * from "./src/probe.js"; -export * from "./src/reaction-level.js"; -export * from "./src/send-reactions.js"; -export * from "./src/send.js"; +export { + listEnabledSignalAccounts, + listSignalAccountIds, + resolveDefaultSignalAccountId, + type ResolvedSignalAccount, + resolveSignalAccount, +} from "./src/accounts.js"; +export { + markdownToSignalText, + markdownToSignalTextChunks, + type SignalFormattedText, + type SignalTextStyleRange, +} from "./src/format.js"; +export { + formatSignalPairingIdLine, + formatSignalSenderDisplay, + formatSignalSenderId, + isSignalGroupAllowed, + isSignalSenderAllowed, + looksLikeUuid, + normalizeSignalAllowRecipient, + resolveSignalPeerId, + resolveSignalRecipient, + resolveSignalSender, + type SignalSender, +} from "./src/identity.js"; +export { + extractSignalCliArchive, + installSignalCli, + looksLikeArchive, + type NamedAsset, + pickAsset, + type ReleaseAsset, + type SignalInstallResult, +} from "./src/install-signal-cli.js"; +export { signalMessageActions } from "./src/message-actions.js"; +export { type MonitorSignalOpts, monitorSignalProvider } from "./src/monitor.js"; +export { looksLikeSignalTargetId, normalizeSignalMessagingTarget } from "./src/normalize.js"; +export { + type ResolvedSignalOutboundTarget, + resolveSignalOutboundTarget, +} from "./src/outbound-session.js"; +export { probeSignal, type SignalProbe } from "./src/probe.js"; +export { + type ResolvedSignalReactionLevel, + resolveSignalReactionLevel, + type SignalReactionLevel, +} from "./src/reaction-level.js"; +export { + removeReactionSignal, + sendReactionSignal, + type SignalReactionOpts, + type SignalReactionResult, +} from "./src/send-reactions.js"; +export { + sendMessageSignal, + sendReadReceiptSignal, + sendTypingSignal, + type SignalReceiptType, + type SignalRpcOpts, + type SignalSendOpts, + type SignalSendResult, +} from "./src/send.js"; export { normalizeSignalAccountInput } from "./src/setup-core.js"; diff --git a/extensions/synology-chat/api.ts b/extensions/synology-chat/api.ts index c7959d560fc..d6202994611 100644 --- a/extensions/synology-chat/api.ts +++ b/extensions/synology-chat/api.ts @@ -1,3 +1,3 @@ export { synologyChatPlugin } from "./src/channel.js"; export { setSynologyRuntime } from "./src/runtime.js"; -export * from "./src/security-audit.js"; +export { collectSynologyChatSecurityAuditFindings } from "./src/security-audit.js"; diff --git a/extensions/telegram/src/test-support/write-skill.ts b/extensions/telegram/src/test-support/write-skill.ts index 05e12bab9c4..0d8a846055f 100644 --- a/extensions/telegram/src/test-support/write-skill.ts +++ b/extensions/telegram/src/test-support/write-skill.ts @@ -1 +1 @@ -export { writeSkill } from "../../../../src/agents/skills.e2e-test-helpers.js"; +export { writeSkill } from "openclaw/plugin-sdk/testing"; diff --git a/extensions/test-support/generation-live-test-helpers.ts b/extensions/test-support/generation-live-test-helpers.ts index 99dda424d92..6539610d83a 100644 --- a/extensions/test-support/generation-live-test-helpers.ts +++ b/extensions/test-support/generation-live-test-helpers.ts @@ -1 +1 @@ -export { maybeLoadShellEnvForGenerationProviders } from "../../src/test-utils/generation-live-test-helpers.js"; +export { maybeLoadShellEnvForGenerationProviders } from "openclaw/plugin-sdk/testing"; diff --git a/extensions/tlon/api.ts b/extensions/tlon/api.ts index daa7fcf4ae3..b6ce81f896b 100644 --- a/extensions/tlon/api.ts +++ b/extensions/tlon/api.ts @@ -1,3 +1,16 @@ -export * from "./runtime-api.js"; +export { + createDedupeCache, + createLoggerBackedRuntime, + fetchWithSsrFGuard, + isBlockedHostnameOrIp, + type LookupFn, + type OpenClawConfig, + type ReplyPayload, + type RuntimeEnv, + SsrFBlockedError, + type SsrFPolicy, + ssrfPolicyFromAllowPrivateNetwork, + ssrfPolicyFromDangerouslyAllowPrivateNetwork, +} from "./runtime-api.js"; export { tlonPlugin } from "./src/channel.js"; export { setTlonRuntime } from "./src/runtime.js"; diff --git a/extensions/twitch/api.ts b/extensions/twitch/api.ts index 258dce611ae..21035a2baf9 100644 --- a/extensions/twitch/api.ts +++ b/extensions/twitch/api.ts @@ -1,3 +1,21 @@ -export * from "./runtime-api.js"; +export { + type ChannelAccountSnapshot, + type ChannelCapabilities, + type ChannelGatewayContext, + type ChannelLogSink, + type ChannelMessageActionAdapter, + type ChannelMessageActionContext, + type ChannelMeta, + type ChannelOutboundAdapter, + type ChannelOutboundContext, + type ChannelPlugin, + type ChannelResolveKind, + type ChannelResolveResult, + type ChannelStatusAdapter, + type OpenClawConfig, + type OutboundDeliveryResult, + type RuntimeEnv, + type WizardPrompter, +} from "./runtime-api.js"; export { twitchPlugin } from "./src/plugin.js"; export { setTwitchRuntime } from "./src/runtime.js"; diff --git a/extensions/voice-call/api.ts b/extensions/voice-call/api.ts index 6606fb316b4..64be34cabff 100644 --- a/extensions/voice-call/api.ts +++ b/extensions/voice-call/api.ts @@ -1 +1,16 @@ -export * from "./runtime-api.js"; +export { + definePluginEntry, + fetchWithSsrFGuard, + type GatewayRequestHandlerOptions, + isBlockedHostnameOrIp, + isRequestBodyLimitError, + type OpenClawPluginApi, + readRequestBodyWithLimit, + requestBodyErrorToText, + type SessionEntry, + sleep, + TtsAutoSchema, + TtsConfigSchema, + TtsModeSchema, + TtsProviderSchema, +} from "./runtime-api.js"; diff --git a/extensions/zalo/api.ts b/extensions/zalo/api.ts index cc85897de9f..e1110f928ff 100644 --- a/extensions/zalo/api.ts +++ b/extensions/zalo/api.ts @@ -1,2 +1,9 @@ export { zaloPlugin } from "./src/channel.js"; -export * from "./setup-api.js"; +export { + createZaloSetupWizardProxy, + evaluateZaloGroupAccess, + resolveZaloRuntimeGroupPolicy, + zaloDmPolicy, + zaloSetupAdapter, + zaloSetupWizard, +} from "./setup-api.js"; diff --git a/extensions/zalouser/api.ts b/extensions/zalouser/api.ts index 235a81d153f..2a23915fb10 100644 --- a/extensions/zalouser/api.ts +++ b/extensions/zalouser/api.ts @@ -1,6 +1,9 @@ export { zalouserPlugin } from "./src/channel.js"; export { zalouserSetupPlugin } from "./src/channel.setup.js"; export { createZalouserTool } from "./src/tool.js"; -export * from "./src/setup-core.js"; -export * from "./src/setup-surface.js"; -export * from "./src/security-audit.js"; +export { createZalouserSetupWizardProxy, zalouserSetupAdapter } from "./src/setup-core.js"; +export { zalouserSetupWizard } from "./src/setup-surface.js"; +export { + collectZalouserSecurityAuditFindings, + isZalouserMutableGroupEntry, +} from "./src/security-audit.js"; diff --git a/src/plugin-sdk/testing.ts b/src/plugin-sdk/testing.ts index 69556c5a8e6..11d2adfb84d 100644 --- a/src/plugin-sdk/testing.ts +++ b/src/plugin-sdk/testing.ts @@ -43,6 +43,7 @@ export { export { isLiveTestEnabled } from "../agents/live-test-helpers.js"; export { createSandboxTestContext } from "../agents/sandbox/test-fixtures.js"; export { writeSkill } from "../agents/skills.e2e-test-helpers.js"; +export { maybeLoadShellEnvForGenerationProviders } from "../test-utils/generation-live-test-helpers.js"; export { __testing } from "../acp/control-plane/manager.js"; export { __testing as acpManagerTesting } from "../acp/control-plane/manager.js"; export { runAcpRuntimeAdapterContract } from "../acp/runtime/adapter-contract.testkit.js"; @@ -51,6 +52,7 @@ export { buildCommandTestParams } from "../auto-reply/reply/commands-spawn.test- export { peekSystemEvents, resetSystemEventsForTest } from "../infra/system-events.js"; export { jsonResponse, requestBodyText, requestUrl } from "../test-helpers/http.js"; export { mockPinnedHostnameResolution } from "../test-helpers/ssrf.js"; +export { createTestRegistry } from "../test-utils/channel-plugins.js"; export { createWindowsCmdShimFixture } from "../test-helpers/windows-cmd-shim.js"; export { installCommonResolveTargetErrorCases } from "../test-helpers/resolve-target-error-cases.js"; export { sanitizeTerminalText } from "../terminal/safe-text.js";