openclaw-rocketchat 0.4.0 → 0.4.1
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,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenClaw 内部模块的动态引用
|
|
3
|
-
* 通过 process.argv[1](gateway 入口脚本)推算模块路径
|
|
4
3
|
*/
|
|
5
4
|
export interface OpenClawInternals {
|
|
6
5
|
/** 分发入站消息到 Agent */
|
|
@@ -33,10 +32,11 @@ export interface OpenClawInternals {
|
|
|
33
32
|
/**
|
|
34
33
|
* 从 Gateway 进程中动态加载 OpenClaw 核心模块
|
|
35
34
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
35
|
+
* 多策略定位 OpenClaw dist/ 目录:
|
|
36
|
+
* 1. require.main.filename — Gateway 主模块入口(最可靠)
|
|
37
|
+
* 2. npm 全局安装模式推导(PREFIX/bin/openclaw → PREFIX/lib/node_modules/openclaw/dist/)
|
|
38
|
+
* 3. process.argv[1] 向上遍历
|
|
39
|
+
* 4. 常见安装路径兜底
|
|
40
40
|
*/
|
|
41
41
|
export declare function loadOpenClawInternals(): Promise<OpenClawInternals | null>;
|
|
42
42
|
//# sourceMappingURL=openclaw-internals.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-internals.d.ts","sourceRoot":"","sources":["../../src/gateway/openclaw-internals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openclaw-internals.d.ts","sourceRoot":"","sources":["../../src/gateway/openclaw-internals.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,oBAAoB;IACpB,sBAAsB,EAAE,CAAC,MAAM,EAAE;QAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,UAAU,EAAE,OAAO,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACxC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvB,cAAc;IACd,qBAAqB,EAAE,CAAC,OAAO,EAAE;QAC/B,OAAO,EAAE,CACP,OAAO,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,EACnE,IAAI,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,KACnB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;KAClC,KAAK,OAAO,CAAC;IAEd,mBAAmB;IACnB,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE;QAClC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE9B,WAAW;IACX,UAAU,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAQD;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAiD/E"}
|
|
@@ -5,50 +5,39 @@
|
|
|
5
5
|
// ============================================================
|
|
6
6
|
import { dirname, resolve } from "node:path";
|
|
7
7
|
import { pathToFileURL } from "node:url";
|
|
8
|
+
import { existsSync } from "node:fs";
|
|
8
9
|
/** 缓存:加载一次就够了 */
|
|
9
10
|
let cached = null;
|
|
11
|
+
/** 用于验证 dist 目录的标记文件 */
|
|
12
|
+
const DIST_MARKER = "auto-reply/dispatch.js";
|
|
10
13
|
/**
|
|
11
14
|
* 从 Gateway 进程中动态加载 OpenClaw 核心模块
|
|
12
15
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
16
|
+
* 多策略定位 OpenClaw dist/ 目录:
|
|
17
|
+
* 1. require.main.filename — Gateway 主模块入口(最可靠)
|
|
18
|
+
* 2. npm 全局安装模式推导(PREFIX/bin/openclaw → PREFIX/lib/node_modules/openclaw/dist/)
|
|
19
|
+
* 3. process.argv[1] 向上遍历
|
|
20
|
+
* 4. 常见安装路径兜底
|
|
17
21
|
*/
|
|
18
22
|
export async function loadOpenClawInternals() {
|
|
19
23
|
if (cached)
|
|
20
24
|
return cached;
|
|
21
|
-
const
|
|
22
|
-
if (!
|
|
25
|
+
const distDir = findOpenClawDistDir();
|
|
26
|
+
if (!distDir) {
|
|
27
|
+
console.error(`[RC] 无法定位 OpenClaw dist 目录(argv[1]=${process.argv[1]}, main=${require.main?.filename})`);
|
|
23
28
|
return null;
|
|
29
|
+
}
|
|
24
30
|
try {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
// 最多向上走 5 层来找到包含 auto-reply 的目录
|
|
29
|
-
for (let i = 0; i < 5; i++) {
|
|
30
|
-
const testPath = resolve(distDir, "auto-reply", "dispatch.js");
|
|
31
|
-
try {
|
|
32
|
-
const url = pathToFileURL(testPath).href;
|
|
33
|
-
await import(url);
|
|
34
|
-
// 找到了!
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
distDir = dirname(distDir);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
const importModule = async (relativePath) => {
|
|
42
|
-
const fullPath = resolve(distDir, relativePath);
|
|
43
|
-
const url = pathToFileURL(fullPath).href;
|
|
44
|
-
return await import(url);
|
|
31
|
+
const importMod = async (rel) => {
|
|
32
|
+
const full = resolve(distDir, rel);
|
|
33
|
+
return await import(pathToFileURL(full).href);
|
|
45
34
|
};
|
|
46
|
-
const dispatchMod = await
|
|
47
|
-
const replyDispatcherMod = await
|
|
48
|
-
const configMod = await
|
|
35
|
+
const dispatchMod = await importMod("auto-reply/dispatch.js");
|
|
36
|
+
const replyDispatcherMod = await importMod("auto-reply/reply/reply-dispatcher.js");
|
|
37
|
+
const configMod = await importMod("config/config.js");
|
|
49
38
|
let replyPrefixMod = null;
|
|
50
39
|
try {
|
|
51
|
-
replyPrefixMod = (await
|
|
40
|
+
replyPrefixMod = (await importMod("channels/reply-prefix.js"));
|
|
52
41
|
}
|
|
53
42
|
catch {
|
|
54
43
|
// reply-prefix 是可选的
|
|
@@ -59,12 +48,71 @@ export async function loadOpenClawInternals() {
|
|
|
59
48
|
createReplyPrefixOptions: replyPrefixMod?.createReplyPrefixOptions,
|
|
60
49
|
loadConfig: configMod.loadConfig,
|
|
61
50
|
};
|
|
51
|
+
console.log(`[RC] OpenClaw dist 目录: ${distDir}`);
|
|
62
52
|
return cached;
|
|
63
53
|
}
|
|
64
54
|
catch (err) {
|
|
65
|
-
// 无法加载内部模块 — 可能是 OpenClaw 版本变化或目录结构不同
|
|
66
55
|
console.error(`[RC] 无法加载 OpenClaw 内部模块: ${err.message}`);
|
|
67
56
|
return null;
|
|
68
57
|
}
|
|
69
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* 多策略查找 OpenClaw 的 dist/ 目录
|
|
61
|
+
*/
|
|
62
|
+
function findOpenClawDistDir() {
|
|
63
|
+
// 策略 1: 从 require.main.filename 向上遍历
|
|
64
|
+
// 当 Gateway 以 Node.js 脚本运行时,require.main 指向入口 JS 文件
|
|
65
|
+
// 例如 PREFIX/lib/node_modules/openclaw/dist/cli/index.js → 向上找到 dist/
|
|
66
|
+
if (require.main?.filename) {
|
|
67
|
+
const found = walkUpForMarker(require.main.filename);
|
|
68
|
+
if (found)
|
|
69
|
+
return found;
|
|
70
|
+
}
|
|
71
|
+
const binPath = process.argv[1];
|
|
72
|
+
// 策略 2: npm 全局安装路径推导
|
|
73
|
+
// 二进制: PREFIX/bin/openclaw → 模块: PREFIX/lib/node_modules/openclaw/dist/
|
|
74
|
+
if (binPath) {
|
|
75
|
+
const candidate = resolve(dirname(binPath), "..", "lib", "node_modules", "openclaw", "dist");
|
|
76
|
+
if (existsSync(resolve(candidate, DIST_MARKER)))
|
|
77
|
+
return candidate;
|
|
78
|
+
}
|
|
79
|
+
// 策略 3: 从 process.argv[1] 向上遍历(适用于直接执行 dist/cli/index.js 的情况)
|
|
80
|
+
if (binPath) {
|
|
81
|
+
const found = walkUpForMarker(binPath);
|
|
82
|
+
if (found)
|
|
83
|
+
return found;
|
|
84
|
+
}
|
|
85
|
+
// 策略 4: 常见安装路径兜底
|
|
86
|
+
const home = process.env.HOME || "/root";
|
|
87
|
+
const commonPaths = [
|
|
88
|
+
resolve(home, ".local/lib/node_modules/openclaw/dist"),
|
|
89
|
+
"/usr/local/lib/node_modules/openclaw/dist",
|
|
90
|
+
"/usr/lib/node_modules/openclaw/dist",
|
|
91
|
+
];
|
|
92
|
+
// 如果有 nvm,也尝试当前 Node 版本下的全局路径
|
|
93
|
+
if (process.versions?.node) {
|
|
94
|
+
const nvmDir = process.env.NVM_DIR || resolve(home, ".nvm");
|
|
95
|
+
commonPaths.push(resolve(nvmDir, "versions/node", `v${process.versions.node}`, "lib/node_modules/openclaw/dist"));
|
|
96
|
+
}
|
|
97
|
+
for (const p of commonPaths) {
|
|
98
|
+
if (existsSync(resolve(p, DIST_MARKER)))
|
|
99
|
+
return p;
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 从 startPath 所在目录向上遍历,找到包含 DIST_MARKER 的目录
|
|
105
|
+
*/
|
|
106
|
+
function walkUpForMarker(startPath) {
|
|
107
|
+
let dir = dirname(startPath);
|
|
108
|
+
for (let i = 0; i < 10; i++) {
|
|
109
|
+
if (existsSync(resolve(dir, DIST_MARKER)))
|
|
110
|
+
return dir;
|
|
111
|
+
const parent = dirname(dir);
|
|
112
|
+
if (parent === dir)
|
|
113
|
+
break; // 已到达文件系统根目录
|
|
114
|
+
dir = parent;
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
70
118
|
//# sourceMappingURL=openclaw-internals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-internals.js","sourceRoot":"","sources":["../../src/gateway/openclaw-internals.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,qBAAqB;AACrB,wCAAwC;AACxC,mCAAmC;AACnC,+DAA+D;AAE/D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw-internals.js","sourceRoot":"","sources":["../../src/gateway/openclaw-internals.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED