@t0ken.ai/memoryx-openclaw-plugin 2.2.33 → 2.2.35

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAkDH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;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;AAqDD,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,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC,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,wBAgxBE;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAkDH,UAAU,YAAY;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;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;AAqDD,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,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAUpC,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,wBA4vBE;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ import * as fs from "fs";
26
26
  import * as path from "path";
27
27
  import * as os from "os";
28
28
  // 插件版本号 - 由 prebuild 脚本自动从 package.json 同步
29
- const PLUGIN_VERSION = "2.2.33";
29
+ const PLUGIN_VERSION = "2.2.35";
30
30
  const DEFAULT_API_BASE = "https://t0ken.ai/api";
31
31
  const PLUGIN_DIR = path.join(os.homedir(), ".openclaw", "extensions", "memoryx-openclaw-plugin");
32
32
  let logStream = null;
@@ -743,53 +743,27 @@ export default {
743
743
  catch (e) {
744
744
  log(`[Proxy] Failed to extract credentials: ${e}`);
745
745
  }
746
- // OpenClaw config 动态提取模型列表
747
- // Model id 不需要 provider 前缀,因为 OpenClaw 会先设置 provider,
748
- // 然后在那个 provider 下查找 model
749
- function extractModelsFromConfig(config) {
750
- const models = [
751
- // 默认虚拟模型 - 类似 SlimClaw 的 auto
752
- {
753
- id: 'auto',
754
- name: 'MemoryX Auto Router',
755
- reasoning: true,
756
- input: ['text', 'image'],
757
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
758
- contextWindow: 200000,
759
- maxTokens: 8192,
760
- },
761
- ];
762
- // 从配置中提取所有模型(不加前缀)
763
- if (config?.models?.providers) {
764
- for (const [providerId, providerConfig] of Object.entries(config.models.providers)) {
765
- const pc = providerConfig;
766
- if (pc.models && Array.isArray(pc.models)) {
767
- pc.models.forEach((modelId) => {
768
- models.push({
769
- id: modelId, // 不加前缀,直接用原始 model id
770
- name: `${modelId} (via MemoryX)`,
771
- reasoning: true,
772
- input: ['text'],
773
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
774
- contextWindow: 128000,
775
- maxTokens: 8192,
776
- });
777
- });
778
- }
779
- }
780
- }
781
- log(`[Proxy] Extracted ${models.length} models from config`);
782
- return models;
783
- }
784
- // 注册 Proxy Provider
746
+ // 简化方案:只注册一个虚拟模型 "auto"
747
+ // before_model_resolve 拦截所有请求,改为使用 memoryx-proxy/auto
748
+ // sendMessage 用原始模型去代理,用户无感知
749
+ const VIRTUAL_MODEL = {
750
+ id: 'auto',
751
+ name: 'MemoryX Auto Router',
752
+ reasoning: true,
753
+ input: ['text', 'image'],
754
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
755
+ contextWindow: 200000,
756
+ maxTokens: 8192,
757
+ };
758
+ log(`[Proxy] Using simplified virtual model: auto`);
759
+ // 注册 Proxy Provider - 只注册一个虚拟模型 "auto"
785
760
  api.registerProvider({
786
761
  id: 'memoryx-proxy',
787
762
  name: 'MemoryX Proxy Provider',
788
- // 声明支持的模型 - 从配置动态提取
789
763
  models: {
790
764
  baseUrl: 'http://memoryx-proxy.local',
791
765
  api: 'anthropic-messages',
792
- models: extractModelsFromConfig(api.config),
766
+ models: [VIRTUAL_MODEL], // 只注册 auto
793
767
  },
794
768
  async sendMessage(params) {
795
769
  const requestId = `req-${Date.now()}`;
@@ -862,13 +836,12 @@ export default {
862
836
  log(`[Proxy] Memory injection failed: ${e}`);
863
837
  }
864
838
  // ========== 转发请求 ==========
865
- // 解析 model ID:去除 memoryx-proxy/ 前缀
866
- let actualModel = params.model || '';
867
- if (actualModel.startsWith('memoryx-proxy/')) {
868
- actualModel = actualModel.substring('memoryx-proxy/'.length);
869
- }
839
+ // 使用原始模型(从 lastRequestInfo 获取,由 before_model_resolve 保存)
840
+ // params.model "auto"(虚拟模型),不能用
841
+ const actualModel = lastRequestInfo.model || params.model || 'claude-sonnet-4-20250514';
870
842
  // 确定目标 provider(从 lastRequestInfo 或原始 provider)
871
843
  const targetProvider = lastRequestInfo.provider || params.provider || 'anthropic';
844
+ log(`\n[Proxy] Using original model from lastRequestInfo: ${lastRequestInfo.model}`);
872
845
  const credentials = providerCredentials.get(targetProvider);
873
846
  if (!credentials) {
874
847
  log(`[Proxy] ❌ No credentials for provider: ${targetProvider}`);
@@ -954,19 +927,25 @@ export default {
954
927
  // 保存原始请求信息,供 sendMessage 使用
955
928
  let lastRequestInfo = {};
956
929
  // 用 before_model_resolve 自动切换到 Proxy Provider
957
- // 注意:event 只有 prompt 字段,provider 信息在 ctx.messageProvider
930
+ // 关键:同时覆盖 provider model,让 OpenClaw 找到 memoryx-proxy/auto
931
+ // 原始 model 保存在 lastRequestInfo 中,sendMessage 用它去代理
958
932
  api.on('before_model_resolve', (event, ctx) => {
959
933
  log(`\n[before_model_resolve] Intercepting request`);
960
934
  log(` Prompt Preview: ${event.prompt?.slice(0, 200)}...`);
961
935
  log(` Context Provider: ${ctx.messageProvider}`);
936
+ log(` Context Model: ${ctx.model}`);
962
937
  log(` Context AgentId: ${ctx.agentId}`);
963
938
  // 保存原始信息(从 context 获取)
964
939
  lastRequestInfo = {
940
+ model: ctx.model,
965
941
  provider: ctx.messageProvider
966
942
  };
967
- // 只覆盖 provider,让 OpenClaw 使用原始 model
943
+ log(`[before_model_resolve] Saved original: model=${ctx.model}, provider=${ctx.messageProvider}`);
944
+ // 同时覆盖 provider 和 model
945
+ // 这样 OpenClaw 会找 memoryx-proxy/auto,一定能找到
968
946
  return {
969
- providerOverride: 'memoryx-proxy'
947
+ providerOverride: 'memoryx-proxy',
948
+ modelOverride: 'auto'
970
949
  };
971
950
  });
972
951
  api.logger.info('[MemoryX] 🔄 Auto-routing enabled - all requests will go through MemoryX Proxy');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-openclaw-plugin",
3
- "version": "2.2.33",
3
+ "version": "2.2.35",
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",