wangchuan 3.0.0 → 4.0.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 (72) hide show
  1. package/README.md +146 -174
  2. package/README.zh-CN.md +254 -0
  3. package/dist/bin/wangchuan.d.ts +10 -2
  4. package/dist/bin/wangchuan.d.ts.map +1 -1
  5. package/dist/bin/wangchuan.js +30 -233
  6. package/dist/bin/wangchuan.js.map +1 -1
  7. package/dist/src/agents/codex.d.ts +9 -0
  8. package/dist/src/agents/codex.d.ts.map +1 -0
  9. package/dist/src/agents/codex.js +20 -0
  10. package/dist/src/agents/codex.js.map +1 -0
  11. package/dist/src/agents/index.d.ts.map +1 -1
  12. package/dist/src/agents/index.js +2 -0
  13. package/dist/src/agents/index.js.map +1 -1
  14. package/dist/src/commands/completions.js +2 -2
  15. package/dist/src/commands/completions.js.map +1 -1
  16. package/dist/src/commands/doctor.d.ts +17 -6
  17. package/dist/src/commands/doctor.d.ts.map +1 -1
  18. package/dist/src/commands/doctor.js +233 -65
  19. package/dist/src/commands/doctor.js.map +1 -1
  20. package/dist/src/commands/list.d.ts.map +1 -1
  21. package/dist/src/commands/list.js +1 -0
  22. package/dist/src/commands/list.js.map +1 -1
  23. package/dist/src/commands/status.d.ts +20 -3
  24. package/dist/src/commands/status.d.ts.map +1 -1
  25. package/dist/src/commands/status.js +321 -51
  26. package/dist/src/commands/status.js.map +1 -1
  27. package/dist/src/commands/sync.d.ts.map +1 -1
  28. package/dist/src/commands/sync.js +51 -0
  29. package/dist/src/commands/sync.js.map +1 -1
  30. package/dist/src/commands/template.js +1 -1
  31. package/dist/src/commands/template.js.map +1 -1
  32. package/dist/src/core/config.d.ts +9 -9
  33. package/dist/src/core/config.d.ts.map +1 -1
  34. package/dist/src/core/config.js +11 -11
  35. package/dist/src/core/config.js.map +1 -1
  36. package/dist/src/core/crypto.d.ts +10 -10
  37. package/dist/src/core/crypto.d.ts.map +1 -1
  38. package/dist/src/core/crypto.js +19 -19
  39. package/dist/src/core/crypto.js.map +1 -1
  40. package/dist/src/core/git.d.ts +2 -2
  41. package/dist/src/core/git.js +9 -9
  42. package/dist/src/core/git.js.map +1 -1
  43. package/dist/src/core/json-field.d.ts +5 -5
  44. package/dist/src/core/json-field.d.ts.map +1 -1
  45. package/dist/src/core/json-field.js +5 -5
  46. package/dist/src/core/json-field.js.map +1 -1
  47. package/dist/src/core/sync.d.ts +9 -9
  48. package/dist/src/core/sync.js +47 -47
  49. package/dist/src/core/sync.js.map +1 -1
  50. package/dist/src/i18n.d.ts.map +1 -1
  51. package/dist/src/i18n.js +24 -10
  52. package/dist/src/i18n.js.map +1 -1
  53. package/dist/src/types.d.ts +24 -23
  54. package/dist/src/types.d.ts.map +1 -1
  55. package/dist/src/types.js +3 -3
  56. package/dist/src/types.js.map +1 -1
  57. package/dist/src/utils/linediff.d.ts +6 -5
  58. package/dist/src/utils/linediff.d.ts.map +1 -1
  59. package/dist/src/utils/linediff.js +10 -9
  60. package/dist/src/utils/linediff.js.map +1 -1
  61. package/dist/test/crypto.test.d.ts +1 -1
  62. package/dist/test/crypto.test.js +16 -16
  63. package/dist/test/crypto.test.js.map +1 -1
  64. package/dist/test/json-field.test.d.ts +1 -1
  65. package/dist/test/json-field.test.js +13 -13
  66. package/dist/test/json-field.test.js.map +1 -1
  67. package/dist/test/sync.test.d.ts +8 -8
  68. package/dist/test/sync.test.js +122 -113
  69. package/dist/test/sync.test.js.map +1 -1
  70. package/package.json +1 -1
  71. package/skill/SKILL.md +40 -53
  72. package/skill/claude/SKILL.md +10 -41
