@t0ken.ai/memoryx-openclaw-plugin 2.2.32 → 2.2.34

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,wBAuwBE;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,wBAs0BE;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.32";
29
+ const PLUGIN_VERSION = "2.2.34";
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;
@@ -744,39 +744,89 @@ export default {
744
744
  log(`[Proxy] Failed to extract credentials: ${e}`);
745
745
  }
746
746
  // 从 OpenClaw config 动态提取模型列表
747
+ // OpenClaw 在 provider 下查找 model,所以 model id 不需要 provider 前缀
747
748
  function extractModelsFromConfig(config) {
748
- const models = [
749
- // 默认模型
750
- {
751
- id: 'default',
752
- name: 'MemoryX Auto Router',
753
- reasoning: true,
754
- input: ['text', 'image'],
755
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
756
- contextWindow: 200000,
757
- maxTokens: 8192,
758
- },
759
- ];
749
+ const modelsMap = new Map();
750
+ // 默认虚拟模型 - 类似 SlimClaw 的 auto
751
+ modelsMap.set('auto', {
752
+ id: 'auto',
753
+ name: 'MemoryX Auto Router',
754
+ reasoning: true,
755
+ input: ['text', 'image'],
756
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
757
+ contextWindow: 200000,
758
+ maxTokens: 8192,
759
+ });
760
760
  // 从配置中提取所有模型
761
761
  if (config?.models?.providers) {
762
762
  for (const [providerId, providerConfig] of Object.entries(config.models.providers)) {
763
763
  const pc = providerConfig;
764
- if (pc.models && Array.isArray(pc.models)) {
765
- pc.models.forEach((modelId) => {
766
- models.push({
767
- id: modelId,
768
- name: `${modelId} (via MemoryX)`,
769
- reasoning: true,
770
- input: ['text'],
771
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
772
- contextWindow: 128000,
773
- maxTokens: 8192,
764
+ log(`[Proxy] Checking provider ${providerId} for models...`);
765
+ // 检查多种可能的模型配置格式
766
+ const modelSources = [
767
+ pc.models, // array format: models: ["glm-5", "glm-4.7"]
768
+ pc.modelIds, // alternative name
769
+ pc.model?.models, // nested format
770
+ ];
771
+ for (const modelList of modelSources) {
772
+ if (modelList && Array.isArray(modelList)) {
773
+ modelList.forEach((modelId) => {
774
+ if (typeof modelId === 'string' && !modelsMap.has(modelId)) {
775
+ modelsMap.set(modelId, {
776
+ id: modelId,
777
+ name: `${modelId} (via MemoryX)`,
778
+ reasoning: true,
779
+ input: ['text'],
780
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
781
+ contextWindow: 128000,
782
+ maxTokens: 8192,
783
+ });
784
+ log(`[Proxy] Added model: ${modelId} from provider ${providerId}`);
785
+ }
774
786
  });
775
- });
787
+ }
788
+ }
789
+ // 检查 object format: models: { "glm-5": {...}, "glm-4.7": {...} }
790
+ if (pc.models && typeof pc.models === 'object' && !Array.isArray(pc.models)) {
791
+ for (const modelId of Object.keys(pc.models)) {
792
+ if (!modelsMap.has(modelId)) {
793
+ modelsMap.set(modelId, {
794
+ id: modelId,
795
+ name: `${modelId} (via MemoryX)`,
796
+ reasoning: true,
797
+ input: ['text'],
798
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
799
+ contextWindow: 128000,
800
+ maxTokens: 8192,
801
+ });
802
+ log(`[Proxy] Added model: ${modelId} from provider ${providerId} (object format)`);
803
+ }
804
+ }
776
805
  }
777
806
  }
778
807
  }
779
- log(`[Proxy] Extracted ${models.length} models from config`);
808
+ // 添加常用模型(硬编码备用)
809
+ const fallbackModels = [
810
+ 'gpt-4o', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-3.5-turbo',
811
+ 'claude-sonnet-4-20250514', 'claude-3-5-sonnet-20241022', 'claude-3-haiku-20240307',
812
+ 'glm-4', 'glm-4-plus', 'glm-4-air', 'glm-4.7', 'glm-5',
813
+ ];
814
+ for (const modelId of fallbackModels) {
815
+ if (!modelsMap.has(modelId)) {
816
+ modelsMap.set(modelId, {
817
+ id: modelId,
818
+ name: `${modelId} (via MemoryX)`,
819
+ reasoning: true,
820
+ input: ['text'],
821
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
822
+ contextWindow: 128000,
823
+ maxTokens: 8192,
824
+ });
825
+ log(`[Proxy] Added fallback model: ${modelId}`);
826
+ }
827
+ }
828
+ const models = Array.from(modelsMap.values());
829
+ log(`[Proxy] Total models extracted: ${models.length}`);
780
830
  return models;
781
831
  }
782
832
  // 注册 Proxy Provider
@@ -860,8 +910,13 @@ export default {
860
910
  log(`[Proxy] Memory injection failed: ${e}`);
861
911
  }
862
912
  // ========== 转发请求 ==========
863
- // 确定目标 provider
864
- const targetProvider = params.provider || 'anthropic';
913
+ // 解析 model ID:去除 memoryx-proxy/ 前缀
914
+ let actualModel = params.model || '';
915
+ if (actualModel.startsWith('memoryx-proxy/')) {
916
+ actualModel = actualModel.substring('memoryx-proxy/'.length);
917
+ }
918
+ // 确定目标 provider(从 lastRequestInfo 或原始 provider)
919
+ const targetProvider = lastRequestInfo.provider || params.provider || 'anthropic';
865
920
  const credentials = providerCredentials.get(targetProvider);
866
921
  if (!credentials) {
867
922
  log(`[Proxy] ❌ No credentials for provider: ${targetProvider}`);
@@ -871,10 +926,11 @@ export default {
871
926
  log(`\n--- Forwarding Request ---`);
872
927
  log(`Target Provider: ${targetProvider}`);
873
928
  log(`Target URL: ${credentials.baseUrl}`);
874
- log(`Model: ${params.model}`);
929
+ log(`Original Model: ${params.model}`);
930
+ log(`Actual Model: ${actualModel}`);
875
931
  // 构建转发请求
876
932
  const forwardBody = {
877
- model: params.model,
933
+ model: actualModel, // 使用去除前缀后的 model
878
934
  messages: params.messages,
879
935
  system: enhancedSystemPrompt, // 注入后的 system prompt
880
936
  stream: params.stream,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t0ken.ai/memoryx-openclaw-plugin",
3
- "version": "2.2.32",
3
+ "version": "2.2.34",
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",