From 1fd8737291ac3564eb1cb15a13c502eef77a7241 Mon Sep 17 00:00:00 2001 From: LeoGe Date: Sun, 24 May 2026 01:07:05 +0800 Subject: [PATCH] fix(plugin): add fallback for runtime.state.resolveStateDir on OpenClaw >=2026.5.x On OpenClaw 2026.5.20, api.runtime.state is undefined during plugin registration, causing memory-tencentdb to fail register with 'Cannot read properties of undefined (reading resolveStateDir)'. Add optional chaining with os.homedir() fallback so the plugin can resolve its data directory even when the runtime.state API isn't yet populated at registration time. Fixes #78 --- index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.ts b/index.ts index b7f67ed..4fcf5d4 100644 --- a/index.ts +++ b/index.ts @@ -217,7 +217,7 @@ export default function register(api: OpenClawPluginApi) { } // Resolve plugin data directory via runtime API (avoid importing internal paths directly) - const pluginDataDir = path.join(api.runtime.state.resolveStateDir(), "memory-tdai"); + const pluginDataDir = path.join((api.runtime.state?.resolveStateDir ? api.runtime.state.resolveStateDir() : require('os').homedir() + '/.openclaw'), "memory-tdai"); initDataDirectories(pluginDataDir); api.logger.debug?.(`${TAG} Data dir: ${pluginDataDir} (all subdirectories initialized)`); @@ -823,7 +823,7 @@ export default function register(api: OpenClawPluginApi) { registerMemoryTdaiCli(memoryTdai, { config, pluginConfig: api.pluginConfig, - stateDir: api.runtime.state.resolveStateDir(), + stateDir: (api.runtime.state?.resolveStateDir ? api.runtime.state.resolveStateDir() : require('os').homedir() + '/.openclaw'), logger: cliLogger, }); },