@t0ken.ai/memoryx-openclaw-plugin 2.2.36 → 2.2.38
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 +64 -28
- 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,wBAg0BE;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.38";
|
|
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;
|
|
@@ -716,36 +716,42 @@ export default {
|
|
|
716
716
|
await plugin.endConversation();
|
|
717
717
|
}
|
|
718
718
|
});
|
|
719
|
-
//
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
// 从 OpenClaw config 提取 provider 凭证
|
|
723
|
-
const providerCredentials = new Map();
|
|
724
|
-
function extractProviderCredentials(config) {
|
|
719
|
+
// 从 OpenClaw config 提取 provider 凭证(使用 SlimClaw 的实现)
|
|
720
|
+
function extractProviderCredentials(config, providerOverrides) {
|
|
721
|
+
const credentials = new Map();
|
|
725
722
|
if (config?.models?.providers) {
|
|
726
723
|
for (const [id, providerConfig] of Object.entries(config.models.providers)) {
|
|
724
|
+
if (typeof providerConfig !== 'object' ||
|
|
725
|
+
providerConfig === null ||
|
|
726
|
+
!('baseUrl' in providerConfig)) {
|
|
727
|
+
continue;
|
|
728
|
+
}
|
|
727
729
|
const pc = providerConfig;
|
|
728
|
-
if (pc.baseUrl
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
730
|
+
if (pc.baseUrl) {
|
|
731
|
+
// Check for custom env var name in providerOverrides
|
|
732
|
+
const override = providerOverrides?.[id];
|
|
733
|
+
const customEnvName = override?.apiKeyEnv;
|
|
734
|
+
const customApiKey = override?.apiKey;
|
|
735
|
+
// Priority: explicit apiKey > custom env var > default env var convention
|
|
736
|
+
const apiKey = customApiKey ||
|
|
737
|
+
pc.apiKey ||
|
|
738
|
+
(customEnvName ? process.env[customEnvName] : undefined) ||
|
|
739
|
+
process.env[`${id.toUpperCase()}_API_KEY`] ||
|
|
740
|
+
'';
|
|
741
|
+
credentials.set(id, {
|
|
742
|
+
baseUrl: override?.baseUrl || pc.baseUrl,
|
|
743
|
+
apiKey,
|
|
732
744
|
});
|
|
733
745
|
log(`[Proxy] Extracted credentials for ${id}: baseUrl=${pc.baseUrl?.slice(0, 50)}...`);
|
|
734
746
|
}
|
|
735
747
|
}
|
|
736
748
|
}
|
|
749
|
+
return credentials;
|
|
737
750
|
}
|
|
738
751
|
// 提取凭证
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
}
|
|
743
|
-
catch (e) {
|
|
744
|
-
log(`[Proxy] Failed to extract credentials: ${e}`);
|
|
745
|
-
}
|
|
746
|
-
// 简化方案:只注册一个虚拟模型 "auto"
|
|
747
|
-
// before_model_resolve 拦截所有请求,改为使用 memoryx-proxy/auto
|
|
748
|
-
// sendMessage 用原始模型去代理,用户无感知
|
|
752
|
+
const providerCredentials = extractProviderCredentials(api.config);
|
|
753
|
+
log(`[Proxy] Found ${providerCredentials.size} providers in config`);
|
|
754
|
+
// 虚拟模型定义
|
|
749
755
|
const VIRTUAL_MODEL = {
|
|
750
756
|
id: 'auto',
|
|
751
757
|
name: 'MemoryX Auto Router',
|
|
@@ -755,16 +761,22 @@ export default {
|
|
|
755
761
|
contextWindow: 200000,
|
|
756
762
|
maxTokens: 8192,
|
|
757
763
|
};
|
|
758
|
-
log(`[Proxy]
|
|
759
|
-
// 注册 Proxy Provider -
|
|
764
|
+
log(`[Proxy] Registering provider with virtual model: auto`);
|
|
765
|
+
// 注册 Proxy Provider - 使用正确的 ModelProviderConfig 格式
|
|
760
766
|
api.registerProvider({
|
|
761
767
|
id: 'memoryx-proxy',
|
|
762
|
-
|
|
768
|
+
label: 'MemoryX Proxy Provider',
|
|
763
769
|
models: {
|
|
764
770
|
baseUrl: 'http://memoryx-proxy.local',
|
|
765
|
-
|
|
766
|
-
models: [VIRTUAL_MODEL], // 只注册 auto
|
|
771
|
+
models: [VIRTUAL_MODEL],
|
|
767
772
|
},
|
|
773
|
+
// auth 是必需的,提供一个简单的 apiKey 方式
|
|
774
|
+
auth: [{
|
|
775
|
+
id: 'api-key',
|
|
776
|
+
label: 'API Key',
|
|
777
|
+
kind: 'apiKey',
|
|
778
|
+
run: async () => ({ ok: true, credentials: {} }),
|
|
779
|
+
}],
|
|
768
780
|
async sendMessage(params) {
|
|
769
781
|
const requestId = `req-${Date.now()}`;
|
|
770
782
|
// ========== 详细日志 ==========
|
|
@@ -926,10 +938,34 @@ export default {
|
|
|
926
938
|
api.logger.info('[MemoryX] 🔄 Proxy provider registered: memoryx-proxy');
|
|
927
939
|
// 从 api.config 读取默认 model 和 provider
|
|
928
940
|
// 注意:hook context 不包含 model 信息,只能从 config 读取
|
|
941
|
+
// config 结构可能是:
|
|
942
|
+
// - agents.defaults.model = "model-id" (string)
|
|
943
|
+
// - agents.defaults.model = { default: "model-id" } (object)
|
|
944
|
+
// - agents.defaults.model.default = "model-id" (nested)
|
|
929
945
|
const getDefaultModelAndProvider = () => {
|
|
930
946
|
const agentsDefaults = api.config?.agents?.defaults;
|
|
931
|
-
|
|
932
|
-
|
|
947
|
+
// 处理 model - 可能是 string 或 object
|
|
948
|
+
let model = 'claude-sonnet-4-20250514';
|
|
949
|
+
if (agentsDefaults?.model) {
|
|
950
|
+
const m = agentsDefaults.model;
|
|
951
|
+
if (typeof m === 'string') {
|
|
952
|
+
model = m;
|
|
953
|
+
}
|
|
954
|
+
else if (typeof m === 'object' && m.default) {
|
|
955
|
+
model = typeof m.default === 'string' ? m.default : String(m.default);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
// 处理 provider - 可能是 string 或 object
|
|
959
|
+
let provider = 'anthropic';
|
|
960
|
+
if (agentsDefaults?.provider) {
|
|
961
|
+
const p = agentsDefaults.provider;
|
|
962
|
+
if (typeof p === 'string') {
|
|
963
|
+
provider = p;
|
|
964
|
+
}
|
|
965
|
+
else if (typeof p === 'object' && p.default) {
|
|
966
|
+
provider = typeof p.default === 'string' ? p.default : String(p.default);
|
|
967
|
+
}
|
|
968
|
+
}
|
|
933
969
|
return { model, provider };
|
|
934
970
|
};
|
|
935
971
|
// 保存原始请求信息,供 sendMessage 使用
|
package/package.json
CHANGED