惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
雷峰网
雷峰网
S
SegmentFault 最新的问题
博客园 - 【当耐特】
博客园_首页
量子位
爱范儿
爱范儿
博客园 - 叶小钗
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
V
V2EX
美团技术团队
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
宝玉的分享
宝玉的分享
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
refactor: move plugin contracts onto SDK testing seams · ...
steipete · 2026-04-28 · via Recent Commits to openclaw:main

@@ -1,7 +1,12 @@

11

// Narrow public testing surface for plugin authors.

22

// Keep this list additive and limited to helpers we are willing to support.

334-

export { removeAckReactionAfterReply, shouldAckReaction } from "../channels/ack-reactions.js";

4+

export {

5+

createAckReactionHandle,

6+

removeAckReactionAfterReply,

7+

removeAckReactionHandleAfterReply,

8+

shouldAckReaction,

9+

} from "../channels/ack-reactions.js";

510

export {

611

expectChannelInboundContextContract,

712

primeChannelOutboundSendMock,

@@ -23,10 +28,48 @@ export { setDefaultChannelPluginRegistryForTests } from "../commands/channel-tes

2328

export type { ChannelAccountSnapshot } from "../channels/plugins/types.public.js";

2429

export type { ChannelGatewayContext } from "../channels/plugins/types.adapters.js";

2530

export type { OpenClawConfig } from "../config/config.js";

31+

export { isAtLeast, parseSemver } from "../infra/runtime-guard.js";

2632

export { callGateway } from "../gateway/call.js";

27-

export { createEmptyPluginRegistry } from "../plugins/registry.js";

33+

export { deliverOutboundPayloads } from "../infra/outbound/deliver.js";

34+

export {

35+

createEmptyPluginRegistry,

36+

createPluginRegistry,

37+

type PluginRecord,

38+

} from "../plugins/registry.js";

39+

export {

40+

providerContractLoadError,

41+

pluginRegistrationContractRegistry,

42+

resolveProviderContractProvidersForPluginIds,

43+

resolveWebFetchProviderContractEntriesForPluginId,

44+

resolveWebSearchProviderContractEntriesForPluginId,

45+

} from "../plugins/contracts/registry.js";

46+

export { BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS } from "../plugins/contracts/inventory/bundled-capability-metadata.js";

47+

export { loadPluginManifestRegistry } from "../plugins/manifest-registry.js";

48+

export { parseMinHostVersionRequirement } from "../plugins/min-host-version.js";

49+

export { resolveBundledExplicitProviderContractsFromPublicArtifacts } from "../plugins/provider-contract-public-artifacts.js";

50+

export {

51+

expectAugmentedCodexCatalog,

52+

expectedAugmentedOpenaiCodexCatalogEntriesWithGpt55,

53+

expectCodexBuiltInSuppression,

54+

expectCodexMissingAuthHint,

55+

} from "../plugins/provider-runtime.test-support.js";

56+

export {

57+

initializeGlobalHookRunner,

58+

resetGlobalHookRunner,

59+

} from "../plugins/hook-runner-global.js";

60+

export { addTestHook } from "../plugins/hooks.test-helpers.js";

61+

export {

62+

assertUniqueValues,

63+

BUNDLED_RUNTIME_SIDECAR_PATHS,

64+

} from "../plugins/runtime-sidecar-paths.js";

65+

export { createPluginRecord } from "../plugins/status.test-helpers.js";

66+

export {

67+

resolveBundledExplicitWebFetchProvidersFromPublicArtifacts,

68+

resolveBundledExplicitWebSearchProvidersFromPublicArtifacts,

69+

} from "../plugins/web-provider-public-artifacts.explicit.js";

2870

export {

2971

getActivePluginRegistry,

72+

releasePinnedPluginChannelRegistry,

3073

resetPluginRuntimeStateForTest,

3174

setActivePluginRegistry,

3275

} from "../plugins/runtime.js";

@@ -35,8 +78,16 @@ export {

3578

resetFacadeRuntimeStateForTest,

3679

} from "./facade-runtime.js";

3780

export { capturePluginRegistration } from "../plugins/captured-registration.js";

81+

export { runProviderCatalog } from "../plugins/provider-discovery.js";

82+

export {

83+

buildProviderPluginMethodChoice,

84+

resolveProviderModelPickerEntries,

85+

resolveProviderWizardOptions,

86+

setProviderWizardProvidersResolverForTest,

87+

} from "../plugins/provider-wizard.js";

3888

export { resolveProviderPluginChoice } from "../plugins/provider-auth-choice.runtime.js";

3989

export type { PluginRuntime } from "../plugins/runtime/types.js";

90+

export type { PluginHookRegistration } from "../plugins/hook-types.js";

4091

export type { RuntimeEnv } from "../runtime.js";

4192

export type { MockFn } from "../test-utils/vitest-mock-fn.js";

4293

export {

@@ -105,7 +156,7 @@ export type {

105156

} from "../video-generation/types.js";

106157

export { jsonResponse, requestBodyText, requestUrl } from "../test-helpers/http.js";

107158

export { mockPinnedHostnameResolution } from "../test-helpers/ssrf.js";

108-

export { createTestRegistry } from "../test-utils/channel-plugins.js";

159+

export { createOutboundTestPlugin, createTestRegistry } from "../test-utils/channel-plugins.js";

109160

export { createWindowsCmdShimFixture } from "../test-helpers/windows-cmd-shim.js";

110161

export { installCommonResolveTargetErrorCases } from "../test-helpers/resolve-target-error-cases.js";

111162

export { sanitizeTerminalText } from "../terminal/safe-text.js";

@@ -117,6 +168,7 @@ export { withFetchPreconnect, type FetchMock } from "../test-utils/fetch-mock.js

117168

export { createMockServerResponse } from "../test-utils/mock-http-response.js";

118169

export {

119170

registerProviderPlugin,

171+

registerProviderPlugins,

120172

registerSingleProviderPlugin,

121173

requireRegisteredProvider,

122174

type RegisteredProviderCollections,