@t0ken.ai/memoryx-openclaw-plugin 2.2.39 → 2.2.41
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.map +1 -1
- package/dist/index.js +49 -19
- package/package.json +1 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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,wBAw2BE;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.
|
|
29
|
+
const PLUGIN_VERSION = "2.2.41";
|
|
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;
|
|
@@ -741,8 +741,11 @@ export default {
|
|
|
741
741
|
credentials.set(id, {
|
|
742
742
|
baseUrl: override?.baseUrl || pc.baseUrl,
|
|
743
743
|
apiKey,
|
|
744
|
+
models: pc.models, // 提取模型列表
|
|
744
745
|
});
|
|
745
|
-
|
|
746
|
+
const modelCount = pc.models?.length || 0;
|
|
747
|
+
const firstModel = pc.models?.[0]?.id || 'none';
|
|
748
|
+
log(`[Proxy] Extracted credentials for ${id}: baseUrl=${pc.baseUrl?.slice(0, 50)}..., models=${modelCount}, first=${firstModel}`);
|
|
746
749
|
}
|
|
747
750
|
}
|
|
748
751
|
}
|
|
@@ -751,19 +754,41 @@ export default {
|
|
|
751
754
|
// 提取凭证
|
|
752
755
|
const providerCredentials = extractProviderCredentials(api.config);
|
|
753
756
|
log(`[Proxy] Found ${providerCredentials.size} providers in config`);
|
|
754
|
-
//
|
|
755
|
-
|
|
757
|
+
// 获取第一个可用的 provider 和 model
|
|
758
|
+
function getFirstAvailableProvider() {
|
|
759
|
+
for (const [providerId, creds] of providerCredentials) {
|
|
760
|
+
if (creds.models && creds.models.length > 0) {
|
|
761
|
+
return {
|
|
762
|
+
provider: providerId,
|
|
763
|
+
model: creds.models[0].id, // 使用第一个模型
|
|
764
|
+
credentials: creds,
|
|
765
|
+
};
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
return null;
|
|
769
|
+
}
|
|
770
|
+
const firstProvider = getFirstAvailableProvider();
|
|
771
|
+
if (firstProvider) {
|
|
772
|
+
log(`[Proxy] First available: ${firstProvider.provider}/${firstProvider.model}`);
|
|
773
|
+
}
|
|
774
|
+
else {
|
|
775
|
+
log(`[Proxy] ⚠️ No providers with models found in config!`);
|
|
776
|
+
}
|
|
777
|
+
// 虚拟模型定义
|
|
778
|
+
// SlimClaw 用的是 'slimclaw/auto'(provider 前缀 + model id)
|
|
779
|
+
// 但 models 数组里的 id 只是 model 部分,不带 provider 前缀
|
|
780
|
+
// OpenClaw 会自动组合成 provider/model
|
|
756
781
|
const VIRTUAL_MODEL = {
|
|
757
|
-
id: '
|
|
782
|
+
id: 'auto', // 不要带 provider 前缀!OpenClaw 会自动组合
|
|
758
783
|
name: 'MemoryX Auto Router',
|
|
759
|
-
api: 'openai-completions',
|
|
784
|
+
api: 'openai-completions',
|
|
760
785
|
reasoning: true,
|
|
761
786
|
input: ['text', 'image'],
|
|
762
787
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
763
788
|
contextWindow: 200000,
|
|
764
789
|
maxTokens: 16384,
|
|
765
790
|
};
|
|
766
|
-
log(`[Proxy] Registering provider with virtual model: memoryx-proxy/auto`);
|
|
791
|
+
log(`[Proxy] Registering provider with virtual model: auto (will be memoryx-proxy/auto)`);
|
|
767
792
|
// 注册 Proxy Provider - 使用正确的 ModelProviderConfig 格式
|
|
768
793
|
api.registerProvider({
|
|
769
794
|
id: 'memoryx-proxy',
|
|
@@ -938,13 +963,16 @@ export default {
|
|
|
938
963
|
}
|
|
939
964
|
});
|
|
940
965
|
api.logger.info('[MemoryX] 🔄 Proxy provider registered: memoryx-proxy');
|
|
941
|
-
//
|
|
942
|
-
//
|
|
943
|
-
// config 结构可能是:
|
|
944
|
-
// - agents.defaults.model = "model-id" (string)
|
|
945
|
-
// - agents.defaults.model = { default: "model-id" } (object)
|
|
946
|
-
// - agents.defaults.model.default = "model-id" (nested)
|
|
966
|
+
// 获取用户配置的默认 model 和 provider
|
|
967
|
+
// 优先级:1) providerCredentials 中的第一个可用模型 2) agents.defaults 配置
|
|
947
968
|
const getDefaultModelAndProvider = () => {
|
|
969
|
+
// 首先尝试从 providerCredentials 获取
|
|
970
|
+
const first = getFirstAvailableProvider();
|
|
971
|
+
if (first) {
|
|
972
|
+
log(`[Proxy] Using first available from config.models.providers: ${first.provider}/${first.model}`);
|
|
973
|
+
return { model: first.model, provider: first.provider };
|
|
974
|
+
}
|
|
975
|
+
// 回退到 agents.defaults
|
|
948
976
|
const agentsDefaults = api.config?.agents?.defaults;
|
|
949
977
|
// 处理 model - 可能是 string 或 object
|
|
950
978
|
let model = 'claude-sonnet-4-20250514';
|
|
@@ -968,31 +996,33 @@ export default {
|
|
|
968
996
|
provider = typeof p.default === 'string' ? p.default : String(p.default);
|
|
969
997
|
}
|
|
970
998
|
}
|
|
999
|
+
log(`[Proxy] Using agents.defaults fallback: ${provider}/${model}`);
|
|
971
1000
|
return { model, provider };
|
|
972
1001
|
};
|
|
973
1002
|
// 保存原始请求信息,供 sendMessage 使用
|
|
974
1003
|
let lastRequestInfo = getDefaultModelAndProvider();
|
|
975
|
-
log(`[Proxy] Default model/provider
|
|
1004
|
+
log(`[Proxy] Default model/provider: ${lastRequestInfo.provider}/${lastRequestInfo.model}`);
|
|
976
1005
|
// 用 before_model_resolve 自动切换到 Proxy Provider
|
|
977
1006
|
// 关键:同时覆盖 provider 和 model,让 OpenClaw 找到 memoryx-proxy/auto
|
|
978
|
-
// 注意:hook context 没有 model,从 api.config 读取默认值
|
|
979
1007
|
api.on('before_model_resolve', (event, ctx) => {
|
|
980
1008
|
log(`\n[before_model_resolve] Intercepting request`);
|
|
981
1009
|
log(` Prompt Preview: ${event.prompt?.slice(0, 200)}...`);
|
|
982
1010
|
log(` Context messageProvider: ${ctx.messageProvider}`);
|
|
983
1011
|
log(` Context AgentId: ${ctx.agentId}`);
|
|
984
|
-
//
|
|
1012
|
+
// 获取用户配置的 model/provider
|
|
985
1013
|
const defaults = getDefaultModelAndProvider();
|
|
986
1014
|
lastRequestInfo = {
|
|
987
1015
|
model: defaults.model,
|
|
988
1016
|
provider: defaults.provider
|
|
989
1017
|
};
|
|
990
|
-
log(`[before_model_resolve]
|
|
1018
|
+
log(`[before_model_resolve] Will forward to: ${defaults.provider}/${defaults.model}`);
|
|
991
1019
|
// 同时覆盖 provider 和 model
|
|
992
|
-
// modelOverride
|
|
1020
|
+
// 注意:modelOverride 不要带 provider 前缀!
|
|
1021
|
+
// OpenClaw 会自动组合成 provider/modelOverride
|
|
1022
|
+
// 所以 modelOverride='auto' → 'memoryx-proxy/auto'
|
|
993
1023
|
return {
|
|
994
1024
|
providerOverride: 'memoryx-proxy',
|
|
995
|
-
modelOverride: 'memoryx-proxy/auto'
|
|
1025
|
+
modelOverride: 'auto' // 不要 'memoryx-proxy/auto'!
|
|
996
1026
|
};
|
|
997
1027
|
});
|
|
998
1028
|
api.logger.info('[MemoryX] 🔄 Auto-routing enabled - all requests will go through MemoryX Proxy');
|
package/package.json
CHANGED