diff --git a/CHANGELOG.md b/CHANGELOG.md index cacb7d356e7..7fca76efcc1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ Docs: https://docs.openclaw.ai - Gateway/media: route text-only `chat.send` image offloads through media-understanding fields so `agents.defaults.imageModel` can describe WebChat attachments instead of leaving only an opaque `media://inbound` marker. Fixes #72968. Thanks @vorajeeah. - CLI/onboarding: infer image input for common custom-provider vision model IDs, ask only for unknown models, and keep `--custom-image-input`/`--custom-text-input` overrides so vision-capable proxies do not get saved as text-only configs. Fixes #51869. Thanks @Antsoldier1974. - Models/OpenAI Codex: stop listing or resolving unsupported `openai-codex/gpt-5.4-mini` rows through Codex OAuth, keep stale discovery rows suppressed with a clear API-key-route hint, and leave direct `openai/gpt-5.4-mini` available. Fixes #73242. Thanks @0xCyda. +- Plugin SDK: restore the root-alias bridge for `registerContextEngine` and expose missing legacy compat helpers `normalizeAccountId` and `resolvePreferredOpenClawTmpDir` so older external plugins such as `openclaw-weixin` can keep loading while migrating to focused SDK subpaths. Fixes #53497. Thanks @alanxchen85. - Memory/Dreaming: retry Dream Diary once with the session default when a configured dreaming model is unavailable, while leaving subagent trust and allowlist errors visible instead of silently masking configuration problems. Refs #67409 and #69209. Thanks @Ghiggins18 and @everySympathy. - Feishu/inbound files: recover CJK filenames from plain `Content-Disposition: filename=` download headers when Feishu exposes UTF-8 bytes through Latin-1 header decoding, while leaving valid Latin-1 and JSON-derived names unchanged. (#48578, #50435, #59431) Thanks @alex-xuweilong, @lishuaigit, and @DoChaoing. - Channels/Telegram: normalize accidental full `/bot` Telegram `apiRoot` values at runtime and teach `openclaw doctor --fix` to remove the suffix, so startup control calls no longer 404 when direct Bot API curl commands work. Fixes #55387. Thanks @brendanmatthewjones-cmyk, @techfindubai-ux, and @Sivlerback-Chris. diff --git a/src/plugin-sdk/compat.ts b/src/plugin-sdk/compat.ts index 5ad6e71f26a..41751a45667 100644 --- a/src/plugin-sdk/compat.ts +++ b/src/plugin-sdk/compat.ts @@ -28,6 +28,7 @@ export { buildMemorySystemPromptAddition, delegateCompactionToRuntime, } from "../context-engine/delegate.js"; +export { registerContextEngine } from "../context-engine/registry.js"; export type { DiagnosticEventPayload } from "../infra/diagnostic-events.js"; export { onDiagnosticEvent } from "../infra/diagnostic-events.js"; export { @@ -42,6 +43,8 @@ export { export { createAccountStatusSink } from "./channel-lifecycle.core.js"; export { createPluginRuntimeStore } from "./runtime-store.js"; export { KeyedAsyncQueue } from "./keyed-async-queue.js"; +export { normalizeAccountId } from "./account-id.js"; +export { resolvePreferredOpenClawTmpDir } from "./temp-path.js"; export { createHybridChannelConfigAdapter, diff --git a/src/plugins/contracts/plugin-sdk-root-alias.test.ts b/src/plugins/contracts/plugin-sdk-root-alias.test.ts index 87ffe0706b7..8e28fff0d74 100644 --- a/src/plugins/contracts/plugin-sdk-root-alias.test.ts +++ b/src/plugins/contracts/plugin-sdk-root-alias.test.ts @@ -458,8 +458,15 @@ describe("plugin-sdk root alias", () => { }); it("loads legacy root exports through the merged root wrapper", { timeout: 240_000 }, () => { + expect(typeof rootSdk.emptyPluginConfigSchema).toBe("function"); + expect(typeof rootSdk.registerContextEngine).toBe("function"); + expect(typeof rootSdk.buildMemorySystemPromptAddition).toBe("function"); + expect(typeof rootSdk.delegateCompactionToRuntime).toBe("function"); expect(typeof rootSdk.resolveControlCommandGate).toBe("function"); expect(typeof rootSdk.onDiagnosticEvent).toBe("function"); + expect(typeof rootSdk.buildChannelConfigSchema).toBe("function"); + expect(typeof rootSdk.normalizeAccountId).toBe("function"); + expect(typeof rootSdk.resolvePreferredOpenClawTmpDir).toBe("function"); expect(typeof rootSdk.default).toBe("object"); expect(rootSdk.default).toBe(rootSdk); expect(rootSdk.__esModule).toBe(true);