mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-07 22:09:57 +00:00
fix: scope dm topic thread keys by chat id (#31064) (thanks @0xble)
This commit is contained in:
@@ -110,6 +110,7 @@ Docs: https://docs.openclaw.ai
|
||||
|
||||
### Fixes
|
||||
|
||||
- Telegram/DM topic session isolation: scope DM topic thread session keys by chat ID (`<chatId>:<threadId>`) and parse scoped thread IDs in outbound recovery so parallel DMs cannot collide on shared topic IDs. (#31064) Thanks @0xble.
|
||||
- Docs/Docker images: clarify the official GHCR image source and tag guidance (`main`, `latest`, `<version>`), and document that `OPENCLAW_IMAGE` skips local image builds but still uses the repo-local compose/setup flow. (#27214, #31180) Fixes #15655. Thanks @ipl31.
|
||||
- Agents/Model fallback: classify additional network transport errors (`ECONNREFUSED`, `ENETUNREACH`, `EHOSTUNREACH`, `ENETRESET`, `EAI_AGAIN`) as failover-worthy so fallback chains advance when primary providers are unreachable. Landed from contributor PR #19077 by @ayanesakura. Thanks @ayanesakura.
|
||||
- Agents/Copilot token refresh: refresh GitHub Copilot runtime API tokens after auth-expiry failures and re-run with the renewed token so long-running embedded/subagent turns do not fail on mid-session 401 expiry. Landed from contributor PR #8805 by @Arthur742Ramos. Thanks @Arthur742Ramos.
|
||||
|
||||
@@ -25,20 +25,20 @@ const screenMocks = vi.hoisted(() => ({
|
||||
}));
|
||||
|
||||
vi.mock("./gateway.js", () => ({
|
||||
callGatewayTool: gatewayMocks.callGatewayTool,
|
||||
readGatewayCallOptions: gatewayMocks.readGatewayCallOptions,
|
||||
callGatewayTool: (...args: unknown[]) => gatewayMocks.callGatewayTool(...args),
|
||||
readGatewayCallOptions: (...args: unknown[]) => gatewayMocks.readGatewayCallOptions(...args),
|
||||
}));
|
||||
|
||||
vi.mock("./nodes-utils.js", () => ({
|
||||
resolveNodeId: nodeUtilsMocks.resolveNodeId,
|
||||
listNodes: nodeUtilsMocks.listNodes,
|
||||
resolveNodeIdFromList: nodeUtilsMocks.resolveNodeIdFromList,
|
||||
resolveNodeId: (...args: unknown[]) => nodeUtilsMocks.resolveNodeId(...args),
|
||||
listNodes: (...args: unknown[]) => nodeUtilsMocks.listNodes(...args),
|
||||
resolveNodeIdFromList: (...args: unknown[]) => nodeUtilsMocks.resolveNodeIdFromList(...args),
|
||||
}));
|
||||
|
||||
vi.mock("../../cli/nodes-screen.js", () => ({
|
||||
parseScreenRecordPayload: screenMocks.parseScreenRecordPayload,
|
||||
screenRecordTempPath: screenMocks.screenRecordTempPath,
|
||||
writeScreenRecordToFile: screenMocks.writeScreenRecordToFile,
|
||||
parseScreenRecordPayload: (...args: unknown[]) => screenMocks.parseScreenRecordPayload(...args),
|
||||
screenRecordTempPath: (...args: unknown[]) => screenMocks.screenRecordTempPath(...args),
|
||||
writeScreenRecordToFile: (...args: unknown[]) => screenMocks.writeScreenRecordToFile(...args),
|
||||
}));
|
||||
|
||||
import { createNodesTool } from "./nodes-tool.js";
|
||||
|
||||
Reference in New Issue
Block a user