@t0ken.ai/memoryx-openclaw-plugin 2.2.57 → 2.2.58
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 +26 -11
- package/openclaw.plugin.json +1 -1
- 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,wBA25BE;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.58";
|
|
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;
|
|
@@ -661,11 +661,8 @@ export default {
|
|
|
661
661
|
// IMPORTANT: 对话流走的是 before_agent_start 事件,不是 message_received!
|
|
662
662
|
// message_received 只在 auto-reply 功能中触发
|
|
663
663
|
api.on("before_agent_start", async (event, ctx) => {
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
const provider = event?.provider ?? event?.resolvedProvider ?? 'undefined';
|
|
667
|
-
api.logger.info(`[MemoryX] 📋 [after resolve? before_agent_start] event keys: ${keys} | model: ${model} | provider: ${provider}`);
|
|
668
|
-
log(`[before_agent_start] model=${model} provider=${provider}`);
|
|
664
|
+
// 每次对话前重新把各 provider 的 baseUrl 指到 Sidecar,确保本次请求走代理(quiet 避免每次刷屏)
|
|
665
|
+
applySidecarRedirect({ quiet: true });
|
|
669
666
|
const { prompt } = event;
|
|
670
667
|
if (!prompt || prompt.length < 2 || !plugin)
|
|
671
668
|
return;
|
|
@@ -896,7 +893,7 @@ export default {
|
|
|
896
893
|
}
|
|
897
894
|
try {
|
|
898
895
|
log(`\n${'='.repeat(60)}`);
|
|
899
|
-
log(`[${requestId}
|
|
896
|
+
log(`[Sidecar] ${requestId} received POST /v1/chat/completions`, { console: true });
|
|
900
897
|
// 读取请求体
|
|
901
898
|
const body = await this.readBody(req);
|
|
902
899
|
let openaiRequest;
|
|
@@ -927,6 +924,7 @@ export default {
|
|
|
927
924
|
model = creds.models?.[0]?.id || creds.models?.[0]?.name || this.defaultProvider.model;
|
|
928
925
|
}
|
|
929
926
|
log(`[${requestId}] Model: ${openaiRequest.model}, Stream: ${openaiRequest.stream} → proxy provider=${provider}, model=${model}`);
|
|
927
|
+
log(`[Sidecar] ${requestId} → ${provider}/${model} (X-MemoryX-Real-Provider: ${rawProvider || 'from body'})`, { console: true });
|
|
930
928
|
// 获取 SDK 信息(API Key 和 agent_id)
|
|
931
929
|
const sdk = await getSDK(pluginConfig);
|
|
932
930
|
const accountInfo = await sdk.getAccountInfo();
|
|
@@ -962,6 +960,7 @@ export default {
|
|
|
962
960
|
agent_id: agentId
|
|
963
961
|
};
|
|
964
962
|
log(`[${requestId}] Forwarding to ${PROXY_URL} (${provider}/${model})`);
|
|
963
|
+
log(`[Sidecar] ${requestId} forwarding to MemoryX proxy...`, { console: true });
|
|
965
964
|
// 发送到 MemoryX 服务端代理
|
|
966
965
|
const proxyResponse = await fetch(PROXY_URL, {
|
|
967
966
|
method: 'POST',
|
|
@@ -972,6 +971,7 @@ export default {
|
|
|
972
971
|
body: JSON.stringify(proxyRequestBody)
|
|
973
972
|
});
|
|
974
973
|
log(`[${requestId}] Response status: ${proxyResponse.status}`);
|
|
974
|
+
log(`[Sidecar] ${requestId} proxy response ${proxyResponse.status}`, { console: true });
|
|
975
975
|
// 转发响应
|
|
976
976
|
res.writeHead(proxyResponse.status, {
|
|
977
977
|
'Content-Type': proxyResponse.headers.get('content-type') || 'application/json'
|
|
@@ -1000,10 +1000,12 @@ export default {
|
|
|
1000
1000
|
res.end(responseText);
|
|
1001
1001
|
}
|
|
1002
1002
|
log(`[${requestId}] ✅ Completed`);
|
|
1003
|
+
log(`[Sidecar] ${requestId} done`, { console: true });
|
|
1003
1004
|
log(`${'='.repeat(60)}\n`);
|
|
1004
1005
|
}
|
|
1005
1006
|
catch (error) {
|
|
1006
1007
|
log(`[${requestId}] ❌ Error: ${error.message}`);
|
|
1008
|
+
log(`[Sidecar] ${requestId} error: ${error.message}`, { console: true });
|
|
1007
1009
|
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
1008
1010
|
res.end(JSON.stringify({ error: error.message }));
|
|
1009
1011
|
}
|
|
@@ -1038,12 +1040,20 @@ export default {
|
|
|
1038
1040
|
// =========================================================================
|
|
1039
1041
|
// 不改虚拟模型:把用户已配置的 provider 的 baseUrl 改成本地 Sidecar,请求头带上真实 provider
|
|
1040
1042
|
// 用户继续用 zai/glm-5 等,请求会发到 Sidecar,Sidecar 根据 X-MemoryX-Real-Provider 转发
|
|
1043
|
+
// 在 register 和 before_agent_start 都会执行,确保网关在发请求时用的是被改过的 config
|
|
1041
1044
|
// =========================================================================
|
|
1042
1045
|
const sidecarBase = `http://localhost:${SIDECAR_PORT}/v1`;
|
|
1043
1046
|
const realProviderHeader = 'X-MemoryX-Real-Provider';
|
|
1044
|
-
|
|
1047
|
+
const applySidecarRedirect = (opts) => {
|
|
1048
|
+
const creds = extractProviderCredentials(api.config);
|
|
1049
|
+
if (!api.config?.models?.providers || creds.size === 0) {
|
|
1050
|
+
if (!opts?.quiet)
|
|
1051
|
+
log(`[Proxy] No providers to redirect (providers exists: ${!!api.config?.models?.providers}, creds: ${creds.size})`, { console: true });
|
|
1052
|
+
return;
|
|
1053
|
+
}
|
|
1045
1054
|
const providers = api.config.models.providers;
|
|
1046
|
-
|
|
1055
|
+
let n = 0;
|
|
1056
|
+
for (const providerId of creds.keys()) {
|
|
1047
1057
|
if (providerId === 'memoryx-proxy')
|
|
1048
1058
|
continue;
|
|
1049
1059
|
const p = providers[providerId];
|
|
@@ -1053,10 +1063,15 @@ export default {
|
|
|
1053
1063
|
if (!p.headers)
|
|
1054
1064
|
p.headers = {};
|
|
1055
1065
|
p.headers[realProviderHeader] = providerId;
|
|
1066
|
+
n++;
|
|
1056
1067
|
log(`[Proxy] Redirected provider "${providerId}" baseUrl → Sidecar, header ${realProviderHeader}=${providerId}`);
|
|
1057
1068
|
}
|
|
1058
|
-
|
|
1059
|
-
|
|
1069
|
+
if (n > 0 && !opts?.quiet) {
|
|
1070
|
+
api.logger.info(`[MemoryX] ✅ Sidecar redirect applied for ${n} provider(s). Use your configured model (e.g. zai/glm-5).`);
|
|
1071
|
+
log(`[Proxy] Sidecar redirect applied for ${n} provider(s)`, { console: true });
|
|
1072
|
+
}
|
|
1073
|
+
};
|
|
1074
|
+
applySidecarRedirect();
|
|
1060
1075
|
api.logger.info(`[MemoryX] ✅ Plugin v${PLUGIN_VERSION} ready! Requests go through MemoryX proxy with your configured model.`);
|
|
1061
1076
|
// Async check and show portal link after SDK initializes
|
|
1062
1077
|
setImmediate(async () => {
|
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED