wangchuan 2.3.1 → 2.4.0

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.
Files changed (41) hide show
  1. package/dist/bin/wangchuan.d.ts +2 -2
  2. package/dist/bin/wangchuan.js +24 -24
  3. package/dist/bin/wangchuan.js.map +1 -1
  4. package/dist/src/commands/diff.d.ts +3 -3
  5. package/dist/src/commands/diff.js +15 -15
  6. package/dist/src/commands/diff.js.map +1 -1
  7. package/dist/src/commands/dump.d.ts +3 -3
  8. package/dist/src/commands/dump.d.ts.map +1 -1
  9. package/dist/src/commands/dump.js +11 -14
  10. package/dist/src/commands/dump.js.map +1 -1
  11. package/dist/src/commands/init.d.ts +1 -1
  12. package/dist/src/commands/init.d.ts.map +1 -1
  13. package/dist/src/commands/init.js +22 -23
  14. package/dist/src/commands/init.js.map +1 -1
  15. package/dist/src/commands/list.d.ts +3 -3
  16. package/dist/src/commands/list.d.ts.map +1 -1
  17. package/dist/src/commands/list.js +10 -11
  18. package/dist/src/commands/list.js.map +1 -1
  19. package/dist/src/commands/pull.d.ts +1 -1
  20. package/dist/src/commands/pull.js +17 -17
  21. package/dist/src/commands/pull.js.map +1 -1
  22. package/dist/src/commands/push.d.ts +1 -1
  23. package/dist/src/commands/push.js +20 -20
  24. package/dist/src/commands/push.js.map +1 -1
  25. package/dist/src/commands/status.d.ts +1 -1
  26. package/dist/src/commands/status.js +25 -25
  27. package/dist/src/commands/status.js.map +1 -1
  28. package/dist/src/core/migrate.js +13 -13
  29. package/dist/src/core/migrate.js.map +1 -1
  30. package/dist/src/core/sync.js +10 -10
  31. package/dist/src/core/sync.js.map +1 -1
  32. package/dist/src/utils/prompt.d.ts +6 -6
  33. package/dist/src/utils/prompt.d.ts.map +1 -1
  34. package/dist/src/utils/prompt.js +10 -11
  35. package/dist/src/utils/prompt.js.map +1 -1
  36. package/dist/src/utils/validator.d.ts +3 -4
  37. package/dist/src/utils/validator.d.ts.map +1 -1
  38. package/dist/src/utils/validator.js +4 -4
  39. package/dist/src/utils/validator.js.map +1 -1
  40. package/package.json +1 -1
  41. package/skill/wangchuan-skill.sh +14 -13
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * wangchuan.ts — CLI 入口
3
+ * wangchuan.ts — CLI entry / CLI 入口
4
4
  *
5
- * 用法:
5
+ * Usage / 用法:
6
6
  * wangchuan <command> [--agent openclaw|claude|gemini] [flags]
7
7
  */
8
8
  export {};
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * wangchuan.ts — CLI 入口
3
+ * wangchuan.ts — CLI entry / CLI 入口
4
4
  *
5
- * 用法:
5
+ * Usage / 用法:
6
6
  * wangchuan <command> [--agent openclaw|claude|gemini] [flags]
7
7
  */
8
8
  import { Command } from 'commander';
@@ -15,78 +15,78 @@ import { cmdList } from '../src/commands/list.js';
15
15
  import { cmdDump } from '../src/commands/dump.js';
16
16
  import { logger } from '../src/utils/logger.js';
17
17
  const AGENT_CHOICES = ['openclaw', 'claude', 'gemini'];
18
- /** 校验 --agent 值合法性 */
18
+ /** Validate --agent value / 校验 --agent 值合法性 */
19
19
  function parseAgent(val) {
20
20
  if (!AGENT_CHOICES.includes(val)) {
21
- throw new Error(`--agent 必须是 openclaw | claude | gemini,收到: ${val}`);
21
+ throw new Error(`--agent must be openclaw | claude | gemini, got: ${val} / --agent 必须是 openclaw | claude | gemini,收到: ${val}`);
22
22
  }
23
23
  return val;
24
24
  }
25
25
  const program = new Command();
26
26
  program
27
27
  .name('wangchuan')
28
- .description('忘川 · AI 记忆同步系统')
29
- .version('1.0.0');
28
+ .description('Wangchuan · AI Memory Sync System / 忘川 · AI 记忆同步系统')
29
+ .version('2.3.1');
30
30
  // ── init ────────────────────────────────────────────────────────
31
31
  program
32
32
  .command('init')
33
- .description('初始化忘川,配置仓库并生成密钥')
34
- .requiredOption('-r, --repo <url>', 'Git 仓库地址 (SSH HTTPS)')
35
- .option('-k, --key <master-key>', '导入已有的主密钥(十六进制字符串)')
36
- .option('--force', '强制重新初始化(覆盖现有配置)', false)
33
+ .description('Initialize Wangchuan, configure repo and generate key / 初始化忘川,配置仓库并生成密钥')
34
+ .requiredOption('-r, --repo <url>', 'Git repo URL (SSH or HTTPS) / Git 仓库地址')
35
+ .option('-k, --key <master-key>', 'Import existing master key (hex string) / 导入已有的主密钥(十六进制字符串)')
36
+ .option('--force', 'Force re-init (overwrite existing config) / 强制重新初始化', false)
37
37
  .action(async (opts) => {
38
38
  await run(() => cmdInit(opts));
39
39
  });
40
40
  // ── pull ────────────────────────────────────────────────────────
41
41
  program
42
42
  .command('pull')
43
- .description('从远端仓库拉取并还原配置到本地工作区')
44
- .option('-a, --agent <name>', '只操作指定智能体 (openclaw|claude|gemini)', parseAgent)
43
+ .description('Pull and restore configs from remote repo / 从远端仓库拉取并还原配置到本地')
44
+ .option('-a, --agent <name>', 'Filter by agent / 只操作指定智能体 (openclaw|claude|gemini)', parseAgent)
45
45
  .action(async (opts) => {
46
46
  await run(() => cmdPull(opts));
47
47
  });
48
48
  // ── push ────────────────────────────────────────────────────────
49
49
  program
50
50
  .command('push')
51
- .description('将本地工作区配置加密后推送到远端仓库')
52
- .option('-m, --message <msg>', '自定义提交信息')
53
- .option('-a, --agent <name>', '只操作指定智能体 (openclaw|claude|gemini)', parseAgent)
51
+ .description('Encrypt and push local configs to remote repo / 将本地配置加密后推送到远端仓库')
52
+ .option('-m, --message <msg>', 'Custom commit message / 自定义提交信息')
53
+ .option('-a, --agent <name>', 'Filter by agent / 只操作指定智能体 (openclaw|claude|gemini)', parseAgent)
54
54
  .action(async (opts) => {
55
55
  await run(() => cmdPush(opts));
56
56
  });
57
57
  // ── status ──────────────────────────────────────────────────────
58
58
  program
59
59
  .command('status')
60
- .description('查看当前同步状态和工作区差异')
61
- .option('-a, --agent <name>', '只操作指定智能体 (openclaw|claude|gemini)', parseAgent)
60
+ .description('Show sync status and workspace diff / 查看同步状态和工作区差异')
61
+ .option('-a, --agent <name>', 'Filter by agent / 只操作指定智能体 (openclaw|claude|gemini)', parseAgent)
62
62
  .action(async (opts) => {
63
63
  await run(() => cmdStatus(opts));
64
64
  });
65
65
  // ── diff ────────────────────────────────────────────────────────
66
66
  program
67
67
  .command('diff')
