@t0ken.ai/memoryx-openclaw-plugin 2.2.44 → 2.2.48
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 +74 -38
- 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;AAmDH,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;AAmDH,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+6BE;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -27,7 +27,7 @@ import * as path from "path";
|
|
|
27
27
|
import * as os from "os";
|
|
28
28
|
import * as http from "http";
|
|
29
29
|
// 插件版本号 - 由 prebuild 脚本自动从 package.json 同步
|
|
30
|
-
const PLUGIN_VERSION = "2.2.
|
|
30
|
+
const PLUGIN_VERSION = "2.2.48";
|
|
31
31
|
const DEFAULT_API_BASE = "https://t0ken.ai/api";
|
|
32
32
|
const PLUGIN_DIR = path.join(os.homedir(), ".openclaw", "extensions", "memoryx-openclaw-plugin");
|
|
33
33
|
let logStream = null;
|
|
@@ -792,6 +792,24 @@ export default {
|
|
|
792
792
|
// =========================================================================
|
|
793
793
|
// Sidecar Server - 本地 HTTP 服务
|
|
794
794
|
// =========================================================================
|
|
795
|
+
// 提取凭证并创建 Sidecar
|
|
796
|
+
const providerCredentials = extractProviderCredentials(api.config);
|
|
797
|
+
log(`[Proxy] Found ${providerCredentials.size} providers in config`);
|
|
798
|
+
const defaultProvider = getDefaultModelAndProvider(providerCredentials);
|
|
799
|
+
log(`[Proxy] Default: ${defaultProvider.provider}/${defaultProvider.model}`);
|
|
800
|
+
// 虚拟模型定义 - 注意:id 只需要是 'auto',不是完整路径!
|
|
801
|
+
// resolveModel 会查找 entry.id === modelId (即 'auto')
|
|
802
|
+
// provider 已经在外层的 providers['memoryx-proxy'] 中指定
|
|
803
|
+
const VIRTUAL_MODEL = {
|
|
804
|
+
id: 'auto', // ← 只需要模型 ID,不需要 provider 前缀!
|
|
805
|
+
name: 'MemoryX Auto Router',
|
|
806
|
+
api: 'openai-completions',
|
|
807
|
+
reasoning: true,
|
|
808
|
+
input: ['text', 'image'],
|
|
809
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
810
|
+
contextWindow: 200000,
|
|
811
|
+
maxTokens: 16384,
|
|
812
|
+
};
|
|
795
813
|
const SIDECAR_PORT = 3335;
|
|
796
814
|
const PROXY_URL = (pluginConfig?.apiBaseUrl || DEFAULT_API_BASE) + '/openclaw/proxy/chat/completions';
|
|
797
815
|
class SidecarServer {
|
|
@@ -982,24 +1000,57 @@ export default {
|
|
|
982
1000
|
});
|
|
983
1001
|
}
|
|
984
1002
|
}
|
|
985
|
-
//
|
|
986
|
-
const providerCredentials = extractProviderCredentials(api.config);
|
|
987
|
-
log(`[Proxy] Found ${providerCredentials.size} providers in config`);
|
|
988
|
-
const defaultProvider = getDefaultModelAndProvider(providerCredentials);
|
|
989
|
-
log(`[Proxy] Default: ${defaultProvider.provider}/${defaultProvider.model}`);
|
|
1003
|
+
// 注册 Service 管理 Sidecar 生命周期
|
|
990
1004
|
const sidecar = new SidecarServer(providerCredentials);
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1005
|
+
api.registerService({
|
|
1006
|
+
id: 'memoryx-sidecar',
|
|
1007
|
+
start: async () => {
|
|
1008
|
+
try {
|
|
1009
|
+
await sidecar.start();
|
|
1010
|
+
api.logger.info(`[MemoryX] Sidecar started on port ${sidecar.getPort()}`);
|
|
1011
|
+
}
|
|
1012
|
+
catch (e) {
|
|
1013
|
+
api.logger.error(`[MemoryX] Sidecar failed to start: ${e.message}`);
|
|
1014
|
+
}
|
|
1015
|
+
},
|
|
1016
|
+
stop: async () => {
|
|
1017
|
+
await sidecar.stop();
|
|
1018
|
+
api.logger.info('[MemoryX] Sidecar stopped');
|
|
1019
|
+
}
|
|
1020
|
+
});
|
|
1021
|
+
// =========================================================================
|
|
1022
|
+
// 关键:动态注入 provider 配置到 api.config
|
|
1023
|
+
//
|
|
1024
|
+
// resolveModel() 只从 cfg.models.providers 查找 provider,
|
|
1025
|
+
// 不会查找 registerProvider() 注册的 providers!
|
|
1026
|
+
// 所以必须在 config 中注入 provider 配置。
|
|
1027
|
+
// =========================================================================
|
|
1028
|
+
if (api.config?.models?.providers) {
|
|
1029
|
+
api.config.models.providers['memoryx-proxy'] = {
|
|
1030
|
+
baseUrl: `http://localhost:${SIDECAR_PORT}/v1`,
|
|
1031
|
+
api: 'openai-completions',
|
|
1032
|
+
models: [VIRTUAL_MODEL]
|
|
1033
|
+
};
|
|
1034
|
+
api.logger.info('[MemoryX] ✅ Injected memoryx-proxy into config.models.providers');
|
|
1035
|
+
}
|
|
1036
|
+
else if (api.config) {
|
|
1037
|
+
// 确保 models.providers 存在
|
|
1038
|
+
if (!api.config.models) {
|
|
1039
|
+
api.config.models = {};
|
|
1040
|
+
}
|
|
1041
|
+
if (!api.config.models.providers) {
|
|
1042
|
+
api.config.models.providers = {};
|
|
1043
|
+
}
|
|
1044
|
+
api.config.models.providers['memoryx-proxy'] = {
|
|
1045
|
+
baseUrl: `http://localhost:${SIDECAR_PORT}/v1`,
|
|
1046
|
+
api: 'openai-completions',
|
|
1047
|
+
models: [VIRTUAL_MODEL]
|
|
1048
|
+
};
|
|
1049
|
+
api.logger.info('[MemoryX] ✅ Created and injected memoryx-proxy into config.models.providers');
|
|
1050
|
+
}
|
|
1051
|
+
else {
|
|
1052
|
+
api.logger.warn('[MemoryX] ⚠️ api.config not available - resolveModel may fail to find memoryx-proxy');
|
|
1053
|
+
}
|
|
1003
1054
|
// 注册 Provider - 完全对齐 SlimClaw 格式
|
|
1004
1055
|
api.registerProvider({
|
|
1005
1056
|
id: 'memoryx-proxy',
|
|
@@ -1022,32 +1073,17 @@ export default {
|
|
|
1022
1073
|
}],
|
|
1023
1074
|
});
|
|
1024
1075
|
api.logger.info('[MemoryX] 🔄 Proxy provider registered: memoryx-proxy');
|
|
1025
|
-
//
|
|
1026
|
-
|
|
1027
|
-
id: 'memoryx-sidecar',
|
|
1028
|
-
start: async () => {
|
|
1029
|
-
try {
|
|
1030
|
-
await sidecar.start();
|
|
1031
|
-
api.logger.info(`[MemoryX] Sidecar started on port ${sidecar.getPort()}`);
|
|
1032
|
-
}
|
|
1033
|
-
catch (e) {
|
|
1034
|
-
api.logger.error(`[MemoryX] Sidecar failed to start: ${e.message}`);
|
|
1035
|
-
}
|
|
1036
|
-
},
|
|
1037
|
-
stop: async () => {
|
|
1038
|
-
await sidecar.stop();
|
|
1039
|
-
api.logger.info('[MemoryX] Sidecar stopped');
|
|
1040
|
-
}
|
|
1041
|
-
});
|
|
1042
|
-
// before_model_resolve 钩子 - 切换到 MemoryX Proxy
|
|
1076
|
+
// before_model_resolve 钩子 - 自动拦截所有请求,无需用户配置
|
|
1077
|
+
// 而 MemoryX 自动拦截所有请求,用户完全不需要配置
|
|
1043
1078
|
api.on('before_model_resolve', (event, ctx) => {
|
|
1044
|
-
|
|
1079
|
+
const originalModel = event.model || 'unknown';
|
|
1080
|
+
log(`[before_model_resolve] Intercepting: ${originalModel} → memoryx-proxy/auto`);
|
|
1045
1081
|
return {
|
|
1046
1082
|
providerOverride: 'memoryx-proxy',
|
|
1047
1083
|
modelOverride: 'auto'
|
|
1048
1084
|
};
|
|
1049
1085
|
});
|
|
1050
|
-
api.logger.info('[MemoryX] 🔄 Auto-
|
|
1086
|
+
api.logger.info('[MemoryX] 🔄 Auto-intercept enabled - ALL requests go through MemoryX Proxy');
|
|
1051
1087
|
api.logger.info(`[MemoryX] ✅ Plugin v${PLUGIN_VERSION} ready! Your conversations will be remembered automatically.`);
|
|
1052
1088
|
// Async check and show portal link after SDK initializes
|
|
1053
1089
|
setImmediate(async () => {
|
package/package.json
CHANGED