@t0ken.ai/memoryx-openclaw-plugin 2.2.13 → 2.2.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -45,6 +45,7 @@ interface RecallResult {
45
45
  declare class MemoryXPlugin {
46
46
  private pluginConfig;
47
47
  private initialized;
48
+ private timersStarted;
48
49
  constructor(pluginConfig?: PluginConfig);
49
50
  init(): Promise<void>;
50
51
  onMessage(role: string, content: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA4CH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA4CD,cAAM,aAAa;IACf,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAAkB;gBAEzB,YAAY,CAAC,EAAE,YAAY;IAIjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAad,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6B1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAyC/D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAcvE,IAAI,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBxC,cAAc,IAAI,OAAO,CAAC;QACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IAwBW,cAAc,IAAI,OAAO,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE;YACH,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC;YACrB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,gBAAgB,EAAE,MAAM,CAAC;YACzB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CAcL;;;;;;kBAUiB,GAAG,iBAAiB,YAAY,GAAG,IAAI;;AANzD,wBAoeE;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA+CH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,YAAY;IAClB,QAAQ,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,eAAe,EAAE,KAAK,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA8CD,cAAM,aAAa;IACf,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAkB;gBAE3B,YAAY,CAAC,EAAE,YAAY;IAIjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAad,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqC1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAyC/D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYhC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAcvE,IAAI,CAAC,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBxC,cAAc,IAAI,OAAO,CAAC;QACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IAwBW,cAAc,IAAI,OAAO,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,CAAC,EAAE;YACH,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,MAAM,CAAC;YACrB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,gBAAgB,EAAE,MAAM,CAAC;YACzB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;SACnB,CAAC;QACF,KAAK,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CAcL;;;;;;kBAUiB,GAAG,iBAAiB,YAAY,GAAG,IAAI;;AANzD,wBAqeE;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -25,15 +25,17 @@
25
25
  import * as fs from "fs";
26
26
  import * as path from "path";
27
27
  import * as os from "os";
28
- // Read version from package.json at module load time
28
+ // Lazy-load version to avoid blocking I/O at module load time
29
+ // OpenClaw loads plugins synchronously, so top-level sync I/O will block status command
29
30
  const PACKAGE_JSON_PATH = path.join(__dirname, "..", "package.json");
30
- let VERSION = "unknown";
31
- try {
32
- const packageJson = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, "utf-8"));
33
- VERSION = packageJson.version || "unknown";
34
- }
35
- catch {
36
- // Ignore if package.json not found
31
+ function getVersion() {
32
+ try {
33
+ const packageJson = JSON.parse(fs.readFileSync(PACKAGE_JSON_PATH, "utf-8"));
34
+ return packageJson.version || "unknown";
35
+ }
36
+ catch {
37
+ return "unknown";
38
+ }
37
39
  }
38
40
  const DEFAULT_API_BASE = "https://t0ken.ai/api";
39
41
  const PLUGIN_DIR = path.join(os.homedir(), ".openclaw", "extensions", "memoryx-openclaw-plugin");
@@ -75,12 +77,14 @@ async function getSDK(pluginConfig) {
75
77
  // 服务端重安装检测: agent_name + agent_type + machine_fingerprint
76
78
  const agentName = os.hostname();
77
79
  // Use conversation preset: maxTokens: 30000, intervalMs: 300000 (5 min)
80
+ // autoStartTimers: false - 延迟启动定时器,避免阻塞 openclaw status 命令
78
81
  sdkInstance = new MemoryXSDK({
79
82
  preset: 'conversation',
80
83
  apiUrl: pluginConfig?.apiBaseUrl || DEFAULT_API_BASE,
81
84
  autoRegister: true,
82
85
  agentType: 'openclaw',
83
- agentName: agentName // 使用主机名作为 agent_name,保证重安装稳定
86
+ agentName: agentName, // 使用主机名作为 agent_name,保证重安装稳定
87
+ autoStartTimers: false // 不自动启动定时器,在 onMessage 时手动启动
84
88
  // 不设置 storageDir,使用 SDK 默认目录 ~/.memoryx/sdk/
85
89
  // 这样可以读取到之前保存的配置
86
90
  });
@@ -97,6 +101,7 @@ async function getSDK(pluginConfig) {
97
101
  class MemoryXPlugin {
98
102
  pluginConfig;
99
103
  initialized = false;
104
+ timersStarted = false;
100
105
  constructor(pluginConfig) {
101
106
  this.pluginConfig = pluginConfig;
102
107
  }
@@ -115,6 +120,13 @@ class MemoryXPlugin {
115
120
  }
116
121
  async onMessage(role, content) {
117
122
  await this.init();
123
+ // 第一次收到消息时启动定时器
124
+ if (!this.timersStarted) {
125
+ const sdk = await getSDK(this.pluginConfig);
126
+ sdk.startTimers();
127
+ this.timersStarted = true;
128
+ log("Timers started on first message");
129
+ }
118
130
  if (!content || content.length < 2) {
119
131
  return false;
120
132
  }
@@ -271,7 +283,7 @@ let plugin;
271
283
  export default {
272
284
  id: "memoryx-openclaw-plugin",
273
285
  name: "MemoryX Realtime Plugin",
274
- get version() { return VERSION; },
286
+ get version() { return getVersion(); },
275
287
  description: "Real-time memory capture and recall for OpenClaw (powered by @t0ken.ai/memoryx-sdk)",
276
288
  register(api, pluginConfig) {
277
289
  api.logger.info("[MemoryX] Plugin registering...");
@@ -622,7 +634,8 @@ export default {
622
634
  }
623
635
  });
624
636
  // Assistant response capture via llm_output hook
625
- // Event structure: { assistantTexts: string[], lastAssistant?: unknown, usage?: {...} }
637
+ // AI responses are saved to conversation history (for rounds/maxTokens counting)
638
+ // But they do NOT trigger memory search - only user messages do that
626
639
  api.on("llm_output", async (event, ctx) => {
627
640
  const { assistantTexts } = event;
628
641
  if (assistantTexts && Array.isArray(assistantTexts) && plugin) {
@@ -678,7 +691,7 @@ export default {
678
691
  await plugin.endConversation();
679
692
  }
680
693
  });
681
- api.logger.info(`[MemoryX] ✅ Plugin v${VERSION} ready! Your conversations will be remembered automatically.`);
694
+ api.logger.info(`[MemoryX] ✅ Plugin v${getVersion()} ready! Your conversations will be remembered automatically.`);
682
695
  // Async check and show portal link after SDK initializes
683
696
  setImmediate(async () => {
684
697
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-openclaw-plugin",
3
- "version": "2.2.13",
3
+ "version": "2.2.16",
4
4
  "description": "MemoryX real-time memory capture and recall plugin for OpenClaw (powered by @t0ken.ai/memoryx-sdk)",
5
5
  "type": "module",
6
6
  "author": "MemoryX Team",