68
- .description('显示本地与仓库的行级文件差异')
69
- .option('-a, --agent <name>', '只显示指定智能体 (openclaw|claude|gemini)', parseAgent)
68
+ .description('Show line-level diff between local and repo / 显示本地与仓库的行级文件差异')
69
+ .option('-a, --agent <name>', 'Filter by agent / 只显示指定智能体 (openclaw|claude|gemini)', parseAgent)
70
70
  .action(async (opts) => {
71
71
  await run(() => cmdDiff(opts));
72
72
  });
73
73
  // ── list ────────────────────────────────────────────────────────
74
74
  program
75
75
  .command('list')
76
- .description('列出所有受管配置项及其本地/仓库存在状态')
77
- .option('-a, --agent <name>', '只列出指定智能体 (openclaw|claude|gemini)', parseAgent)
76
+ .description('List all managed configs with local/repo status / 列出所有受管配置项及其状态')
77
+ .option('-a, --agent <name>', 'Filter by agent / 只列出指定智能体 (openclaw|claude|gemini)', parseAgent)
78
78
  .action(async (opts) => {
79
79
  await run(() => cmdList(opts));
80
80
  });
81
81
  // ── dump ────────────────────────────────────────────────────────
82
82
  program
83
83
  .command('dump')
84
- .description('生成明文快照到临时目录,方便检查同步内容')
85
- .option('-a, --agent <name>', '只导出指定智能体 (openclaw|claude|gemini)', parseAgent)
84
+ .description('Generate plaintext snapshot to temp dir / 生成明文快照到临时目录')
85
+ .option('-a, --agent <name>', 'Filter by agent / 只导出指定智能体 (openclaw|claude|gemini)', parseAgent)
86
86
  .action(async (opts) => {
87
87
  await run(() => cmdDump(opts));
88
88
  });
