@okclaw-build/cli 1.0.0-beta.50 → 1.0.0-beta.53

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,7 @@
1
- import { existsSync, cpSync, mkdirSync, rmSync, statSync, lstatSync, chmodSync, readdirSync, } from 'node:fs';
1
+ import { existsSync, cpSync, mkdirSync, rmSync, statSync, lstatSync, chmodSync, readdirSync, readlinkSync, } from 'node:fs';
2
2
  import { posix as pathPosix } from 'node:path';
3
3
  import { shell, shellCapture } from './utils/shell.js';
4
+ import { warn } from './utils/logger.js';
4
5
  import { OKCLAW_BACKUP_DIR, OPENCLAW_WORKSPACE } from './utils/constants.js';
5
6
  export const OPENCLAW_USER_DATA_FILES = [
6
7
  'MEMORY.md',
@@ -11,12 +12,24 @@ export const OPENCLAW_USER_DATA_FILES = [
11
12
  'AGENTS.md',
12
13
  'HEARTBEAT.md',
13
14
  ];
15
+ export const OPENCLAW_CLONE_USER_DATA_FILES = [
16
+ 'IDENTITY.md',
17
+ 'SOUL.md',
18
+ 'TOOLS.md',
19
+ 'AGENTS.md',
20
+ ];
14
21
  export const LEGACY_OPENCLAW_WORKSPACE = '/root/openclaw/workspace';
15
22
  const WORKSPACE_BACKUP_DIR = 'workspace';
16
23
  const LEGACY_WORKSPACE_BACKUP_DIR = 'workspace-root-openclaw';
17
24
  const SKILLS_DIR = 'skills';
18
- const OPENCLAW_CONFIG_FILE = 'openclaw.json';
19
- const realBackupFs = { existsSync, mkdirSync, cpSync, statSync };
25
+ const realBackupFs = {
26
+ existsSync,
27
+ mkdirSync,
28
+ cpSync,
29
+ statSync,
30
+ readdirSync: readdirSync,
31
+ readlinkSync,
32
+ };
20
33
  const realArchiveFs = { ...realBackupFs, readdirSync: readdirSync };
21
34
  const realRestoreFs = {
22
35
  ...realBackupFs,
@@ -34,7 +47,8 @@ function copyIfExists(fsOps, src, dest, recursive = false) {
34
47
  fsOps.cpSync(src, dest, recursive ? { recursive: true } : undefined);
35
48
  return true;
36
49
  }
37
- export function backupOpenclawUserData(now = new Date(), fsOps = realBackupFs) {
50
+ export function backupOpenclawUserData(now = new Date(), fsOps = realBackupFs, options = {}) {
51
+ const files = getUserDataFilesForScope(options.scope);
38
52
  const backupDir = `${OKCLAW_BACKUP_DIR}/openclaw-user-data-${formatBackupTimestamp(now)}`;
39
53
  const workspaces = Array.from(new Set([OPENCLAW_WORKSPACE, LEGACY_OPENCLAW_WORKSPACE]));
40
54
  let copiedItems = 0;
@@ -42,22 +56,26 @@ export function backupOpenclawUserData(now = new Date(), fsOps = realBackupFs) {
42
56
  for (const workspace of workspaces) {
43
57
  if (!fsOps.existsSync(workspace))
44
58
  continue;
45
- const workspaceBackupName = copiedWorkspaces === 0 ? WORKSPACE_BACKUP_DIR : LEGACY_WORKSPACE_BACKUP_DIR;
59
+ const workspaceBackupName = options.includeWorkspaceExtra
60
+ ? (workspace === OPENCLAW_WORKSPACE ? WORKSPACE_BACKUP_DIR : LEGACY_WORKSPACE_BACKUP_DIR)
61
+ : (copiedWorkspaces === 0 ? WORKSPACE_BACKUP_DIR : LEGACY_WORKSPACE_BACKUP_DIR);
46
62
  const workspaceBackupDir = `${backupDir}/${workspaceBackupName}`;
47
63
  let workspaceDirCreated = false;
64
+ const copiedRootEntries = new Set();
48
65
  const ensureWorkspaceBackupDir = () => {
49
66
  if (workspaceDirCreated)
50
67
  return;
51
68
  fsOps.mkdirSync(workspaceBackupDir, { recursive: true });
52
69
  workspaceDirCreated = true;
53
70
  };
54
- for (const file of OPENCLAW_USER_DATA_FILES) {
71
+ for (const file of files) {
55
72
  const src = `${workspace}/${file}`;
56
73
  if (!fsOps.existsSync(src))
57
74
  continue;
58
75
  ensureWorkspaceBackupDir();
59
76
  if (copyIfExists(fsOps, src, `${workspaceBackupDir}/${file}`)) {
60
77
  copiedItems += 1;
78
+ copiedRootEntries.add(file);
61
79
  }
62
80
  }
63
81
  const skillsDir = `${workspace}/${SKILLS_DIR}`;
@@ -65,19 +83,111 @@ export function backupOpenclawUserData(now = new Date(), fsOps = realBackupFs) {
65
83
  ensureWorkspaceBackupDir();
66
84
  if (copyIfExists(fsOps, skillsDir, `${workspaceBackupDir}/${SKILLS_DIR}`, true)) {
67
85
  copiedItems += 1;
86
+ copiedRootEntries.add(SKILLS_DIR);
68
87
  }
69
88
  }
89
+ if (options.scope !== 'clone' && options.includeWorkspaceExtra) {
90
+ copiedItems += copyWorkspaceExtraEntries(fsOps, workspace, workspaceBackupDir, copiedRootEntries, ensureWorkspaceBackupDir, options.onSkip ?? defaultBackupSkip);
91
+ }
70
92
  if (workspaceDirCreated) {
71
93
  copiedWorkspaces += 1;
72
94
  }
73
95
  }
74
96
  return copiedItems > 0 ? backupDir : null;
75
97
  }
98
+ function getUserDataFilesForScope(scope = 'user-data') {
99
+ return scope === 'clone' ? OPENCLAW_CLONE_USER_DATA_FILES : OPENCLAW_USER_DATA_FILES;
100
+ }
101
+ function defaultBackupSkip(relativePath, reason) {
102
+ warn(`全量迁移跳过不可移植条目 ${relativePath}: ${reason}`);
103
+ }
104
+ // 全量模式只把"可移植"条目纳入归档,让归档天生可在目标主机还原:
105
+ // 普通文件、目录、以及目标仍落在 workspace 内的软链都保留;指向 workspace 之外的软链
106
+ // 和 socket/fifo 等特殊文件在 backup 阶段就跳过并告警,而不是搬进去等 restore 整包失败。
107
+ function copyWorkspaceExtraEntries(fsOps, workspace, workspaceBackupDir, copiedRootEntries, ensureWorkspaceBackupDir, onSkip) {
108
+ if (!fsOps.readdirSync) {
109
+ throw new Error('backup fs does not support readdirSync for full workspace backup');
110
+ }
111
+ let copied = 0;
112
+ for (const entry of fsOps.readdirSync(workspace, { withFileTypes: true })) {
113
+ if (copiedRootEntries.has(entry.name))
114
+ continue;
115
+ const src = `${workspace}/${entry.name}`;
116
+ const dest = `${workspaceBackupDir}/${entry.name}`;
117
+ const rel = entry.name;
118
+ if (entry.isSymbolicLink?.()) {
119
+ if (!isPortableSymlink(fsOps, src, rel, onSkip))
120
+ continue;
121
+ ensureWorkspaceBackupDir();
122
+ fsOps.cpSync(src, dest);
123
+ copied += 1;
124
+ copiedRootEntries.add(entry.name);
125
+ continue;
126
+ }
127
+ if (entry.isDirectory()) {
128
+ ensureWorkspaceBackupDir();
129
+ copyPortableTree(fsOps, src, dest, rel, onSkip);
130
+ copied += 1;
131
+ copiedRootEntries.add(entry.name);
132
+ continue;
133
+ }
134
+ if (entry.isFile()) {
135
+ ensureWorkspaceBackupDir();
136
+ fsOps.cpSync(src, dest);
137
+ copied += 1;
138
+ copiedRootEntries.add(entry.name);
139
+ continue;
140
+ }
141
+ onSkip(rel, '不支持的文件类型');
142
+ }
143
+ return copied;
144
+ }
145
+ // 递归拷贝目录,逐项套用与 restore 校验一致的"可移植"判定,使嵌套软链/特殊文件也被过滤。
146
+ function copyPortableTree(fsOps, srcDir, destDir, relDir, onSkip) {
147
+ if (!fsOps.readdirSync) {
148
+ throw new Error('backup fs does not support readdirSync for full workspace backup');
149
+ }
150
+ fsOps.mkdirSync(destDir, { recursive: true });
151
+ for (const entry of fsOps.readdirSync(srcDir, { withFileTypes: true })) {
152
+ const src = `${srcDir}/${entry.name}`;
153
+ const dest = `${destDir}/${entry.name}`;
154
+ const rel = relDir ? `${relDir}/${entry.name}` : entry.name;
155
+ if (entry.isSymbolicLink?.()) {
156
+ if (isPortableSymlink(fsOps, src, rel, onSkip)) {
157
+ fsOps.cpSync(src, dest);
158
+ }
159
+ continue;
160
+ }
161
+ if (entry.isDirectory()) {
162
+ copyPortableTree(fsOps, src, dest, rel, onSkip);
163
+ continue;
164
+ }
165
+ if (entry.isFile()) {
166
+ fsOps.cpSync(src, dest);
167
+ continue;
168
+ }
169
+ onSkip(rel, '不支持的文件类型');
170
+ }
171
+ }
172
+ function isPortableSymlink(fsOps, src, rel, onSkip) {
173
+ if (!fsOps.readlinkSync) {
174
+ throw new Error('backup fs does not support readlinkSync for full workspace backup');
175
+ }
176
+ const target = fsOps.readlinkSync(src);
177
+ if (symlinkTargetWithinWorkspace(rel, target))
178
+ return true;
179
+ onSkip(rel, `软链目标逃逸 workspace: ${target}`);
180
+ return false;
181
+ }
76
182
  export async function createOpenclawUserDataArchive(options = {}) {
77
183
  const now = options.now ?? new Date();
78
184
  const fsOps = options.fsOps ?? realArchiveFs;
79
185
  const shellOps = options.shellOps ?? { shell };
80
- const backupDir = backupOpenclawUserData(now, fsOps);
186
+ const backupDir = backupOpenclawUserData(now, fsOps, {
187
+ scope: options.scope,
188
+ includeWorkspaceExtra: options.includeWorkspaceExtra,
189
+ onSkip: options.onSkip,
190
+ });
81
191
  if (!backupDir) {
82
192
  return { backupDir: null, archivePath: null, includedFiles: [] };
83
193
  }
@@ -109,16 +219,21 @@ export async function restoreOpenclawUserDataArchive(options) {
109
219
  validateArchiveEntries(entries);
110
220
  fsOps.mkdirSync(OPENCLAW_WORKSPACE, { recursive: true });
111
221
  fsOps.chmodSync(OPENCLAW_WORKSPACE, 0o755);
112
- const restored = new Set();
113
- restoreWorkspaceBackup(fsOps, `${stagingDir}/${WORKSPACE_BACKUP_DIR}`, restored);
114
- restoreWorkspaceBackup(fsOps, `${stagingDir}/${LEGACY_WORKSPACE_BACKUP_DIR}`, restored);
115
- const restoredFiles = Array.from(restored).sort();
222
+ const restored = new Map();
223
+ restoreWorkspaceBackup(fsOps, `${stagingDir}/${WORKSPACE_BACKUP_DIR}`, restored, options.scope);
224
+ restoreWorkspaceBackup(fsOps, `${stagingDir}/${LEGACY_WORKSPACE_BACKUP_DIR}`, restored, options.scope);
225
+ if (options.scope !== 'clone' && options.includeWorkspaceExtra) {
226
+ restoreWorkspaceExtraEntries(fsOps, `${stagingDir}/${WORKSPACE_BACKUP_DIR}`, restored);
227
+ restoreWorkspaceExtraEntries(fsOps, `${stagingDir}/${LEGACY_WORKSPACE_BACKUP_DIR}`, restored);
228
+ }
229
+ const restoredFiles = Array.from(restored.keys()).sort();
116
230
  for (const file of restoredFiles) {
117
231
  const path = `${OPENCLAW_WORKSPACE}/${file}`;
118
- if (file === SKILLS_DIR) {
232
+ const type = restored.get(file);
233
+ if (type === 'directory') {
119
234
  applyRestoredPermissions(fsOps, path);
120
235
  }
121
- else {
236
+ else if (type === 'file') {
122
237
  fsOps.chmodSync(path, 0o644);
123
238
  }
124
239
  }
@@ -149,13 +264,13 @@ function parseTarVerboseEntries(stdout) {
149
264
  const modeType = line[0];
150
265
  const tokens = line.split(/\s+/);
151
266
  const rawPath = tokens.slice(5).join(' ');
152
- const linkIndex = rawPath.indexOf(' -> ');
153
- const path = linkIndex >= 0 ? rawPath.slice(0, linkIndex) : rawPath;
154
- const linkTarget = linkIndex >= 0 ? rawPath.slice(linkIndex + ' -> '.length) : undefined;
155
267
  const type = modeType === '-' ? 'file'
156
268
  : modeType === 'd' ? 'directory'
157
269
  : modeType === 'l' ? 'symlink'
158
270
  : 'unsupported';
271
+ const linkIndex = type === 'symlink' ? rawPath.indexOf(' -> ') : -1;
272
+ const path = linkIndex >= 0 ? rawPath.slice(0, linkIndex) : rawPath;
273
+ const linkTarget = linkIndex >= 0 ? rawPath.slice(linkIndex + ' -> '.length) : undefined;
159
274
  return { type, path, linkTarget, raw: line };
160
275
  });
161
276
  }
@@ -177,13 +292,20 @@ function assertSymlinkWithinWorkspace(entry) {
177
292
  if (relative === null || !target) {
178
293
  throw new Error(`unsafe archive symlink: ${entry.raw}`);
179
294
  }
180
- const linkDir = pathPosix.dirname(`${OPENCLAW_WORKSPACE}/${relative}`);
295
+ if (!symlinkTargetWithinWorkspace(relative, target)) {
296
+ throw new Error(`unsafe archive symlink target: ${entry.raw}`);
297
+ }
298
+ }
299
+ // backup 过滤与 restore 校验共用的判定:软链在还原到 OPENCLAW_WORKSPACE 后,
300
+ // 其目标是否仍落在 workspace 内。relativePath 是软链相对 workspace 根的路径。
301
+ function symlinkTargetWithinWorkspace(relativePath, target) {
302
+ if (!target)
303
+ return false;
304
+ const linkDir = pathPosix.dirname(`${OPENCLAW_WORKSPACE}/${relativePath}`);
181
305
  const resolvedTarget = target.startsWith('/')
182
306
  ? pathPosix.normalize(target)
183
307
  : pathPosix.normalize(pathPosix.join(linkDir, target));
184
- if (resolvedTarget !== OPENCLAW_WORKSPACE && !resolvedTarget.startsWith(`${OPENCLAW_WORKSPACE}/`)) {
185
- throw new Error(`unsafe archive symlink target: ${entry.raw}`);
186
- }
308
+ return resolvedTarget === OPENCLAW_WORKSPACE || resolvedTarget.startsWith(`${OPENCLAW_WORKSPACE}/`);
187
309
  }
188
310
  function workspaceRelativePath(entryPath) {
189
311
  const normalized = normalizeArchiveEntry(entryPath);
@@ -195,23 +317,41 @@ function workspaceRelativePath(entryPath) {
195
317
  }
196
318
  return null;
197
319
  }
198
- function restoreWorkspaceBackup(fsOps, backupWorkspaceDir, restored) {
320
+ function restoreWorkspaceBackup(fsOps, backupWorkspaceDir, restored, scope = 'user-data') {
199
321
  if (!fsOps.existsSync(backupWorkspaceDir))
200
322
  return;
201
- for (const file of OPENCLAW_USER_DATA_FILES) {
323
+ for (const file of getUserDataFilesForScope(scope)) {
202
324
  if (restored.has(file))
203
325
  continue;
204
326
  const src = `${backupWorkspaceDir}/${file}`;
205
327
  if (!fsOps.existsSync(src))
206
328
  continue;
207
329
  fsOps.cpSync(src, `${OPENCLAW_WORKSPACE}/${file}`);
208
- restored.add(file);
330
+ restored.set(file, 'file');
209
331
  }
210
332
  const skillsSrc = `${backupWorkspaceDir}/${SKILLS_DIR}`;
211
333
  if (!restored.has(SKILLS_DIR) && fsOps.existsSync(skillsSrc) && fsOps.statSync(skillsSrc).isDirectory()) {
212
334
  fsOps.rmSync(`${OPENCLAW_WORKSPACE}/${SKILLS_DIR}`, { recursive: true, force: true });
213
335
  fsOps.cpSync(skillsSrc, `${OPENCLAW_WORKSPACE}/${SKILLS_DIR}`, { recursive: true });
214
- restored.add(SKILLS_DIR);
336
+ restored.set(SKILLS_DIR, 'directory');
337
+ }
338
+ }
339
+ function restoreWorkspaceExtraEntries(fsOps, backupWorkspaceDir, restored) {
340
+ if (!fsOps.existsSync(backupWorkspaceDir))
341
+ return;
342
+ for (const entry of fsOps.readdirSync(backupWorkspaceDir, { withFileTypes: true })) {
343
+ if (restored.has(entry.name))
344
+ continue;
345
+ const src = `${backupWorkspaceDir}/${entry.name}`;
346
+ const dest = `${OPENCLAW_WORKSPACE}/${entry.name}`;
347
+ fsOps.rmSync(dest, { recursive: true, force: true });
348
+ if (entry.isDirectory()) {
349
+ fsOps.cpSync(src, dest, { recursive: true });
350
+ restored.set(entry.name, 'directory');
351
+ continue;
352
+ }
353
+ fsOps.cpSync(src, dest);
354
+ restored.set(entry.name, entry.isSymbolicLink?.() ? 'symlink' : 'file');
215
355
  }
216
356
  }
217
357
  function applyRestoredPermissions(fsOps, path) {
@@ -256,8 +396,7 @@ function validateArchiveEntries(entries) {
256
396
  continue;
257
397
  const parts = normalized.split('/');
258
398
  if (entry.startsWith('/') ||
259
- parts.includes('..') ||
260
- parts.includes(OPENCLAW_CONFIG_FILE)) {
399
+ parts.includes('..')) {
261
400
  throw new Error(`unsafe archive entry: ${entry}`);
262
401
  }
263
402
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openclaw-user-data.js","sourceRoot":"","sources":["../src/openclaw-user-data.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,MAAM,EACN,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE7E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,WAAW;IACX,SAAS;IACT,aAAa;IACb,SAAS;IACT,UAAU;IACV,WAAW;IACX,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,0BAA0B,CAAC;AAEpE,MAAM,oBAAoB,GAAG,WAAW,CAAC;AACzC,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,oBAAoB,GAAG,eAAe,CAAC;AA2C7C,MAAM,YAAY,GAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC3E,MAAM,aAAa,GAAc,EAAE,GAAG,YAAY,EAAE,WAAW,EAAE,WAAuC,EAAE,CAAC;AAC3G,MAAM,aAAa,GAAc;IAC/B,GAAG,YAAY;IACf,MAAM;IACN,SAAS;IACT,SAAS;IACT,WAAW,EAAE,WAAuC;CACrD,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,GAAS;IAC7C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,YAAY,CAAC,KAAe,EAAE,GAAW,EAAE,IAAY,EAAE,SAAS,GAAG,KAAK;IACjF,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,EAAE,QAAkB,YAAY;IACrF,MAAM,SAAS,GAAG,GAAG,iBAAiB,uBAAuB,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1F,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAS;QAE3C,MAAM,mBAAmB,GAAG,gBAAgB,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,2BAA2B,CAAC;QACxG,MAAM,kBAAkB,GAAG,GAAG,SAAS,IAAI,mBAAmB,EAAE,CAAC;QACjE,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAEhC,MAAM,wBAAwB,GAAG,GAAG,EAAE;YACpC,IAAI,mBAAmB;gBAAE,OAAO;YAChC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;YAC5C,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACrC,wBAAwB,EAAE,CAAC;YAC3B,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC9D,WAAW,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;QAC/C,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3E,wBAAwB,EAAE,CAAC;YAC3B,IAAI,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,kBAAkB,IAAI,UAAU,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;gBAChF,WAAW,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,IAAI,mBAAmB,EAAE,CAAC;YACxB,gBAAgB,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,UAKhD,EAAE;IACJ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAErD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC1D,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,2BAA2B,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC;IAC1G,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,gBAAgB,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,OAKpD;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;IAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,mCAAmC,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;IAEnF,IAAI,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;QAC3E,sBAAsB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,yBAAyB,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE7G,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACrD,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEhC,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,SAAS,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;QACnC,sBAAsB,CAAC,KAAK,EAAE,GAAG,UAAU,IAAI,oBAAoB,EAAE,EAAE,QAAQ,CAAC,CAAC;QACjF,sBAAsB,CAAC,KAAK,EAAE,GAAG,UAAU,IAAI,2BAA2B,EAAE,EAAE,QAAQ,CAAC,CAAC;QAExF,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,GAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC;YAC7C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBACxB,wBAAwB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,CAAC,KAAK,CAAC,sBAAsB,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAEnF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,aAAa,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AASD,KAAK,UAAU,kBAAkB,CAAC,QAAkB,EAAE,WAAmB;IACvE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,IAAI,gBAAgB,WAAW,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,sBAAsB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAc;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;SACzB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACpE,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzF,MAAM,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM;YACpC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW;gBAC9B,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS;oBAC5B,CAAC,CAAC,aAAa,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAuB;IACxD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,sDAAsD;QACtD,2DAA2D;QAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,4BAA4B,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAmB;IACvD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;IACtC,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,kBAAkB,IAAI,QAAQ,EAAE,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;QAC7B,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,IAAI,cAAc,KAAK,kBAAkB,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,kBAAkB,GAAG,CAAC,EAAE,CAAC;QAClG,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,MAAM,UAAU,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,EAAE,CAAC;QACzE,IAAI,UAAU,KAAK,MAAM;YAAE,OAAO,EAAE,CAAC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC;YAAE,OAAO,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAgB,EAAE,kBAA0B,EAAE,QAAqB;IACjG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAAE,OAAO;IAElD,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACjC,MAAM,GAAG,GAAG,GAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,kBAAkB,IAAI,IAAI,EAAE,CAAC,CAAC;QACnD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,kBAAkB,IAAI,UAAU,EAAE,CAAC;IACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACxG,KAAK,CAAC,MAAM,CAAC,GAAG,kBAAkB,IAAI,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,kBAAkB,IAAI,UAAU,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAgB,EAAE,IAAY;IAC9D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO;IACpC,iDAAiD;IACjD,4EAA4E;IAC5E,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE;QAAE,OAAO;IACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACrE,wBAAwB,CAAC,KAAK,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO;IACT,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAA4B,EAAE,IAAY;IACnE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,MAAc,EAAQ,EAAE;QAClD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;YACjE,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxB,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAS,sBAAsB,CAAC,OAAiB;IAC/C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,IACE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YACrB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpB,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACpC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9B,OAAO,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAChC,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AAC9C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,OAAsC;IAC3E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"openclaw-user-data.js","sourceRoot":"","sources":["../src/openclaw-user-data.ts"],"names":[],"mappings":"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"}
@@ -5,10 +5,6 @@ export declare const OKCLAW_TMP_DIR = "/root/okclaw/tmp";
5
5
  export declare const OPENCLAW_HOME = "/root/.openclaw";
6
6
  export declare const OPENCLAW_WORKSPACE = "/root/.openclaw/workspace";
7
7
  export declare const OPENCLAW_GATEWAY_PORT = 18789;
8
- export declare const OPENVIKING_HOME = "/root/.openviking";
9
- export declare const OPENVIKING_CONF = "/root/.openviking/ov.conf";
10
- export declare const OPENVIKING_ENV = "/root/.openclaw/openviking.env";
11
- export declare const OPENVIKING_PORT = 1933;
12
8
  export declare const NODE_MIN_MAJOR = 24;
13
9
  export declare const NODE_MIN_MINOR = 0;
14
10
  export declare const NODE_INSTALL_VERSION = "24";
@@ -21,9 +17,5 @@ export declare const NODE_MIRROR = "https://npmmirror.com/mirrors/node";
21
17
  export declare const JSDELIVR_GH = "https://cdn.jsdelivr.net/gh";
22
18
  export declare const NVM_VERSION = "v0.40.3";
23
19
  export declare const NVM_SH_SOURCES: string[];
24
- export declare const OPENVIKING_REPO = "volcengine/OpenViking";
25
- export declare const OPENVIKING_PLUGIN_DIR = "examples/openclaw-plugin";
26
- export declare const OPENVIKING_PLUGIN_REQUIRED_FILES: string[];
27
- export declare const OPENVIKING_PLUGIN_OPTIONAL_FILES: string[];
28
20
  export declare const CHANNEL_NPM_PACKAGES: Record<string, string>;
29
21
  export declare const BUNDLED_PLUGINS: Set<string>;
@@ -9,10 +9,6 @@ export const OPENCLAW_WORKSPACE = `${OPENCLAW_HOME}/workspace`;
9
9
  // (`openclaw gateway run` → `openclaw`,systemd → `node`),所以进程识别一律
10
10
  // 按这个监听端口来,不能用 `ps -C` / `pkill -f` 匹配进程名。
11
11
  export const OPENCLAW_GATEWAY_PORT = 18789;
12
- export const OPENVIKING_HOME = '/root/.openviking';
13
- export const OPENVIKING_CONF = `${OPENVIKING_HOME}/ov.conf`;
14
- export const OPENVIKING_ENV = `${OPENCLAW_HOME}/openviking.env`;
15
- export const OPENVIKING_PORT = 1933;
16
12
  // Node baseline — standardize on the current LTS (Node 24, "Krypton").
17
13
  // openclaw keeps raising its own minimum over time (e.g. >=22.19), so any
18
14
  // host sitting on an older Node makes `openclaw onboard` fail with
@@ -48,16 +44,6 @@ export const NVM_SH_SOURCES = [
48
44
  `https://gitee.com/mirrors/nvm/raw/${NVM_VERSION}/nvm.sh`,
49
45
  `https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/nvm.sh`,
50
46
  ];
51
- export const OPENVIKING_REPO = 'volcengine/OpenViking';
52
- export const OPENVIKING_PLUGIN_DIR = 'examples/openclaw-plugin';
53
- // Plugin files to download (same as ov-install)
54
- export const OPENVIKING_PLUGIN_REQUIRED_FILES = ['index.ts', 'config.ts', 'package.json'];
55
- export const OPENVIKING_PLUGIN_OPTIONAL_FILES = [
56
- 'context-engine.ts', 'client.ts', 'process-manager.ts',
57
- 'memory-ranking.ts', 'text-utils.ts', 'tool-call-id.ts',
58
- 'session-transcript-repair.ts', 'openclaw.plugin.json',
59
- 'tsconfig.json',
60
- ];
61
47
  // Channel npm package mapping
62
48
  export const CHANNEL_NPM_PACKAGES = {
63
49
  dingtalk: '@soimy/dingtalk',
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,WAAW,SAAS,CAAC;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,WAAW,SAAS,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,WAAW,MAAM,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,aAAa,YAAY,CAAC;AAC/D,0DAA0D;AAC1D,kEAAkE;AAClE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AACnD,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,eAAe,UAAU,CAAC;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,aAAa,iBAAiB,CAAC;AAChE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AAEpC,uEAAuE;AACvE,0EAA0E;AAC1E,mEAAmE;AACnE,6EAA6E;AAC7E,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,gCAAgC,CAAC;AAC7D,8EAA8E;AAC9E,gFAAgF;AAChF,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAC7D,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,0CAA0C,CAAC;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAEhE,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAEzD,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,iCAAiC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,WAAW,eAAe,WAAW,SAAS;IACjD,qCAAqC,WAAW,SAAS;IACzD,gDAAgD,WAAW,SAAS;CACrE,CAAC;AACF,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAC;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,0BAA0B,CAAC;AAEhE,gDAAgD;AAChD,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,mBAAmB,EAAE,WAAW,EAAE,oBAAoB;IACtD,mBAAmB,EAAE,eAAe,EAAE,iBAAiB;IACvD,8BAA8B,EAAE,sBAAsB;IACtD,eAAe;CAChB,CAAC;AAEF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,iCAAiC;IACzC,iDAAiD;IACjD,mEAAmE;CACpE,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAG,cAAc,CAAC;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,WAAW,SAAS,CAAC;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,WAAW,SAAS,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,WAAW,MAAM,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,aAAa,YAAY,CAAC;AAC/D,0DAA0D;AAC1D,kEAAkE;AAClE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,uEAAuE;AACvE,0EAA0E;AAC1E,mEAAmE;AACnE,6EAA6E;AAC7E,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AACjC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,4EAA4E;AAC5E,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAEzC,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG,gCAAgC,CAAC;AAC7D,8EAA8E;AAC9E,gFAAgF;AAChF,wEAAwE;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAC7D,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,0CAA0C,CAAC;AACxE,MAAM,CAAC,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,WAAW,GAAG,oCAAoC,CAAC;AAEhE,wEAAwE;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,6BAA6B,CAAC;AAEzD,4EAA4E;AAC5E,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAC9E,gFAAgF;AAChF,gFAAgF;AAChF,iCAAiC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,WAAW,eAAe,WAAW,SAAS;IACjD,qCAAqC,WAAW,SAAS;IACzD,gDAAgD,WAAW,SAAS;CACrE,CAAC;AACF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,oBAAoB,GAA2B;IAC1D,QAAQ,EAAE,iBAAiB;IAC3B,MAAM,EAAE,iCAAiC;IACzC,iDAAiD;IACjD,mEAAmE;CACpE,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ export type InstallComponentKind = 'openclaw' | 'channel' | 'skill';
2
+ export interface ParsedInstallComponent {
3
+ kind: InstallComponentKind;
4
+ raw: string;
5
+ channelName?: string;
6
+ skillName?: string;
7
+ }
8
+ export type PackageSource = {
9
+ kind: 'remote';
10
+ url: string;
11
+ } | {
12
+ kind: 'local';
13
+ path: string;
14
+ };
15
+ export type SafePackageVersion = string & {
16
+ readonly __safePackageVersion: unique symbol;
17
+ };
18
+ export declare function parseInstallComponent(component: string): ParsedInstallComponent;
19
+ export declare function assertSafeInstallName(kind: 'channel' | 'skill', name: string): string;
20
+ export declare function assertSafePackageVersion(version: string): SafePackageVersion;
21
+ export declare function parsePackageSource(raw: string): PackageSource;
22
+ export declare function resolveInside(baseDir: string, ...segments: string[]): string;
23
+ export declare function channelExtensionDir(channelName: string): string;
24
+ export declare function skillInstallDir(skillName: string): string;
25
+ export declare function tmpInstallPath(fileName: string): string;
@@ -0,0 +1,95 @@
1
+ import { isAbsolute, resolve, sep } from 'node:path';
2
+ import { BUNDLED_PLUGINS, CHANNEL_NPM_PACKAGES, OKCLAW_TMP_DIR, OPENCLAW_HOME, OPENCLAW_WORKSPACE, } from './constants.js';
3
+ const CHANNEL_NAMES = new Set([
4
+ ...Object.keys(CHANNEL_NPM_PACKAGES),
5
+ ...BUNDLED_PLUGINS,
6
+ 's3',
7
+ ]);
8
+ const NAME_TOKEN_PATTERN = /^[A-Za-z0-9._-]+$/;
9
+ const VERSION_PATTERN = /^[A-Za-z0-9._+-]+$/;
10
+ const SHELL_METACHAR_PATTERN = /[`$;|<>]/;
11
+ const CONTROL_PATTERN = /[\x00-\x1F\x7F]/;
12
+ export function parseInstallComponent(component) {
13
+ if (component === 'openclaw')
14
+ return { kind: 'openclaw', raw: component };
15
+ if (component.startsWith('skill:')) {
16
+ const skillName = component.slice('skill:'.length);
17
+ return { kind: 'skill', raw: component, skillName: assertSafeInstallName('skill', skillName) };
18
+ }
19
+ if (CHANNEL_NAMES.has(component)) {
20
+ return { kind: 'channel', raw: component, channelName: assertSafeInstallName('channel', component) };
21
+ }
22
+ throw new Error(`Unsupported install component: ${component}`);
23
+ }
24
+ export function assertSafeInstallName(kind, name) {
25
+ const message = `Invalid ${kind} name: ${name}`;
26
+ const maxLength = kind === 'skill' ? 128 : 64;
27
+ if (!name || name.length > maxLength || name === '.' || name === '..') {
28
+ throw new Error(message);
29
+ }
30
+ if (!NAME_TOKEN_PATTERN.test(name) || name.includes('..')) {
31
+ throw new Error(message);
32
+ }
33
+ return name;
34
+ }
35
+ export function assertSafePackageVersion(version) {
36
+ if (!version
37
+ || version.length > 128
38
+ || !VERSION_PATTERN.test(version)
39
+ || version.includes('..')
40
+ || version.includes('/')
41
+ || version.includes('\\')
42
+ || /\s/.test(version)
43
+ || CONTROL_PATTERN.test(version)) {
44
+ throw new Error(`Invalid package version: ${version}`);
45
+ }
46
+ return version;
47
+ }
48
+ export function parsePackageSource(raw) {
49
+ if (hasUnsafePackageSourceChars(raw)) {
50
+ throw new Error(`Invalid packageUrl: ${raw}`);
51
+ }
52
+ let parsed;
53
+ try {
54
+ parsed = new URL(raw);
55
+ }
56
+ catch {
57
+ parsed = undefined;
58
+ }
59
+ if (parsed?.protocol === 'http:' || parsed?.protocol === 'https:') {
60
+ return { kind: 'remote', url: raw };
61
+ }
62
+ if (parsed && parsed.protocol !== 'file:') {
63
+ throw new Error(`Invalid packageUrl: ${raw}`);
64
+ }
65
+ if (!isAbsolute(raw)) {
66
+ throw new Error(`Invalid packageUrl: local package must be an absolute path: ${raw}`);
67
+ }
68
+ if (raw.split(/[\\/]+/).includes('..')) {
69
+ throw new Error(`Invalid packageUrl: ${raw}`);
70
+ }
71
+ return { kind: 'local', path: raw };
72
+ }
73
+ export function resolveInside(baseDir, ...segments) {
74
+ const base = resolve(baseDir);
75
+ const target = resolve(base, ...segments);
76
+ if (target !== base && !target.startsWith(`${base}${sep}`)) {
77
+ throw new Error(`Resolved path outside base directory: ${target}`);
78
+ }
79
+ return target;
80
+ }
81
+ export function channelExtensionDir(channelName) {
82
+ return resolveInside(OPENCLAW_HOME, 'extensions', assertSafeInstallName('channel', channelName));
83
+ }
84
+ export function skillInstallDir(skillName) {
85
+ return resolveInside(OPENCLAW_WORKSPACE, 'skills', assertSafeInstallName('skill', skillName));
86
+ }
87
+ export function tmpInstallPath(fileName) {
88
+ return resolveInside(OKCLAW_TMP_DIR, assertSafeInstallName('skill', fileName));
89
+ }
90
+ function hasUnsafePackageSourceChars(raw) {
91
+ return SHELL_METACHAR_PATTERN.test(raw)
92
+ || CONTROL_PATTERN.test(raw)
93
+ || /\s/.test(raw);
94
+ }
95
+ //# sourceMappingURL=install-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-safety.js","sourceRoot":"","sources":["../../src/utils/install-safety.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@ export interface ShellResult {
3
3
  stdout: string;
4
4
  stderr: string;
5
5
  }
6
+ export interface CommandOptions {
7
+ cwd?: string;
8
+ env?: NodeJS.ProcessEnv;
9
+ }
6
10
  /**
7
11
  * Ensure running as root. If not, re-exec with sudo and exit.
8
12
  */
@@ -23,12 +27,19 @@ export declare function ensureRoot(): void;
23
27
  * Throws on non-zero exit.
24
28
  */
25
29
  export declare function shell(cmd: string): Promise<void>;
30
+ /**
31
+ * Run a command with argv instead of interpolating external values into a shell
32
+ * string. The fixed bash wrapper only initializes nvm, then `exec "$@"`.
33
+ */
34
+ export declare function runCommand(cmd: string, args?: string[], options?: CommandOptions): Promise<void>;
26
35
  /**
27
36
  * Run a shell command with retries.
28
37
  */
29
38
  export declare function shellRetry(cmd: string, retries?: number, delayMs?: number): Promise<void>;
39
+ export declare function runCommandRetry(cmd: string, args?: string[], retries?: number, delayMs?: number, options?: CommandOptions): Promise<void>;
30
40
  /**
31
41
  * Run a shell command and capture stdout/stderr.
32
42
  */
33
43
  export declare function shellCapture(cmd: string): Promise<ShellResult>;
44
+ export declare function runCommandCapture(cmd: string, args?: string[], options?: CommandOptions): Promise<ShellResult>;
34
45
  export declare function commandExists(cmd: string): Promise<boolean>;