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

推荐订阅源

月光博客
月光博客
MyScale Blog
MyScale Blog
博客园 - Franky
The Cloudflare Blog
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
博客园 - 聂微东
WordPress大学
WordPress大学
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
The Blog of Author Tim Ferriss
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
Martin Fowler
Martin Fowler
aimingoo的专栏
aimingoo的专栏
J
Java Code Geeks
腾讯CDC
雷峰网
雷峰网
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
博客园 - 【当耐特】
美团技术团队
云风的 BLOG
云风的 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
test: restore auth regression coverage · openclaw/opencla...
steipete · 2026-05-26 · via Recent Commits to openclaw:main

@@ -2588,13 +2588,29 @@ describe("createTelegramBot", () => {

2588258825892589

it("reloads topic agent overrides between messages without recreating the bot", async () => {

25902590

let topicAgentId = "topic-a";

2591-

const resolveTopicConfig = () =>

2592-

resolveTelegramScopedGroupConfig(

2593-

{

2594-

groupPolicy: "open",

2595-

groups: {

2596-

"-1001234567890": {

2597-

requireMention: false,

2591+

const configForTopicAgent = () => ({

2592+

session: {

2593+

typingMode: "never",

2594+

},

2595+

messages: {

2596+

inbound: {

2597+

debounceMs: 0,

2598+

},

2599+

},

2600+

channels: {

2601+

telegram: {

2602+

botToken: "tok",

2603+

dmPolicy: "open",

2604+

allowFrom: ["*"],

2605+

direct: {

2606+

"123": {

2607+

topics: {

2608+

"99": {

2609+

agentId: topicAgentId,

2610+

},

2611+

},

2612+

},

2613+

"124": {

25982614

topics: {

25992615

"99": {

26002616

agentId: topicAgentId,

@@ -2603,13 +2619,42 @@ describe("createTelegramBot", () => {

26032619

},

26042620

},

26052621

},

2606-

-1001234567890,

2607-

99,

2608-

).topicConfig;

2622+

},

2623+

agents: {

2624+

list: [{ id: "topic-a" }, { id: "topic-b" }],

2625+

},

2626+

});

2627+

loadConfig.mockImplementation(configForTopicAgent);

2628+2629+

createTelegramBot({ token: "tok" });

2630+

const handler = getOnHandler("message") as (ctx: Record<string, unknown>) => Promise<void>;

2631+

replySpy.mockImplementation(async () => undefined);

2632+2633+

const sendTopicMessage = async (chatId: number, messageId: number, text: string) => {

2634+

await handler({

2635+

message: {

2636+

chat: { id: chatId, type: "private" },

2637+

from: { id: chatId, username: `user${chatId}` },

2638+

text,

2639+

date: 1736380800 + messageId,

2640+

message_id: messageId,

2641+

message_thread_id: 99,

2642+

},

2643+

me: { username: "openclaw_bot" },

2644+

getFile: async () => ({ download: async () => new Uint8Array() }),

2645+

});

2646+

};

2647+2648+

await sendTopicMessage(123, 44, "topic one");

2649+

expect(replySpy).toHaveBeenCalledTimes(1);

2650+

expect(replySpy.mock.calls.at(0)?.[0].SessionKey).toContain("agent:topic-a:");

2651+

expect(replySpy.mock.calls.at(0)?.[0].SessionKey).toContain("thread:123:99");

260926522610-

expect(resolveTopicConfig()?.agentId).toBe("topic-a");

26112653

topicAgentId = "topic-b";

2612-

expect(resolveTopicConfig()?.agentId).toBe("topic-b");

2654+

await sendTopicMessage(124, 45, "topic two");

2655+

expect(replySpy).toHaveBeenCalledTimes(2);

2656+

expect(replySpy.mock.calls.at(1)?.[0].SessionKey).toContain("agent:topic-b:");

2657+

expect(replySpy.mock.calls.at(1)?.[0].SessionKey).toContain("thread:124:99");

26132658

});

2614265926152660

it("routes non-default account DMs to the per-account fallback session without explicit bindings", async () => {