89
- // ── 错误兜底 ────────────────────────────────────────────────────
89
+ // ── Error handler / 错误兜底 ─────────────────────────────────────
90
90
  async function run(fn) {
91
91
  try {
92
92
  await fn();
@@ -1 +1 @@
1
- {"version":3,"file":"wangchuan.js","sourceRoot":"","sources":["../../bin/wangchuan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wangchuan.js","sourceRoot":"","sources":["../../bin/wangchuan.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * diff.ts — wangchuan diff 命令
2
+ * diff.ts — wangchuan diff command / diff 命令
3
3
  *
4
- * 对每个有变化的文件展示行级 unified diff
5
- * 加密文件先解密后再比较内容,明文文件直接比较。
4
+ * Shows line-level unified diff for each changed file.
5
+ * Encrypted files are decrypted before comparison.
6
6
  */
7
7
  import type { DiffCommandOptions } from '../types.js';
8
8
  export declare function cmdDiff({ agent }?: DiffCommandOptions): Promise<void>;
@@ -1,8 +1,8 @@
1
1
  /**
2
- * diff.ts — wangchuan diff 命令
2
+ * diff.ts — wangchuan diff command / diff 命令
3
3
  *
4
- * 对每个有变化的文件展示行级 unified diff
5
- * 加密文件先解密后再比较内容,明文文件直接比较。
4
+ * Shows line-level unified diff for each changed file.
5
+ * Encrypted files are decrypted before comparison.
6
6
  */
7
7
  import fs from 'fs';
8
8
  import path from 'path';
@@ -15,7 +15,7 @@ import { logger } from '../utils/logger.js';
15
15
  import { diffText } from '../utils/linediff.js';
16
16
  import chalk from 'chalk';
17
17
  export async function cmdDiff({ agent } = {}) {
18
- logger.banner('忘川 · 文件差异');
18
+ logger.banner('Wangchuan · Diff / 忘川 · 文件差异');
19
19
  let cfg = config.load();
20
20
  validator.requireInit(cfg);
21
21
  cfg = ensureMigrated(cfg);
@@ -23,15 +23,15 @@ export async function cmdDiff({ agent } = {}) {
23
23
  const keyPath = syncEngine.expandHome(cfg.keyPath);
24
24
  const entries = syncEngine.buildFileEntries(cfg, undefined, agent);
25
25
  if (agent)
26
- logger.info(`过滤智能体: ${chalk.cyan(agent)}\n`);
26
+ logger.info(`Filter agent / 过滤智能体: ${chalk.cyan(agent)}\n`);
27
27
  let totalChanged = 0;
28
28
  for (const entry of entries) {
29
29
  const srcExists = fs.existsSync(entry.srcAbs);
30
30
  const repoAbs = path.join(repoPath, entry.repoRel);
31
31
  const repoExists = fs.existsSync(repoAbs);
32
- // ── 仅一侧存在 ──────────────────────────────────────────
32
+ // ── Only one side exists / 仅一侧存在 ────────────────────────
33
33
  if (srcExists && !repoExists) {
34
- console.log(chalk.bold.green(`+++ ${entry.repoRel}`) + chalk.gray(' (新增,仓库中不存在)'));
34
+ console.log(chalk.bold.green(`+++ ${entry.repoRel}`) + chalk.gray(' (new, not in repo / 新增,仓库中不存在)'));
35
35
  const lines = fs.readFileSync(entry.srcAbs, 'utf-8').split('\n');
36
36
  lines.forEach(l => console.log(chalk.green(`+ ${l}`)));
37
37
  console.log();
@@ -39,14 +39,14 @@ export async function cmdDiff({ agent } = {}) {
39
39
  continue;
40
40
  }
41
41
  if (!srcExists && repoExists) {
42
- console.log(chalk.bold.red(`--- ${entry.repoRel}`) + chalk.gray(' (本地缺失)'));
42
+ console.log(chalk.bold.red(`--- ${entry.repoRel}`) + chalk.gray(' (missing locally / 本地缺失)'));
43
43
  console.log();
44
44
  totalChanged++;
45
45
  continue;
46
46
  }
47
47
  if (!srcExists && !repoExists)
48
48
  continue;
49
- // ── 两侧均存在,读取内容 ──────────────────────────────────
49
+ // ── Both sides exist, read content / 两侧均存在 ──────────────
50
50
  const localText = fs.readFileSync(entry.srcAbs, 'utf-8');
51
51
  let repoText;
52
52
  if (entry.encrypt) {
@@ -54,7 +54,7 @@ export async function cmdDiff({ agent } = {}) {
54
54
  repoText = cryptoEngine.decryptString(fs.readFileSync(repoAbs, 'utf-8').trim(), keyPath);
55
55
  }
56
56
  catch {
57
- console.log(chalk.yellow(`~ ${entry.repoRel}`) + chalk.gray(' [加密文件,无法解密比较]'));
57
+ console.log(chalk.yellow(`~ ${entry.repoRel}`) + chalk.gray(' [encrypted, cannot decrypt / 加密文件,无法解密比较]'));
58
58
  console.log();
59
59
  totalChanged++;
60
60
  continue;
@@ -65,11 +65,11 @@ export async function cmdDiff({ agent } = {}) {
65
65
  }
66
66
  const diffLines = diffText(repoText, localText);
67
67
  if (diffLines.length === 0)
68
- continue; // 内容相同,跳过
68
+ continue;
69
69
  const encLabel = entry.encrypt ? chalk.gray(' [enc]') : '';
70
70
  console.log(chalk.bold(`~~~ ${entry.repoRel}`) + encLabel);
71
- console.log(chalk.gray(' --- 仓库版本'));
72
- console.log(chalk.gray(' +++ 本地版本'));
71
+ console.log(chalk.gray(' --- repo version / 仓库版本'));
72
+ console.log(chalk.gray(' +++ local version / 本地版本'));
73
73
  console.log();
74
74
  for (const line of diffLines) {
75
75
  if (line.content === '...') {
@@ -89,10 +89,10 @@ export async function cmdDiff({ agent } = {}) {
89
89
  totalChanged++;
90
90
  }
91
91
  if (totalChanged === 0) {
92
- logger.ok('所有文件与仓库一致,无差异');
92
+ logger.ok('All files match repo, no diff / 所有文件与仓库一致,无差异');
93
93
  }
94
94
  else {
95
- logger.info(`共 ${totalChanged} 个文件有差异`);
95
+ logger.info(`${totalChanged} files differ / ${totalChanged} 个文件有差异`);
96
96
  }
97
97
  }
98
98
  //# sourceMappingURL=diff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/commands/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/commands/diff.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * dump.ts — wangchuan dump 命令
2
+ * dump.ts — wangchuan dump command / dump 命令
3
3
  *
4
- * 在临时目录生成与 repo 完全同构的明文快照,
5
- * 所有 .enc 加密文件自动解密,方便人工检查同步内容。
4
+ * Generates a plaintext snapshot mirroring repo structure in a temp dir.
5
+ * All .enc files are auto-decrypted for manual inspection.
6
6
  */
7
7
  import type { AgentOptions } from '../types.js';
8
8
  export declare function cmdDump({ agent }?: AgentOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../../src/commands/dump.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AAE3D,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDzE"}
1
+ {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../../src/commands/dump.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AAE3D,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDzE"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * dump.ts — wangchuan dump 命令
2
+ * dump.ts — wangchuan dump command / dump 命令
3
3
  *
4
- * 在临时目录生成与 repo 完全同构的明文快照,
5
- * 所有 .enc 加密文件自动解密,方便人工检查同步内容。
4
+ * Generates a plaintext snapshot mirroring repo structure in a temp dir.
5
+ * All .enc files are auto-decrypted for manual inspection.
6
6
  */
7
7
  import fs from 'fs';
8
8
  import os from 'os';
@@ -15,13 +15,13 @@ import { validator } from '../utils/validator.js';
15
15
  import { logger } from '../utils/logger.js';
16
16
  import chalk from 'chalk';
17
17
  export async function cmdDump({ agent } = {}) {
18
- logger.banner('忘川 · 明文快照');
18
+ logger.banner('Wangchuan · Dump / 忘川 · 明文快照');
19
19
  let cfg = config.load();
20
20
  validator.requireInit(cfg);
21
21
  cfg = ensureMigrated(cfg);
22
22
  const keyPath = expandHome(cfg.keyPath);
23
23
  const entries = buildFileEntries(cfg, undefined, agent);
24
- // 创建临时目录
24
+ // Create temp dir / 创建临时目录
25
25
  const dumpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'wangchuan-dump-'));
26
26
  let count = 0;
27
27
  let skipped = 0;
@@ -30,39 +30,36 @@ export async function cmdDump({ agent } = {}) {
30
30
  skipped++;
31
31
  continue;
32
32
  }
33
- // 输出路径:用 plainRel(不带 .enc 后缀)
34
33
  const destPath = path.join(dumpDir, entry.plainRel);
35
34
  fs.mkdirSync(path.dirname(destPath), { recursive: true });
36
35
  if (entry.jsonExtract) {
37
- // JSON 字段提取 → 写入提取后的 JSON
38
36
  try {
39
37
  const fullJson = JSON.parse(fs.readFileSync(entry.srcAbs, 'utf-8'));
40
38
  const partial = jsonField.extractFields(fullJson, entry.jsonExtract.fields);
41
39
  fs.writeFileSync(destPath, JSON.stringify(partial, null, 2), 'utf-8');
42
40
  }
43
41
  catch (err) {
44
- logger.warn(`跳过 JSON 字段提取(解析失败): ${entry.srcAbs}`);
42
+ logger.warn(`Skipping JSON extraction (parse error) / 跳过 JSON 字段提取: ${entry.srcAbs}`);
45
43
  skipped++;
46
44
  continue;
47
45
  }
48
46
  }
49
47
  else {
50
- // 整文件 → 直接复制明文
51
48
  fs.copyFileSync(entry.srcAbs, destPath);
52
49
  }
53
50
  const labels = [];
54
51
  if (entry.encrypt)
55
- labels.push(chalk.gray('[原文件加密]'));
52
+ labels.push(chalk.gray('[src encrypted/原文件加密]'));
56
53
  if (entry.jsonExtract)
57
- labels.push(chalk.blue('[字段提取]'));
54
+ labels.push(chalk.blue('[field extraction/字段提取]'));
58
55
  console.log(` ${chalk.green('✔')} ${entry.plainRel} ${labels.join('')}`);
59
56
  count++;
60
57
  }
61
58
  console.log();
62
- console.log(chalk.bold(` 输出目录:`) + chalk.cyan(dumpDir));
63
- console.log(chalk.bold(` 文件数量:`) + `${count} 个文件` + (skipped > 0 ? chalk.gray(` (${skipped} 个跳过)`) : ''));
59
+ console.log(chalk.bold(` Output dir / 输出目录:`) + chalk.cyan(dumpDir));
60
+ console.log(chalk.bold(` File count / 文件数量:`) + `${count} files/个文件` + (skipped > 0 ? chalk.gray(` (${skipped} skipped/个跳过)`) : ''));
64
61
  console.log();
65
- console.log(chalk.gray(` 提示:该目录包含明文敏感信息,查看后请及时删除`));
62
+ console.log(chalk.gray(` Warning: this dir contains plaintext sensitive data, delete after inspection / 提示:含明文敏感信息,查看后请删除`));
66
63
  console.log(chalk.gray(` rm -rf ${dumpDir}`));
67
64
  }
68
65
  //# sourceMappingURL=dump.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../../src/commands/dump.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../../src/commands/dump.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * init.ts — wangchuan init 命令
2
+ * init.ts — wangchuan init command / init 命令
3
3
  */
4
4
  import type { InitOptions, WangchuanConfig } from '../types.js';
5
5
  export declare function cmdInit({ repo, force, key }: InitOptions): Promise<WangchuanConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKhE,wBAAsB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAa,EAAE,GAAG,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAoDjG"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKhE,wBAAsB,OAAO,CAAC,EAAE,IAAI,EAAE,KAAa,EAAE,GAAG,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAmDjG"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * init.ts — wangchuan init 命令
2
+ * init.ts — wangchuan init command / init 命令
3
3
  */
4
4
  import { config } from '../core/config.js';
5
5
  import { cryptoEngine } from '../core/crypto.js';
@@ -10,52 +10,51 @@ import ora from 'ora';
10
10
  import fs from 'fs';
11
11
  import path from 'path';
12
12
  export async function cmdInit({ repo, force = false, key }) {
13
- logger.banner('忘川初始化');
13
+ logger.banner('Wangchuan Init / 忘川初始化');
14
14
  if (!validator.isGitUrl(repo)) {
15
- throw new Error(`无效的 Git 地址: ${repo}`);
15
+ throw new Error(`Invalid Git URL / 无效的 Git 地址: ${repo}`);
16
16
  }
17
17
  const existing = config.load();
18
18
  if (existing !== null && !force) {
19
- logger.warn(`忘川已初始化 (仓库: ${existing.repo})`);
20
- logger.info('如需重新初始化,请使用 --force 参数');
19
+ logger.warn(`Already initialized (repo: ${existing.repo}) / 忘川已初始化`);
20
+ logger.info('Use --force to re-initialize / 如需重新初始化,请使用 --force 参数');
21
21
  return existing;
22
22
  }
23
- // ── 写配置 ──────────────────────────────────────────────────
24
- let spinner = ora('写入配置 …').start();
23
+ // ── Write config / 写配置 ──────────────────────────────────────
24
+ let spinner = ora('Writing config … / 写入配置 …').start();
25
25
  const cfg = await config.initialize(repo);
26
- spinner.succeed(`配置已写入: ${config.paths.config}`);
27
- // ── 密钥 ──────────────────────────────────────────────────
26
+ spinner.succeed(`Config saved / 配置已写入: ${config.paths.config}`);
27
+ // ── Key / 密钥 ──────────────────────────────────────────────────
28
28
  if (key) {
29
- // 直接写入用户传入的密钥字符串
30
29
  const hex = key.trim();
31
30
  if (!/^[0-9a-fA-F]{64}$/.test(hex)) {
32
- throw new Error('密钥格式无效,需要 64 位十六进制字符串(256-bit');
31
+ throw new Error('Invalid key format, expected 64 hex chars (256-bit) / 密钥格式无效');
33
32
  }
34
33
  fs.mkdirSync(path.dirname(cfg.keyPath), { recursive: true });
35
34
  fs.writeFileSync(cfg.keyPath, hex, 'utf-8');
36
- logger.ok(`主密钥已导入: ${cfg.keyPath}`);
35
+ logger.ok(`Master key imported / 主密钥已导入: ${cfg.keyPath}`);
37
36
  }
38
37
  else if (!cryptoEngine.hasKey(cfg.keyPath)) {
39
- spinner = ora('生成 AES-256-GCM 主密钥 …').start();
38
+ spinner = ora('Generating AES-256-GCM master key / 生成主密钥 …').start();
40
39
  cryptoEngine.generateKey(cfg.keyPath);
41
- spinner.succeed(`主密钥已生成: ${cfg.keyPath}`);
40
+ spinner.succeed(`Master key generated / 主密钥已生成: ${cfg.keyPath}`);
42
41
  }
43
42
  else {
44
- logger.info(`主密钥已存在,跳过生成: ${cfg.keyPath}`);
43
+ logger.info(`Master key exists, skipping / 主密钥已存在: ${cfg.keyPath}`);
45
44
  }
46
- // ── 克隆/拉取仓库 ────────────────────────────────────────────
47
- spinner = ora(`克隆仓库: ${repo} …`).start();
45
+ // ── Clone/fetch repo / 克隆仓库 ────────────────────────────────
46
+ spinner = ora(`Cloning repo / 克隆仓库: ${repo} …`).start();
48
47
  try {
49
48
  await gitEngine.cloneOrFetch(repo, cfg.localRepoPath, cfg.branch);
50
- spinner.succeed(`仓库已就绪: ${cfg.localRepoPath}`);
49
+ spinner.succeed(`Repo ready / 仓库已就绪: ${cfg.localRepoPath}`);
51
50
  }
52
51
  catch (err) {
53
- spinner.fail('克隆仓库失败');
54
- throw new Error(`Git 操作失败: ${err.message}`);
52
+ spinner.fail('Clone failed / 克隆仓库失败');
53
+ throw new Error(`Git operation failed / Git 操作失败: ${err.message}`);
55
54
  }
56
- logger.ok('\n忘川初始化完成!');
57
- logger.step('下一步: wangchuan pull (同步远端记忆到本地)');
58
- logger.step(' wangchuan push (推送本地记忆到远端)');
55
+ logger.ok('\nWangchuan initialized! / 忘川初始化完成!');
56
+ logger.step('Next / 下一步: wangchuan pull (pull remote memories / 同步远端记忆到本地)');
57
+ logger.step(' wangchuan push (push local memories / 推送本地记忆到远端)');
59
58
  return cfg;
60
59
  }
61
60
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * list.ts — wangchuan list 命令
2
+ * list.ts — wangchuan list command / list 命令
3
3
  *
4
- * 瞬间列出所有受管配置文件,不做任何 git/IO 操作。
5
- * 支持 --agent 过滤,按智能体和共享层分组展示。
4
+ * Lists all managed config files with local/repo presence.
5
+ * Grouped by agent and shared tier.
6
6
  */
7
7
  import type { ListOptions } from '../types.js';
8
8
  export declare function cmdList({ agent }?: ListOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAUpE,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDxE"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAUpE,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CxE"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * list.ts — wangchuan list 命令
2
+ * list.ts — wangchuan list command / list 命令
3
3
  *
4
- * 瞬间列出所有受管配置文件,不做任何 git/IO 操作。
5
- * 支持 --agent 过滤,按智能体和共享层分组展示。
4
+ * Lists all managed config files with local/repo presence.
5
+ * Grouped by agent and shared tier.
6
6
  */
7
7
  import fs from 'fs';
8
8
  import { config } from '../core/config.js';
@@ -15,16 +15,16 @@ const TIER_LABELS = {
15
15
  openclaw: 'OpenClaw',
16
16
  claude: 'Claude',
17
17
  gemini: 'Gemini',
18
- shared: 'Shared(跨 Agent 共享)',
18
+ shared: 'Shared (cross-agent / 跨 Agent 共享)',
19
19
  };
20
20
  export async function cmdList({ agent } = {}) {
21
- logger.banner('忘川 · 配置清单');
21
+ logger.banner('Wangchuan · List / 忘川 · 配置清单');
22
22
  let cfg = config.load();
23
23
  validator.requireInit(cfg);
24
24
  cfg = ensureMigrated(cfg);
25
25
  const repoPath = syncEngine.expandHome(cfg.localRepoPath);
26
26
  const entries = syncEngine.buildFileEntries(cfg, undefined, agent);
27
- // agentName 分组
27
+ // Group by agentName
28
28
  const groups = new Map();
29
29
  for (const e of entries) {
30
30
  const tier = e.agentName;
@@ -33,7 +33,6 @@ export async function cmdList({ agent } = {}) {
33
33
  groups.get(tier).push(e);
34
34
  }
35
35
  let totalFiles = 0;
36
- // 先展示 shared,再展示各 agent
37
36
  const order = ['shared', 'openclaw', 'claude', 'gemini'];
38
37
  for (const tier of order) {
39
38
  const group = groups.get(tier);
@@ -46,14 +45,14 @@ export async function cmdList({ agent } = {}) {
46
45
  const localMark = localExists ? chalk.green('✔') : chalk.red('✖');
47
46
  const repoMark = repoExists ? chalk.green('✔') : chalk.gray('·');
48
47
  const encLabel = e.encrypt ? chalk.magenta('[enc]') : ' ';
49
- const jsonLabel = e.jsonExtract ? chalk.yellow('[字段]') : ' ';
50
- console.log(` ${localMark} 本地 ${repoMark} 仓库 ${encLabel} ${jsonLabel} ${chalk.white(e.repoRel)}`);
48
+ const jsonLabel = e.jsonExtract ? chalk.yellow('[field/字段]') : ' ';
49
+ console.log(` ${localMark} local/本地 ${repoMark} repo/仓库 ${encLabel} ${jsonLabel} ${chalk.white(e.repoRel)}`);
51
50
  console.log(chalk.gray(` └─ ${e.srcAbs}`));
52
51
  }
53
52
  console.log();
54
53
  totalFiles += group.length;
55
54
  }
56
- console.log(chalk.gray(` 共 ${totalFiles} 个配置文件`));
57
- console.log(chalk.gray(` ✔ = 存在 · = 仓库中尚无 [enc] = 加密 [字段] = JSON 字段提取`));
55
+ console.log(chalk.gray(` ${totalFiles} config files / 共 ${totalFiles} 个配置文件`));
56
+ console.log(chalk.gray(` ✔ = exists/存在 · = not in repo/仓库中尚无 [enc] = encrypted/加密 [field/字段] = JSON field extraction/字段提取`));
58
57
  }
59
58
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * pull.ts — wangchuan pull 命令
2
+ * pull.ts — wangchuan pull command / pull 命令
3
3
  */
4
4
  import type { PullOptions, RestoreResult } from '../types.js';
5
5
  export declare function cmdPull({ agent }?: PullOptions): Promise<RestoreResult>;