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

推荐订阅源

MyScale Blog
MyScale Blog
J
Java Code Geeks
Vercel News
Vercel News
A
About on SuperTechFans
G
Google Developers Blog
C
Check Point Blog
腾讯CDC
N
Netflix TechBlog - Medium
博客园 - 司徒正美
S
SegmentFault 最新的问题
D
DataBreaches.Net
博客园_首页
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
博客园 - 聂微东
量子位
雷峰网
雷峰网
IT之家
IT之家
小众软件
小众软件
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
H
Help Net Security
宝玉的分享
宝玉的分享
博客园 - 叶小钗

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
test: tighten plugin loader empty array assertions · open...
shakkernerd · 2026-05-09 · via Recent Commits to openclaw:main

@@ -1929,7 +1929,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

19291929

onlyPluginIds: [],

19301930

});

193119311932-

expect(registry.plugins).toEqual([]);

1932+

expect(registry.plugins).toStrictEqual([]);

19331933

});

1934193419351935

it("skips discovery and manifest registry loading entirely when onlyPluginIds is an explicit empty array", async () => {

@@ -1957,7 +1957,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

19571957

onlyPluginIds: [],

19581958

});

195919591960-

expect(registry.plugins).toEqual([]);

1960+

expect(registry.plugins).toStrictEqual([]);

19611961

expect(discoverySpy).not.toHaveBeenCalled();

19621962

expect(manifestSpy).not.toHaveBeenCalled();

19631963

@@ -1999,7 +1999,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

1999199920002000

expect(scoped.plugins.find((entry) => entry.id === "command-plugin")?.status).toBe("loaded");

20012001

expect(scoped.commands.map((entry) => entry.command.name)).toEqual(["pair"]);

2002-

expect(getPluginCommandSpecs("telegram")).toEqual([]);

2002+

expect(getPluginCommandSpecs("telegram")).toStrictEqual([]);

2003200320042004

const active = loadOpenClawPlugins({

20052005

cache: false,

@@ -2065,7 +2065,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

20652065

},

20662066

},

20672067

});

2068-

expect(listAgentHarnessIds()).toEqual([]);

2068+

expect(listAgentHarnessIds()).toStrictEqual([]);

20692069

});

2070207020712071

it("rejects malformed plugin agent harness registrations", () => {

@@ -2096,7 +2096,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

20962096

onlyPluginIds: ["bad-harness"],

20972097

});

209820982099-

expect(listAgentHarnessIds()).toEqual([]);

2099+

expect(listAgentHarnessIds()).toStrictEqual([]);

21002100

expect(registry.diagnostics).toContainEqual(

21012101

expect.objectContaining({

21022102

level: "error",

@@ -2137,7 +2137,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

21372137

"loaded",

21382138

);

21392139

expect(scoped.hooks.map((entry) => entry.entry.hook.name)).toEqual(["snapshot-hook"]);

2140-

expect(getRegisteredEventKeys()).toEqual([]);

2140+

expect(getRegisteredEventKeys()).toStrictEqual([]);

2141214121422142

clearInternalHooks();

21432143

});

@@ -2315,19 +2315,19 @@ module.exports = { id: "throws-after-import", register() {} };`,

23152315

expect(registry.plugins.find((entry) => entry.id === "failing-side-effects")?.status).toBe(

23162316

"error",

23172317

);

2318-

expect(getRegisteredEventKeys()).toEqual([]);

2319-

expect(getPluginCommandSpecs()).toEqual([]);

2320-

expect(registry.reloads).toEqual([]);

2321-

expect(registry.nodeHostCommands).toEqual([]);

2322-

expect(registry.nodeInvokePolicies).toEqual([]);

2323-

expect(registry.securityAuditCollectors).toEqual([]);

2318+

expect(getRegisteredEventKeys()).toStrictEqual([]);

2319+

expect(getPluginCommandSpecs()).toStrictEqual([]);

2320+

expect(registry.reloads).toStrictEqual([]);

2321+

expect(registry.nodeHostCommands).toStrictEqual([]);

2322+

expect(registry.nodeInvokePolicies).toStrictEqual([]);

2323+

expect(registry.securityAuditCollectors).toStrictEqual([]);

23242324

expect(resolvePluginInteractiveNamespaceMatch("slack", "failme:payload")).toBeNull();

23252325

expect(getContextEngineFactory("failme-context")).toBeUndefined();

23262326

expect(listContextEngineIds()).not.toContain("failme-context");

2327232723282328

const event = createInternalHookEvent("gateway", "startup", "gateway:startup");

23292329

await triggerInternalHook(event);

2330-

expect(event.messages).toEqual([]);

2330+

expect(event.messages).toStrictEqual([]);

2331233123322332

clearInternalHooks();

23332333

clearPluginCommands();

@@ -2365,8 +2365,8 @@ module.exports = { id: "throws-after-import", register() {} };`,

23652365

expect(record?.status).toBe("error");

23662366

expect(record?.failurePhase).toBe("register");

23672367

expect(record?.error).toContain("hook registration missing name");

2368-

expect(registry.hooks).toEqual([]);

2369-

expect(getRegisteredEventKeys()).toEqual([]);

2368+

expect(registry.hooks).toStrictEqual([]);

2369+

expect(getRegisteredEventKeys()).toStrictEqual([]);

23702370

expectDiagnosticContaining({

23712371

registry,

23722372

level: "error",

@@ -2633,11 +2633,11 @@ module.exports = { id: "throws-after-import", register() {} };`,

26332633

});

2634263426352635

expect(registry.plugins.find((entry) => entry.id === "failing-memory")?.status).toBe("error");

2636-

expect(buildMemoryPromptSection({ availableTools: new Set() })).toEqual([]);

2637-

expect(listMemoryCorpusSupplements()).toEqual([]);

2636+

expect(buildMemoryPromptSection({ availableTools: new Set() })).toStrictEqual([]);

2637+

expect(listMemoryCorpusSupplements()).toStrictEqual([]);

26382638

expect(resolveMemoryFlushPlan({})).toBeNull();

26392639

expect(getMemoryRuntime()).toBeUndefined();

2640-

expect(listMemoryEmbeddingProviders()).toEqual([]);

2640+

expect(listMemoryEmbeddingProviders()).toStrictEqual([]);

26412641

});

2642264226432643

it("does not replace the active detached task runtime during non-activating loads", () => {

@@ -2827,7 +2827,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

2827282728282828

clearPluginCommands();

28292829

clearPluginInteractiveHandlerRegistrations();

2830-

expect(getPluginCommandSpecs()).toEqual([]);

2830+

expect(getPluginCommandSpecs()).toStrictEqual([]);

28312831

expect(resolvePluginInteractiveNamespaceMatch("telegram", "hue:on")).toBeNull();

2832283228332833

loadOpenClawPlugins(loadOptions);

@@ -3088,7 +3088,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

30883088

},

30893089

});

309030903091-

expect(registry.tools).toEqual([]);

3091+

expect(registry.tools).toStrictEqual([]);

30923092

expect(registry.diagnostics).toEqual(

30933093

expect.arrayContaining([

30943094

expect.objectContaining({

@@ -3130,7 +3130,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

31303130

},

31313131

});

313231323133-

expect(registry.tools).toEqual([]);

3133+

expect(registry.tools).toStrictEqual([]);

31343134

expect(registry.diagnostics).toEqual(

31353135

expect.arrayContaining([

31363136

expect.objectContaining({

@@ -3178,7 +3178,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

31783178

expect(second).toBe(first);

31793179

expect((globalThis as Record<string, unknown>)[marker]).toBe(1);

31803180

expect(first.commands.map((entry) => entry.command.name)).toEqual(["snapshot-command"]);

3181-

expect(getPluginCommandSpecs()).toEqual([]);

3181+

expect(getPluginCommandSpecs()).toStrictEqual([]);

3182318231833183

const active = loadOpenClawPlugins({

31843184

workspaceDir: plugin.dir,

@@ -4081,7 +4081,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

40814081

pluginId: "memory-prompt-supplement-malformed",

40824082

message: "memory prompt supplement registration missing builder",

40834083

});

4084-

expect(listMemoryPromptSupplements()).toEqual([]);

4084+

expect(listMemoryPromptSupplements()).toStrictEqual([]);

40854085

},

40864086

},

40874087

{

@@ -4315,7 +4315,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

43154315

expect(record?.gatewayDiscoveryServiceIds).toEqual(["shared-service"]);

43164316

expect(registry.services).toHaveLength(1);

43174317

expect(registry.gatewayDiscoveryServices).toHaveLength(1);

4318-

expect(registry.diagnostics).toEqual([]);

4318+

expect(registry.diagnostics).toStrictEqual([]);

43194319

});

4320432043214321

it("rewrites removed registerHttpHandler failures into migration diagnostics", () => {

@@ -4418,7 +4418,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

44184418

);

44194419

expect(routes).toHaveLength(1);

44204420

expect(routes[0]?.path).toBe("/demo");

4421-

expect(registry.diagnostics).toEqual([]);

4421+

expect(registry.diagnostics).toStrictEqual([]);

44224422

},

44234423

},

44244424

{

@@ -4489,7 +4489,7 @@ module.exports = { id: "throws-after-import", register() {} };`,

44894489

(entry) => entry.pluginId === "http-route-overlap-same-auth",

44904490

);

44914491

expect(routes).toHaveLength(2);

4492-

expect(registry.diagnostics).toEqual([]);

4492+

expect(registry.diagnostics).toStrictEqual([]);

44934493

},

44944494

},

44954495

] as const;

@@ -5620,7 +5620,7 @@ module.exports = {

56205620

},

56215621

});

562256225623-

expect(registry.typedHooks).toEqual([]);

5623+

expect(registry.typedHooks).toStrictEqual([]);

56245624

const blockedDiagnostics = registry.diagnostics.filter((diag) =>

56255625

diag.message.includes(

56265626

"non-bundled plugins must set plugins.entries.conversation-hooks.hooks.allowConversationAccess=true",

@@ -6875,7 +6875,7 @@ module.exports = {

68756875

},

68766876

});

687768776878-

expect(warnings).toEqual([]);

6878+

expect(warnings).toStrictEqual([]);

68796879

expectDiagnosticContaining({

68806880

registry,

68816881

level: "warn",