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

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
博客园 - Franky
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
月光博客
月光博客
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
J
Java Code Geeks
博客园 - 叶小钗
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志

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: remove Telegram session deps adapter (#96524) ·...
jalehman · 2026-06-25 · via Recent Commits to openclaw:main

@@ -12,6 +12,9 @@ type AnyMock = ReturnType<typeof vi.fn>;

1212

type AnyAsyncMock = ReturnType<typeof vi.fn<(...args: unknown[]) => Promise<unknown>>>;

1313

type GetRuntimeConfigFn =

1414

typeof import("openclaw/plugin-sdk/runtime-config-snapshot").getRuntimeConfig;

15+

type GetSessionEntryFn = typeof import("openclaw/plugin-sdk/session-store-runtime").getSessionEntry;

16+

type ListSessionEntriesFn =

17+

typeof import("openclaw/plugin-sdk/session-store-runtime").listSessionEntries;

1518

type LoadSessionStoreFn =

1619

typeof import("openclaw/plugin-sdk/session-store-runtime").loadSessionStore;

1720

type ResolveStorePathFn =

@@ -61,28 +64,43 @@ vi.mock("openclaw/plugin-sdk/web-media", () => ({

6164

}));

62656366

const {

67+

getSessionEntryMock,

6468

getRuntimeConfig,

69+

listSessionEntriesMock,

6570

loadSessionStoreMock,

6671

readSessionUpdatedAtMock,

6772

recordInboundSessionMock,

6873

resolveStorePathMock,

6974

sessionStoreEntries,

7075

} = vi.hoisted(

7176

(): {

77+

getSessionEntryMock: MockFn<GetSessionEntryFn>;

7278

getRuntimeConfig: MockFn<GetRuntimeConfigFn>;

79+

listSessionEntriesMock: MockFn<ListSessionEntriesFn>;

7380

loadSessionStoreMock: MockFn<LoadSessionStoreFn>;

7481

readSessionUpdatedAtMock: MockFn<ReadSessionUpdatedAtFn>;

7582

recordInboundSessionMock: MockFn<NonNullable<TelegramBotDeps["recordInboundSession"]>>;

7683

resolveStorePathMock: MockFn<ResolveStorePathFn>;

7784

sessionStoreEntries: { value: SessionStore };

7885

} => ({

7986

getRuntimeConfig: vi.fn<GetRuntimeConfigFn>(() => ({})),

80-

loadSessionStoreMock: vi.fn<LoadSessionStoreFn>(

81-

(_storePath, _opts) => sessionStoreEntries.value,

82-

),

8387

resolveStorePathMock: vi.fn<ResolveStorePathFn>(

8488

(storePath?: string) => storePath ?? sessionStorePath,

8589

),

90+

loadSessionStoreMock: vi.fn<LoadSessionStoreFn>(

91+

(_storePath, _opts) => sessionStoreEntries.value,

92+

),

93+

getSessionEntryMock: vi.fn<GetSessionEntryFn>(({ storePath, sessionKey, agentId }) => {

94+

const resolvedStorePath = storePath ?? resolveStorePathMock(undefined, { agentId });

95+

return loadSessionStoreMock(resolvedStorePath)[sessionKey];

96+

}),

97+

listSessionEntriesMock: vi.fn<ListSessionEntriesFn>(({ storePath, agentId } = {}) => {

98+

const resolvedStorePath = storePath ?? resolveStorePathMock(undefined, { agentId });

99+

return Object.entries(loadSessionStoreMock(resolvedStorePath)).map(([sessionKey, entry]) => ({

100+

sessionKey,

101+

entry,

102+

}));

103+

}),

86104

readSessionUpdatedAtMock: vi.fn<ReadSessionUpdatedAtFn>(() => undefined),

87105

recordInboundSessionMock: vi.fn(async () => undefined),

88106

sessionStoreEntries: { value: {} as SessionStore },

@@ -444,6 +462,8 @@ export const telegramBotRuntimeForTest: TelegramBotRuntimeForTest = {

444462

};

445463

export const telegramBotDepsForTest: TelegramBotDeps = {

446464

getRuntimeConfig,

465+

getSessionEntry: getSessionEntryMock,

466+

listSessionEntries: listSessionEntriesMock,

447467

loadSessionStore: loadSessionStoreMock as TelegramBotDeps["loadSessionStore"],

448468

resolveStorePath: resolveStorePathMock,

449469

readSessionUpdatedAt: readSessionUpdatedAtMock,

@@ -564,6 +584,19 @@ beforeEach(() => {

564584

loadSessionStoreMock.mockImplementation(() => sessionStoreEntries.value);

565585

resolveStorePathMock.mockReset();

566586

resolveStorePathMock.mockImplementation((storePath?: string) => storePath ?? sessionStorePath);

587+

getSessionEntryMock.mockReset();

588+

getSessionEntryMock.mockImplementation(({ storePath, sessionKey, agentId }) => {

589+

const resolvedStorePath = storePath ?? resolveStorePathMock(undefined, { agentId });

590+

return loadSessionStoreMock(resolvedStorePath)[sessionKey];

591+

});

592+

listSessionEntriesMock.mockReset();

593+

listSessionEntriesMock.mockImplementation(({ storePath, agentId } = {}) => {

594+

const resolvedStorePath = storePath ?? resolveStorePathMock(undefined, { agentId });

595+

return Object.entries(loadSessionStoreMock(resolvedStorePath)).map(([sessionKey, entry]) => ({

596+

sessionKey,

597+

entry,

598+

}));

599+

});

567600

readSessionUpdatedAtMock.mockReset();

568601

readSessionUpdatedAtMock.mockReturnValue(undefined);

569602

recordInboundSessionMock.mockReset();