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

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,wBA+sBE;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,wBAgxBE;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.31";
29
+ const PLUGIN_VERSION = "2.2.33";
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,10 +743,54 @@ 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
+ }
746
784
  // 注册 Proxy Provider
747
785
  api.registerProvider({
748
786
  id: 'memoryx-proxy',
749
787
  name: 'MemoryX Proxy Provider',
788
+ // 声明支持的模型 - 从配置动态提取
789
+ models: {
790
+ baseUrl: 'http://memoryx-proxy.local',
791
+ api: 'anthropic-messages',
792
+ models: extractModelsFromConfig(api.config),
793
+ },
750
794
  async sendMessage(params) {
751
795
  const requestId = `req-${Date.now()}`;
752
796
  // ========== 详细日志 ==========
@@ -818,8 +862,13 @@ export default {
818
862
  log(`[Proxy] Memory injection failed: ${e}`);
819
863
  }
820
864
  // ========== 转发请求 ==========
821
- // 确定目标 provider
822
- const targetProvider = params.provider || 'anthropic';
865
+ // 解析 model ID:去除 memoryx-proxy/ 前缀
866
+ let actualModel = params.model || '';
867
+ if (actualModel.startsWith('memoryx-proxy/')) {
868
+ actualModel = actualModel.substring('memoryx-proxy/'.length);
869
+ }
870
+ // 确定目标 provider(从 lastRequestInfo 或原始 provider)
871
+ const targetProvider = lastRequestInfo.provider || params.provider || 'anthropic';
823
872
  const credentials = providerCredentials.get(targetProvider);
824
873
  if (!credentials) {
825
874
  log(`[Proxy] ❌ No credentials for provider: ${targetProvider}`);
@@ -829,10 +878,11 @@ export default {
829
878
  log(`\n--- Forwarding Request ---`);
830
879
  log(`Target Provider: ${targetProvider}`);
831
880
  log(`Target URL: ${credentials.baseUrl}`);
832
- log(`Model: ${params.model}`);
881
+ log(`Original Model: ${params.model}`);
882
+ log(`Actual Model: ${actualModel}`);
833
883
  // 构建转发请求
834
884
  const forwardBody = {
835
- model: params.model,
885
+ model: actualModel, // 使用去除前缀后的 model
836
886
  messages: params.messages,
837
887
  system: enhancedSystemPrompt, // 注入后的 system prompt
838
888
  stream: params.stream,
@@ -901,11 +951,20 @@ export default {
901
951
  }
902
952
  });
903
953
  api.logger.info('[MemoryX] 🔄 Proxy provider registered: memoryx-proxy');
954
+ // 保存原始请求信息,供 sendMessage 使用
955
+ let lastRequestInfo = {};
904
956
  // 用 before_model_resolve 自动切换到 Proxy Provider
957
+ // 注意:event 只有 prompt 字段,provider 信息在 ctx.messageProvider
905
958
  api.on('before_model_resolve', (event, ctx) => {
906
959
  log(`\n[before_model_resolve] Intercepting request`);
907
- log(` Original Model: ${event.model}`);
908
960
  log(` Prompt Preview: ${event.prompt?.slice(0, 200)}...`);
961
+ log(` Context Provider: ${ctx.messageProvider}`);
962
+ log(` Context AgentId: ${ctx.agentId}`);
963
+ // 保存原始信息(从 context 获取)
964
+ lastRequestInfo = {
965
+ provider: ctx.messageProvider
966
+ };
967
+ // 只覆盖 provider,让 OpenClaw 使用原始 model
909
968
  return {
910
969
  providerOverride: 'memoryx-proxy'
911
970
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-openclaw-plugin",
3
- "version": "2.2.31",
3
+ "version": "2.2.33",
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",