@@ -0,0 +1,254 @@
1
+ # 忘川 (Wangchuan)
2
+
3
+ [English](README.md)
4
+
5
+ > 忘川是中国神话中冥界的遗忘之河,亡魂渡河饮水即忘前世一切记忆。
6
+ > 而 **忘川** 让你的 AI 智能体记忆在环境切换时永不遗失。
7
+
8
+ AI 记忆同步系统 — 加密备份与跨环境迁移。支持 **7 种智能体**:OpenClaw、Claude、Gemini、CodeBuddy、WorkBuddy、Cursor、Codex。
9
+
10
+ [![npm version](https://img.shields.io/npm/v/wangchuan)](https://www.npmjs.com/package/wangchuan)
11
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18.19.0-brightgreen)](https://nodejs.org)
12
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
13
+
14
+ ---
15
+
16
+ ## 功能特性
17
+
18
+ - **AES-256-GCM 加密** — 密钥本地存储,永不提交 Git
19
+ - **7 种智能体** — OpenClaw、Claude、Gemini、CodeBuddy、WorkBuddy、Cursor、Codex
20
+ - **跨 agent 共享** — Skills 和 MCP 配置自动在所有 agent 间分发
21
+ - **JSON 字段级同步** — 提取指定字段(如从 `.claude.json` 只同步 `mcpServers`)
22
+ - **删除传播** — 所有 agent 都删除的 skill/MCP 自动从仓库清理
23
+ - **一键还原** — 新服务器 `init + pull` 即可完整恢复所有 agent 配置
24
+ - **冲突解决** — 拉取时交互式选择覆盖/跳过
25
+ - **自动回滚** — 失败自动回滚,不污染仓库历史
26
+ - **多语言** — 完整中英文 CLI 支持,通过 `wangchuan lang zh|en` 切换
27
+ - **明文扫描** — 推送前自动检测泄露的 token/密钥
28
+ - **配置迁移** — 自动 v1→v2 迁移,含备份和回滚保护
29
+
30
+ ---
31
+
32
+ ## 命令列表
33
+
34
+ | 命令 | 描述 |
35
+ |------|------|
36
+ | `init` | 初始化系统、生成 AES-256-GCM 密钥、克隆私有仓库 |
37
+ | `pull` | 从仓库拉取并解密配置,还原到本地工作区 |
38
+ | `push` | 将本地配置加密推送到仓库 |
39
+ | `sync` | 双向同步(先拉取再推送) |
40
+ | `status` | 查看仓库状态、工作区差异与文件清单 |
41
+ | `diff` | 逐文件显示本地与仓库的行级差异(自动解密) |
42
+ | `list` | 列出所有托管文件,显示本地/仓库存在状态 |
43
+ | `dump` | 生成明文快照到临时目录,方便检查同步内容 |
44
+ | `lang` | 切换 CLI 显示语言(zh/en) |
45
+ | `watch` | 监听文件变化并自动同步 |
46
+ | `env` | 管理同步环境(创建/切换/列出/删除) |
47
+ | `agent` | 管理智能体(列出/启用/禁用/设置路径/详情) |
48
+ | `key` | 密钥管理(导出/导入/轮换) |
49
+ | `report` | 生成同步报告 |
50
+ | `doctor` | 诊断并修复常见问题 |
51
+ | `history` | 查看同步操作历史 |
52
+ | `snapshot` | 创建/恢复/列出时间点快照 |
53
+ | `summary` | 显示同步统计摘要 |
54
+ | `setup` | 引导式交互初始化向导 |
55
+ | `health` | 系统健康检查 |
56
+ | `search` | 搜索已同步的文件 |
57
+ | `config` | 配置导出/导入管理 |
58
+ | `changelog` | 查看同步变更日志 |
59
+ | `tag` | 记忆标签系统 |
60
+ | `cleanup` | 清理过期记忆条目 |
61
+ | `template` | 应用预设同步配置模板 |
62
+ | `batch` | 批量执行多个命令 |
63
+ | `completions` | 生成 shell 自动补全脚本(bash/zsh) |
64
+
65
+ 所有命令支持 `--agent <name>` 过滤(`lang` 除外)。
66
+
67
+ ---
68
+
69
+ ## 安装
70
+
71
+ ```bash
72
+ npm install -g wangchuan
73
+ ```
74
+
75
+ 或从源码安装:
76
+
77
+ ```bash
78
+ git clone https://github.com/nicepkg/wangchuan.git
79
+ cd wangchuan
80
+ npm install
81
+ npm run build
82
+ npm link
83
+ ```
84
+
85
+ ---
86
+
87
+ ## 快速开始
88
+
89
+ ### 1. 初始化
90
+
91
+ ```bash
92
+ wangchuan init --repo git@github.com:yourname/your-brain.git
93
+ ```
94
+
95
+ 执行后创建:
96
+ - `~/.wangchuan/config.json` — 系统配置
97
+ - `~/.wangchuan/master.key` — 主密钥(**请妥善保管**)
98
+ - `~/.wangchuan/repo` — 本地仓库克隆
99
+
100
+ ### 2. 推送本地配置
101
+
102
+ ```bash
103
+ wangchuan push -m "初始化配置"
104
+ ```
105
+
106
+ ### 3. 在新环境拉取记忆
107
+
108
+ ```bash
109
+ wangchuan init --repo git@github.com:yourname/your-brain.git --key /path/to/master.key
110
+ wangchuan pull
111
+ ```
112
+
113
+ ### 4. 查看同步状态
114
+
115
+ ```bash
116
+ wangchuan status
117
+ ```
118
+
119
+ ### 5. 切换显示语言
120
+
121
+ ```bash
122
+ wangchuan lang en # 切换到英文
123
+ wangchuan lang zh # 切换到中文
124
+ WANGCHUAN_LANG=en wangchuan status # 环境变量覆盖
125
+ ```
126
+
127
+ ### 6. 只操作指定智能体
128
+
129
+ ```bash
130
+ wangchuan push --agent claude -m "更新 Claude 配置"
131
+ wangchuan pull --agent openclaw
132
+ wangchuan diff --agent gemini
133
+ ```
134
+
135
+ ---
136
+
137
+ ## 支持的智能体
138
+
139
+ | 智能体 | 默认路径 | 同步文件 | JSON 字段 |
140
+ |--------|---------|---------|-----------|
141
+ | **OpenClaw** | `~/.openclaw/workspace/` | MEMORY.md(加密)、AGENTS.md、SOUL.md | — |
142
+ | **Claude** | `~/.claude/` | CLAUDE.md、settings.json(加密) | `.claude.json` → `mcpServers`(加密) |
143
+ | **Gemini** | `~/.gemini/` | — | `settings.internal.json` → `security`、`model` |
144
+ | **CodeBuddy** | `~/.codebuddy/` | MEMORY.md(加密)、CODEBUDDY.md | `mcp.json` → `mcpServers`(加密) |
145
+ | **WorkBuddy** | `~/.workbuddy/` | MEMORY.md(加密)、IDENTITY.md、SOUL.md、USER.md(加密) | `mcp.json` → `mcpServers`(加密) |
146
+ | **Cursor** | `~/.cursor/` | rules/(目录) | `mcp.json` → `mcpServers`(加密)、`cli-config.json` → 字段(加密) |
147
+ | **Codex** | `~/.codex/` | MEMORY.md(加密)、instructions.md | — |
148
+
149
+ 每个智能体的 `workspacePath` 均可在 `~/.wangchuan/config.json` 中自定义。
150
+
151
+ ---
152
+
153
+ ## 仓库结构 (v2)
154
+
155
+ ```
156
+ repo/
157
+ ├── shared/ 跨 agent 共享层
158
+ │ ├── skills/ 所有 agent 的 skills 合并
159
+ │ ├── mcp/ 各 agent 的 MCP 配置提取
160
+ │ └── memory/SHARED.md.enc 跨 agent 共享记忆(加密)
161
+ ├── agents/
162
+ │ ├── openclaw/
163
+ │ │ ├── MEMORY.md.enc 永久记忆(加密)
164
+ │ │ ├── AGENTS.md Agent 行为准则
165
+ │ │ └── SOUL.md Agent 人格设定
166
+ │ ├── claude/
167
+ │ │ ├── CLAUDE.md 全局指令
168
+ │ │ ├── settings.json.enc 权限/插件/模型(加密)
169
+ │ │ └── mcpServers.json.enc 从 .claude.json 提取(加密)
170
+ │ ├── gemini/
171
+ │ │ └── settings-sync.json 提取的 security + model 字段
172
+ │ ├── codebuddy/
173
+ │ ├── workbuddy/
174
+ │ ├── cursor/
175
+ │ └── codex/
176
+ ```
177
+
178
+ ---
179
+
180
+ ## 加密说明
181
+
182
+ - **算法**:AES-256-GCM(认证加密,防篡改)
183
+ - **密钥**:`~/.wangchuan/master.key`(32 字节,十六进制存储)
184
+ - **密文格式**:`IV(12B) + AuthTag(16B) + CipherText` → Base64 编码 → `.enc` 文件
185
+ - ⚠️ **master.key 丢失将无法解密历史配置,请做好备份!**
186
+
187
+ ---
188
+
189
+ ## 配置文件
190
+
191
+ 配置位于 `~/.wangchuan/config.json`:
192
+
193
+ ```jsonc
194
+ {
195
+ "repo": "git@github.com:yourname/your-brain.git",
196
+ "branch": "main",
197
+ "localRepoPath": "~/.wangchuan/repo",
198
+ "keyPath": "~/.wangchuan/master.key",
199
+ "version": 2,
200
+ "profiles": {
201
+ "default": {
202
+ "openclaw": { "enabled": true, "workspacePath": "~/.openclaw/workspace", ... },
203
+ "claude": { "enabled": true, "workspacePath": "~/.claude", ... },
204
+ "gemini": { "enabled": true, "workspacePath": "~/.gemini", ... },
205
+ "codex": { "enabled": true, "workspacePath": "~/.codex", ... }
206
+ }
207
+ },
208
+ "shared": {
209
+ "skills": { "sources": [{ "agent": "claude", "dir": "skills/" }, ...] },
210
+ "mcp": { "sources": [{ "agent": "claude", "src": ".claude.json", "field": "mcpServers" }, ...] },
211
+ "syncFiles": [...]
212
+ }
213
+ }
214
+ ```
215
+
216
+ ---
217
+
218
+ ## 安全规范
219
+
220
+ 1. `master.key` 已加入 `.gitignore`,不会意外提交
221
+ 2. 推送前自动扫描明文 token(`api_key`、`sk-xxx`、`password` 等)
222
+ 3. 迁移密钥请用加密方式传输(不要通过明文邮件/IM)
223
+
224
+ ---
225
+
226
+ ## 项目结构
227
+
228
+ ```
229
+ wangchuan/
230
+ ├── bin/wangchuan.ts CLI 入口
231
+ ├── src/
232
+ │ ├── core/
233
+ │ │ ├── sync.ts 同步引擎(分发、清理、三向操作)
234
+ │ │ ├── json-field.ts JSON 字段级提取与合并
235
+ │ │ ├── crypto.ts AES-256-GCM 加解密
236
+ │ │ ├── git.ts simple-git 封装
237
+ │ │ ├── config.ts 配置管理(v2 profiles + shared)
238
+ │ │ └── migrate.ts v1→v2 迁移(备份 + 锁 + 回滚)
239
+ │ ├── agents/ 智能体定义(每个 agent 一个文件)
240
+ │ ├── commands/ 28 个 CLI 命令
241
+ │ ├── utils/ 日志、校验、行级差异、交互提示
242
+ │ ├── i18n.ts 国际化消息字典
243
+ │ └── types.ts 全局类型定义
244
+ ├── skill/ OpenClaw Skill 封装
245
+ ├── test/ 单元测试(加密、JSON 字段、同步引擎)
246
+ └── .wangchuan/
247
+ └── config.example.json 配置示例(v2)
248
+ ```
249
+
250
+ ---
251
+
252
+ ## 许可证
253
+
254
+ MIT
@@ -2,8 +2,16 @@
2
2
  /**
3
3
  * wangchuan.ts — CLI entry
4
4
  *
5
- * Usage:
6
- * wangchuan <command> [--agent openclaw|claude|gemini|codebuddy|workbuddy|cursor] [flags]
5
+ * Simplified CLI surface: 6 user-facing commands.
6
+ * Philosophy: "foolproof AI memory sync" — minimize cognitive load.
7
+ *
8
+ * Commands:
9
+ * init — One-time setup (interactive if no --repo)
10
+ * sync — Smart bidirectional sync (the ONE daily command)
11
+ * status — Show sync state at a glance (--verbose for full detail)
12
+ * doctor — Diagnose + auto-fix issues (always runs --fix)
13
+ * env — Multi-environment management
14
+ * lang — Switch display language
7
15
  */
8
16
  export {};
9
17
  //# sourceMappingURL=wangchuan.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wangchuan.d.ts","sourceRoot":"","sources":["../../bin/wangchuan.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
1
+ {"version":3,"file":"wangchuan.d.ts","sourceRoot":"","sources":["../../bin/wangchuan.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;GAaG"}
@@ -2,38 +2,24 @@
2
2
  /**
3
3
  * wangchuan.ts — CLI entry
4
4
  *
5
- * Usage:
6
- * wangchuan <command> [--agent openclaw|claude|gemini|codebuddy|workbuddy|cursor] [flags]
5
+ * Simplified CLI surface: 6 user-facing commands.
6
+ * Philosophy: "foolproof AI memory sync" — minimize cognitive load.
7
+ *
8
+ * Commands:
9
+ * init — One-time setup (interactive if no --repo)
10
+ * sync — Smart bidirectional sync (the ONE daily command)
11
+ * status — Show sync state at a glance (--verbose for full detail)
12
+ * doctor — Diagnose + auto-fix issues (always runs --fix)
13
+ * env — Multi-environment management
14
+ * lang — Switch display language
7
15
  */
8
16
  import { Command } from 'commander';
9
17
  import { cmdInit } from '../src/commands/init.js';
10
- import { cmdPull } from '../src/commands/pull.js';
11
- import { cmdPush } from '../src/commands/push.js';
12
18
  import { cmdStatus } from '../src/commands/status.js';
13
- import { cmdDiff } from '../src/commands/diff.js';
14
- import { cmdList } from '../src/commands/list.js';
15
- import { cmdDump } from '../src/commands/dump.js';
16
- import { cmdLang } from '../src/commands/lang.js';
17
19
  import { cmdSync } from '../src/commands/sync.js';
18
- import { cmdWatch } from '../src/commands/watch.js';
19
20
  import { cmdEnv } from '../src/commands/env.js';
20
- import { cmdAgent } from '../src/commands/agent.js';
21
- import { cmdKey } from '../src/commands/key.js';
22
- import { cmdReport } from '../src/commands/report.js';
23
21
  import { cmdDoctor } from '../src/commands/doctor.js';
24
- import { cmdHistory } from '../src/commands/history.js';
25
- import { cmdSnapshot } from '../src/commands/snapshot.js';
26
- import { cmdSummary } from '../src/commands/summary.js';
27
- import { cmdSetup } from '../src/commands/setup.js';
28
- import { cmdHealth } from '../src/commands/health.js';
29
- import { cmdSearch } from '../src/commands/search.js';
30
- import { cmdConfigMgmt } from '../src/commands/config-mgmt.js';
31
- import { cmdChangelog } from '../src/commands/changelog.js';
32
- import { cmdTag } from '../src/commands/tag.js';
33
- import { cmdCleanup } from '../src/commands/cleanup.js';
34
- import { cmdTemplate } from '../src/commands/template.js';
35
- import { cmdBatch } from '../src/commands/batch.js';
36
- import { cmdCompletions } from '../src/commands/completions.js';
22
+ import { cmdLang } from '../src/commands/lang.js';
37
23
  import { logger } from '../src/utils/logger.js';
38
24
  import { t } from '../src/i18n.js';
39
25
  import { AGENT_NAMES } from '../src/types.js';
@@ -43,14 +29,11 @@ function parseAgent(val) {
43
29
  }
44
30
  return val;
45
31
  }
46
- function parseCommaSeparated(val) {
47
- return val.split(',').map(s => s.trim()).filter(s => s.length > 0);
48
- }
49
32
  const program = new Command();
50
33
  program
51
34
  .name('wangchuan')
52
35
  .description(t('cli.description'))
53
- .version('3.0.0');
36
+ .version('4.0.0');
54
37
  // ── init ────────────────────────────────────────────────────────
55
38
  program
56
39
  .command('init')
@@ -61,29 +44,15 @@ program
61
44
  .action(async (opts) => {
62
45
  await run(() => cmdInit(opts));
63
46
  });
64
- // ── pull ────────────────────────────────────────────────────────
65
- program
66
- .command('pull')
67
- .alias('down')
68
- .description(t('cli.cmd.pull'))
69
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
70
- .option('-o, --only <patterns>', t('cli.cmd.only'), parseCommaSeparated)
71
- .option('-x, --exclude <patterns>', t('cli.cmd.exclude'), parseCommaSeparated)
72
- .action(async (opts) => {
73
- await run(() => cmdPull(opts));
74
- });
75
- // ── push ────────────────────────────────────────────────────────
47
+ // ── sync ────────────────────────────────────────────────────────
76
48
  program
77
- .command('push')
78
- .alias('up')
79
- .description(t('cli.cmd.push'))
80
- .option('-m, --message <msg>', t('cli.cmd.push.msg'))
49
+ .command('sync')
50
+ .alias('s')
51
+ .description(t('cli.cmd.sync'))
81
52
  .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
82
53
  .option('-n, --dry-run', t('cli.cmd.dryRun'), false)
83
- .option('-o, --only <patterns>', t('cli.cmd.only'), parseCommaSeparated)
84
- .option('-x, --exclude <patterns>', t('cli.cmd.exclude'), parseCommaSeparated)
85
54
  .action(async (opts) => {
86
- await run(() => cmdPush(opts));
55
+ await run(() => cmdSync(opts));
87
56
  });
88
57
  // ── status ──────────────────────────────────────────────────────
89
58
  program
@@ -91,62 +60,19 @@ program
91
60
  .alias('st')
92
61
  .description(t('cli.cmd.status'))
93
62
  .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
63
+ .option('-v, --verbose', t('cli.cmd.status.verbose'), false)
94
64
  .action(async (opts) => {
95
65
  await run(() => cmdStatus(opts));
96
66
  });
97
- // ── diff ────────────────────────────────────────────────────────
98
- program
99
- .command('diff')
100
- .alias('d')
101
- .description(t('cli.cmd.diff'))
102
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
103
- .action(async (opts) => {
104
- await run(() => cmdDiff(opts));
105
- });
106
- // ── list ────────────────────────────────────────────────────────
107
- program
108
- .command('list')
109
- .alias('ls')
110
- .description(t('cli.cmd.list'))
111
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
112
- .action(async (opts) => {
113
- await run(() => cmdList(opts));
114
- });
115
- // ── dump ────────────────────────────────────────────────────────
67
+ // ── doctor ──────────────────────────────────────────────────────
116
68
  program
117
- .command('dump')
118
- .description(t('cli.cmd.dump'))
119
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
120
- .action(async (opts) => {
121
- await run(() => cmdDump(opts));
122
- });
123
- // ── lang ────────────────────────────────────────────────────────
124
- program
125
- .command('lang [language]')
126
- .description(t('cli.cmd.lang'))
127
- .action(async (language) => {
128
- await run(() => cmdLang(language));
129
- });
130
- // ── sync ────────────────────────────────────────────────────────
131
- program
132
- .command('sync')
133
- .alias('s')
134
- .description(t('cli.cmd.sync'))
135
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
136
- .option('-n, --dry-run', t('cli.cmd.dryRun'), false)
137
- .option('-o, --only <patterns>', t('cli.cmd.only'), parseCommaSeparated)
138
- .option('-x, --exclude <patterns>', t('cli.cmd.exclude'), parseCommaSeparated)
139
- .action(async (opts) => {
140
- await run(() => cmdSync(opts));
141
- });
142
- // ── watch ───────────────────────────────────────────────────────
143
- program
144
- .command('watch')
145
- .description(t('cli.cmd.watch'))
146
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
147
- .option('-i, --interval <minutes>', t('cli.cmd.watch.interval'), parseFloat)
69
+ .command('doctor')
70
+ .description(t('cli.cmd.doctor'))
71
+ .option('--key-rotate', t('cli.cmd.doctor.keyRotate'), false)
72
+ .option('--key-export', t('cli.cmd.doctor.keyExport'), false)
73
+ .option('--setup', t('cli.cmd.doctor.setup'), false)
148
74
  .action(async (opts) => {
149
- await run(() => cmdWatch(opts));
75
+ await run(() => cmdDoctor(opts));
150
76
  });
151
77
  // ── env ─────────────────────────────────────────────────────────
152
78
  program
@@ -156,141 +82,12 @@ program
156
82
  .action(async (action, name, opts) => {
157
83
  await run(() => cmdEnv({ action, name, from: opts.from }));
158
84
  });
159
- // ── agent ───────────────────────────────────────────────────
160
- program
161
- .command('agent <action> [name] [path]')
162
- .description(t('cli.cmd.agent.desc'))
163
- .action(async (action, name, agentPath) => {
164
- await run(() => cmdAgent({ action, name, path: agentPath }));
165
- });
166
- // ── key ─────────────────────────────────────────────────────
167
- program
168
- .command('key <action> [hex]')
169
- .description(t('cli.cmd.key.desc'))
170
- .action(async (action, hex) => {
171
- await run(() => cmdKey({ action, hex }));
172
- });
173
- // ── report ──────────────────────────────────────────────────
174
- program
175
- .command('report')
176
- .description(t('cli.cmd.report'))
177
- .option('--json', t('cli.cmd.report.json'), false)
178
- .action(async (opts) => {
179
- await run(() => cmdReport(opts));
180
- });
181
- // ── doctor ──────────────────────────────────────────────────
182
- program
183
- .command('doctor')
184
- .alias('doc')
185
- .description(t('cli.cmd.doctor'))
186
- .option('--fix', t('cli.cmd.doctor.fix'), false)
187
- .action(async (opts) => {
188
- await run(() => cmdDoctor({ fix: opts.fix }));
189
- });
190
- // ── history ─────────────────────────────────────────────────
191
- program
192
- .command('history')
193
- .alias('hist')
194
- .description(t('cli.cmd.history'))
195
- .option('-l, --limit <n>', t('cli.cmd.history.limit'), parseInt)
196
- .option('--json', t('cli.cmd.history.json'), false)
197
- .action(async (opts) => {
198
- await run(() => cmdHistory({ limit: opts.limit ?? 10, json: opts.json }));
199
- });
200
- // ── snapshot ──────────────────────────────────────────────────
201
- program
202
- .command('snapshot <action> [name]')
203
- .description(t('cli.cmd.snapshot'))
204
- .option('-l, --limit <n>', t('cli.cmd.snapshot.limit'), parseInt)
205
- .action(async (action, name, opts) => {
206
- await run(() => cmdSnapshot({ action, name, maxSnapshots: opts?.limit }));
207
- });
208
- // ── summary ─────────────────────────────────────────────────
209
- program
210
- .command('summary')
211
- .description(t('cli.cmd.summary'))
212
- .option('--json', t('cli.cmd.summary.json'), false)
213
- .action(async (opts) => {
214
- await run(() => cmdSummary(opts));
215
- });
216
- // ── setup ───────────────────────────────────────────────────
217
- program
218
- .command('setup')
219
- .description(t('cli.cmd.setup'))
220
- .action(async () => {
221
- await run(() => cmdSetup());
222
- });
223
- // ── health ──────────────────────────────────────────────────
224
- program
225
- .command('health')
226
- .description(t('cli.cmd.health'))
227
- .action(async () => {
228
- await run(() => cmdHealth());
229
- });
230
- // ── search ──────────────────────────────────────────────────
231
- program
232
- .command('search <query>')
233
- .description(t('cli.cmd.search'))
234
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
235
- .option('-i, --ignore-case', t('cli.cmd.search.ignoreCase'), false)
236
- .option('--regex', t('cli.cmd.search.regex'), false)
237
- .option('-C, --context <lines>', t('cli.cmd.search.context'), parseInt)
238
- .action(async (query, opts) => {
239
- await run(() => cmdSearch({ query, ...opts }));
240
- });
241
- // ── config export/import ────────────────────────────────────
242
- program
243
- .command('config <action> [file]')
244
- .description(t('cli.cmd.config'))
245
- .action(async (action, file) => {
246
- await run(() => cmdConfigMgmt({ action, file }));
247
- });
248
- // ── changelog ───────────────────────────────────────────────
249
- program
250
- .command('changelog')
251
- .description(t('cli.cmd.changelog'))
252
- .option('-l, --limit <n>', t('cli.cmd.changelog.limit'), parseInt)
253
- .action(async (opts) => {
254
- await run(() => cmdChangelog({ limit: opts.limit ?? 5 }));
255
- });
256
- // ── tag ──────────────────────────────────────────────────────
257
- program
258
- .command('tag <action> [pattern] [tags...]')
259
- .description(t('cli.cmd.tag'))
260
- .action(async (action, pattern, tags) => {
261
- await run(() => cmdTag({ action, pattern, tags: tags ?? [] }));
262
- });
263
- // ── cleanup ──────────────────────────────────────────────────
264
- program
265
- .command('cleanup')
266
- .description(t('cli.cmd.cleanup'))
267
- .option('-a, --agent <name>', t('cli.cmd.agent'), parseAgent)
268
- .option('--auto', t('cli.cmd.cleanup.auto'), false)
269
- .option('--days <n>', t('cli.cmd.cleanup.days'), parseInt)
270
- .action(async (opts) => {
271
- await run(() => cmdCleanup(opts));
272
- });
273
- // ── template ──────────────────────────────────────────────────
274
- program
275
- .command('template <action> [name]')
276
- .description(t('cli.cmd.template'))
277
- .action(async (action, name) => {
278
- await run(() => cmdTemplate({ action, name }));
279
- });
280
- // ── batch ─────────────────────────────────────────────────────
281
- program
282
- .command('batch <commands...>')
283
- .description(t('cli.cmd.batch'))
284
- .option('--continue-on-error', t('cli.cmd.batch.continueOnError'), false)
285
- .action(async (commands, opts) => {
286
- await run(() => cmdBatch({ commands, continueOnError: opts.continueOnError ?? false }));
287
- });
288
- // ── completions ─────────────────────────────────────────────────
85
+ // ── lang ────────────────────────────────────────────────────────
289
86
  program
290
- .command('completions [shell]')
291
- .description(t('cli.cmd.completions'))
292
- .action(async (shell) => {
293
- await run(() => cmdCompletions(shell));
87
+ .command('lang [language]')
88
+ .description(t('cli.cmd.lang'))
89
+ .action(async (language) => {
90
+ await run(() => cmdLang(language));
294
91
  });
295
92
  // ── Error handler ───────────────────────────────────────────────
296
93
  async function run(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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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Codex agent definition
3
+ *
4
+ * OpenAI Codex CLI agent. Default workspace: ~/.codex
5
+ * Syncs memory and instruction files.
6
+ */
7
+ import type { AgentDefinition } from './types.js';
8
+ export declare const codex: AgentDefinition;
9
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agents/codex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,KAAK,EAAE,eAUnB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Codex agent definition
3
+ *
4
+ * OpenAI Codex CLI agent. Default workspace: ~/.codex
5
+ * Syncs memory and instruction files.
6
+ */
7
+ import os from 'os';
8
+ import path from 'path';
9
+ export const codex = {
10
+ name: 'codex',
11
+ profile: {
12
+ enabled: true,
13
+ workspacePath: path.join(os.homedir(), '.codex'),
14
+ syncFiles: [
15
+ { src: 'MEMORY.md', encrypt: true },
16
+ { src: 'instructions.md', encrypt: false },
17
+ ],
18
+ },
19
+ };
20
+ //# sourceMappingURL=codex.js.map