openclaw-rocketchat 0.4.0 → 0.4.2
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,98 @@ 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
|
+
* 兼容 macOS / Linux,兼容 nvm / Homebrew / 系统 Node / 自定义 prefix
|
|
62
|
+
*/
|
|
63
|
+
function findOpenClawDistDir() {
|
|
64
|
+
const candidates = [];
|
|
65
|
+
// ---------- 策略 1: require.main.filename 向上遍历 ----------
|
|
66
|
+
// Gateway 主模块入口,最可靠(平台无关)
|
|
67
|
+
// 例如 PREFIX/lib/node_modules/openclaw/dist/cli/index.js → 向上找到 dist/
|
|
68
|
+
if (require.main?.filename) {
|
|
69
|
+
const found = walkUpForMarker(require.main.filename);
|
|
70
|
+
if (found)
|
|
71
|
+
return found;
|
|
72
|
+
}
|
|
73
|
+
// ---------- 策略 2: process.execPath 推导 npm prefix ----------
|
|
74
|
+
// Node 二进制所在路径可靠地推算全局 node_modules
|
|
75
|
+
// Linux : /usr/bin/node → /usr/lib/node_modules/openclaw/dist
|
|
76
|
+
// nvm : ~/.nvm/versions/node/v20/bin/node → ~/.nvm/versions/node/v20/lib/...
|
|
77
|
+
// macOS Homebrew ARM : /opt/homebrew/bin/node → /opt/homebrew/lib/...
|
|
78
|
+
// macOS Homebrew Intel: /usr/local/bin/node → /usr/local/lib/...
|
|
79
|
+
// ~/.local: ~/.local/bin/node → ~/.local/lib/...
|
|
80
|
+
if (process.execPath) {
|
|
81
|
+
const nodePrefix = resolve(dirname(process.execPath), "..");
|
|
82
|
+
candidates.push(resolve(nodePrefix, "lib", "node_modules", "openclaw", "dist"));
|
|
83
|
+
}
|
|
84
|
+
// ---------- 策略 3: process.argv[1] 推导 npm prefix ----------
|
|
85
|
+
// 二进制入口: PREFIX/bin/openclaw → PREFIX/lib/node_modules/openclaw/dist/
|
|
86
|
+
const binPath = process.argv[1];
|
|
87
|
+
if (binPath) {
|
|
88
|
+
candidates.push(resolve(dirname(binPath), "..", "lib", "node_modules", "openclaw", "dist"));
|
|
89
|
+
}
|
|
90
|
+
// ---------- 策略 4: process.argv[1] 向上遍历 ----------
|
|
91
|
+
// 适用于直接执行 dist/cli/index.js 的场景(如开发/调试)
|
|
92
|
+
if (binPath) {
|
|
93
|
+
const found = walkUpForMarker(binPath);
|
|
94
|
+
if (found)
|
|
95
|
+
return found;
|
|
96
|
+
}
|
|
97
|
+
// ---------- 策略 5: 常见全局安装路径兜底 ----------
|
|
98
|
+
const home = process.env.HOME || (process.platform === "win32" ? process.env.USERPROFILE || "" : "/root");
|
|
99
|
+
// Linux 常见
|
|
100
|
+
candidates.push("/usr/local/lib/node_modules/openclaw/dist");
|
|
101
|
+
candidates.push("/usr/lib/node_modules/openclaw/dist");
|
|
102
|
+
candidates.push(resolve(home, ".local/lib/node_modules/openclaw/dist"));
|
|
103
|
+
// macOS Homebrew (Apple Silicon)
|
|
104
|
+
candidates.push("/opt/homebrew/lib/node_modules/openclaw/dist");
|
|
105
|
+
// nvm(Linux 和 macOS 通用)
|
|
106
|
+
if (process.versions?.node) {
|
|
107
|
+
const nvmDir = process.env.NVM_DIR || resolve(home, ".nvm");
|
|
108
|
+
candidates.push(resolve(nvmDir, "versions/node", `v${process.versions.node}`, "lib/node_modules/openclaw/dist"));
|
|
109
|
+
}
|
|
110
|
+
// fnm(macOS / Linux)
|
|
111
|
+
if (process.versions?.node) {
|
|
112
|
+
const fnmDir = process.env.FNM_DIR || resolve(home, ".local/share/fnm");
|
|
113
|
+
candidates.push(resolve(fnmDir, "node-versions", `v${process.versions.node}`, "installation/lib/node_modules/openclaw/dist"));
|
|
114
|
+
}
|
|
115
|
+
// npm 自定义 prefix(通过环境变量 npm_config_prefix)
|
|
116
|
+
if (process.env.npm_config_prefix) {
|
|
117
|
+
candidates.push(resolve(process.env.npm_config_prefix, "lib", "node_modules", "openclaw", "dist"));
|
|
118
|
+
}
|
|
119
|
+
// 去重后逐个检查
|
|
120
|
+
const seen = new Set();
|
|
121
|
+
for (const p of candidates) {
|
|
122
|
+
if (seen.has(p))
|
|
123
|
+
continue;
|
|
124
|
+
seen.add(p);
|
|
125
|
+
if (existsSync(resolve(p, DIST_MARKER)))
|
|
126
|
+
return p;
|
|
127
|
+
}
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* 从 startPath 所在目录向上遍历,找到包含 DIST_MARKER 的目录
|
|
132
|
+
*/
|
|
133
|
+
function walkUpForMarker(startPath) {
|
|
134
|
+
let dir = dirname(startPath);
|
|
135
|
+
for (let i = 0; i < 10; i++) {
|
|
136
|
+
if (existsSync(resolve(dir, DIST_MARKER)))
|
|
137
|
+
return dir;
|
|
138
|
+
const parent = dirname(dir);
|
|
139
|
+
if (parent === dir)
|
|
140
|
+
break; // 已到达文件系统根目录
|
|
141
|
+
dir = parent;
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
}
|
|
70
145
|
//# 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