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

推荐订阅源

GbyAI
GbyAI
The GitHub Blog
The GitHub Blog
小众软件
小众软件
美团技术团队
博客园 - 司徒正美
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
罗磊的独立博客
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
J
Java Code Geeks
Last Week in AI
Last Week in AI
V
Visual Studio Blog
Microsoft Azure Blog
Microsoft Azure Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Proofpoint News Feed
V
V2EX
C
Check Point Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MyScale Blog
MyScale Blog

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(config): drop dead baseline and node wrappers · ...
vincentkoc · 2026-06-19 · via Recent Commits to openclaw:main
Original file line numberDiff line numberDiff line change

@@ -5,7 +5,6 @@ import { beforeAll, describe, expect, it, vi } from "vitest";

55

import { withTempDir } from "../test-helpers/temp-dir.js";

66

import {

77

type ConfigDocBaselineEntry,

8-

flattenConfigDocBaselineEntries,

98

renderConfigDocBaselineArtifacts,

109

writeConfigDocBaselineArtifacts,

1110

} from "./doc-baseline.js";

@@ -44,7 +43,13 @@ describe("config doc baseline integration", () => {

4443

function getSharedByPath() {

4544

sharedByPathPromise ??= getSharedRendered().then(

4645

({ baseline }) =>

47-

new Map(flattenConfigDocBaselineEntries(baseline).map((entry) => [entry.path, entry])),

46+

new Map(

47+

[

48+

...baseline.coreEntries,

49+

...baseline.channelEntries,

50+

...baseline.pluginEntries,

51+

].map((entry) => [entry.path, entry]),

52+

),

4853

);

4954

return sharedByPathPromise;

5055

}

Original file line numberDiff line numberDiff line change

@@ -3,18 +3,9 @@ import { describe, expect, it } from "vitest";

33

import {

44

collectConfigDocBaselineEntries,

55

dedupeConfigDocBaselineEntries,

6-

normalizeConfigDocBaselineHelpPath,

76

} from "./doc-baseline.js";

87
98

describe("config doc baseline", () => {

10-

it("normalizes array and record paths to wildcard form", () => {

11-

expect(normalizeConfigDocBaselineHelpPath("agents.list[].skills")).toBe("agents.list.*.skills");

12-

expect(normalizeConfigDocBaselineHelpPath("session.sendPolicy.rules[0].match.keyPrefix")).toBe(

13-

"session.sendPolicy.rules.*.match.keyPrefix",

14-

);

15-

expect(normalizeConfigDocBaselineHelpPath(".env.*.")).toBe("env.*");

16-

});

17-
189

it("merges tuple item metadata instead of dropping earlier entries", () => {

1910

const entries = dedupeConfigDocBaselineEntries(

2011

collectConfigDocBaselineEntries(

Original file line numberDiff line numberDiff line change

@@ -519,12 +519,6 @@ function splitConfigDocBaselineEntries(entries: ConfigDocBaselineEntry[]): {

519519

return { coreEntries, channelEntries, pluginEntries };

520520

}

521521
522-

export function flattenConfigDocBaselineEntries(

523-

baseline: ConfigDocBaseline,

524-

): ConfigDocBaselineEntry[] {

525-

return [...baseline.coreEntries, ...baseline.channelEntries, ...baseline.pluginEntries];

526-

}

527-
528522

async function buildConfigDocBaseline(): Promise<ConfigDocBaseline> {

529523

if (cachedConfigDocBaselinePromise) {

530524

return await cachedConfigDocBaselinePromise;

@@ -694,7 +688,3 @@ export async function writeConfigDocBaselineArtifacts(params?: {

694688

hashPath,

695689

};

696690

}

697-
698-

export function normalizeConfigDocBaselineHelpPath(pathValue: string): string {

699-

return normalizeBaselinePath(pathValue);

700-

}

Original file line numberDiff line numberDiff line change

@@ -1,6 +1,6 @@

11

// Node match tests cover node selection from names, ids, and address hints.

22

import { describe, expect, it } from "vitest";

3-

import { normalizeNodeKey, resolveNodeIdFromCandidates, resolveNodeMatches } from "./node-match.js";

3+

import { normalizeNodeKey, resolveNodeIdFromCandidates } from "./node-match.js";

44
55

describe("shared/node-match", () => {

66

it("normalizes node keys by lowercasing and collapsing separators", () => {

@@ -9,21 +9,6 @@ describe("shared/node-match", () => {

99

expect(normalizeNodeKey("###")).toBe("");

1010

});

1111
12-

it("matches candidates by node id, remote ip, normalized name, and long prefix", () => {

13-

const nodes = [

14-

{ nodeId: "mac-abcdef", displayName: "Mac Studio", remoteIp: "100.0.0.1" },

15-

{ nodeId: "pi-456789", displayName: "Raspberry Pi", remoteIp: "100.0.0.2" },

16-

];

17-
18-

expect(resolveNodeMatches(nodes, "mac-abcdef")).toEqual([nodes[0]]);

19-

expect(resolveNodeMatches(nodes, "100.0.0.2")).toEqual([nodes[1]]);

20-

expect(resolveNodeMatches(nodes, "mac studio")).toEqual([nodes[0]]);

21-

expect(resolveNodeMatches(nodes, " Mac---Studio!! ")).toEqual([nodes[0]]);

22-

expect(resolveNodeMatches(nodes, "pi-456")).toEqual([nodes[1]]);

23-

expect(resolveNodeMatches(nodes, "openclaw")).toStrictEqual([]);

24-

expect(resolveNodeMatches(nodes, " ")).toStrictEqual([]);

25-

});

26-
2712

it("resolves unique matches and prefers a unique connected node", () => {

2813

expect(

2914

resolveNodeIdFromCandidates(

Original file line numberDiff line numberDiff line change

@@ -142,14 +142,6 @@ function resolveScoredMatches(nodes: NodeMatchCandidate[], query: string): Score

142142

.filter((entry): entry is ScoredNodeMatch => entry !== null);

143143

}

144144
145-

/** Returns candidates matching a node id, remote ip, normalized display name, or long id prefix. */

146-

export function resolveNodeMatches(

147-

nodes: NodeMatchCandidate[],

148-

query: string,

149-

): NodeMatchCandidate[] {

150-

return resolveScoredMatches(nodes, query).map((entry) => entry.node);

151-

}

152-
153145

/** Resolves a single node id or throws an operator-readable unknown/ambiguous-node error. */

154146

export function resolveNodeIdFromCandidates(nodes: NodeMatchCandidate[], query: string): string {

155147

const q = query.trim();