wangchuan 3.0.0 → 3.1.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 (56) hide show
  1. package/README.md +146 -174
  2. package/README.zh-CN.md +254 -0
  3. package/dist/bin/wangchuan.d.ts +1 -1
  4. package/dist/bin/wangchuan.js +2 -2
  5. package/dist/src/agents/codex.d.ts +9 -0
  6. package/dist/src/agents/codex.d.ts.map +1 -0
  7. package/dist/src/agents/codex.js +20 -0
  8. package/dist/src/agents/codex.js.map +1 -0
  9. package/dist/src/agents/index.d.ts.map +1 -1
  10. package/dist/src/agents/index.js +2 -0
  11. package/dist/src/agents/index.js.map +1 -1
  12. package/dist/src/commands/completions.js +2 -2
  13. package/dist/src/commands/completions.js.map +1 -1
  14. package/dist/src/commands/list.d.ts.map +1 -1
  15. package/dist/src/commands/list.js +1 -0
  16. package/dist/src/commands/list.js.map +1 -1
  17. package/dist/src/commands/template.js +1 -1
  18. package/dist/src/commands/template.js.map +1 -1
  19. package/dist/src/core/config.d.ts +9 -9
  20. package/dist/src/core/config.d.ts.map +1 -1
  21. package/dist/src/core/config.js +11 -11
  22. package/dist/src/core/config.js.map +1 -1
  23. package/dist/src/core/crypto.d.ts +10 -10
  24. package/dist/src/core/crypto.d.ts.map +1 -1
  25. package/dist/src/core/crypto.js +19 -19
  26. package/dist/src/core/crypto.js.map +1 -1
  27. package/dist/src/core/git.d.ts +2 -2
  28. package/dist/src/core/git.js +9 -9
  29. package/dist/src/core/git.js.map +1 -1
  30. package/dist/src/core/json-field.d.ts +5 -5
  31. package/dist/src/core/json-field.d.ts.map +1 -1
  32. package/dist/src/core/json-field.js +5 -5
  33. package/dist/src/core/json-field.js.map +1 -1
  34. package/dist/src/core/sync.d.ts +9 -9
  35. package/dist/src/core/sync.js +47 -47
  36. package/dist/src/core/sync.js.map +1 -1
  37. package/dist/src/i18n.js +2 -2
  38. package/dist/src/i18n.js.map +1 -1
  39. package/dist/src/types.d.ts +24 -23
  40. package/dist/src/types.d.ts.map +1 -1
  41. package/dist/src/types.js +3 -3
  42. package/dist/src/types.js.map +1 -1
  43. package/dist/src/utils/linediff.d.ts +6 -5
  44. package/dist/src/utils/linediff.d.ts.map +1 -1
  45. package/dist/src/utils/linediff.js +10 -9
  46. package/dist/src/utils/linediff.js.map +1 -1
  47. package/dist/test/crypto.test.d.ts +1 -1
  48. package/dist/test/crypto.test.js +16 -16
  49. package/dist/test/crypto.test.js.map +1 -1
  50. package/dist/test/json-field.test.d.ts +1 -1
  51. package/dist/test/json-field.test.js +13 -13
  52. package/dist/test/json-field.test.js.map +1 -1
  53. package/dist/test/sync.test.d.ts +8 -8
  54. package/dist/test/sync.test.js +122 -113
  55. package/dist/test/sync.test.js.map +1 -1
  56. package/package.json +1 -1
@@ -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
@@ -3,7 +3,7 @@
3
3
  * wangchuan.ts — CLI entry
4
4
  *
5
5
  * Usage:
6
- * wangchuan <command> [--agent openclaw|claude|gemini|codebuddy|workbuddy|cursor] [flags]
6
+ * wangchuan <command> [--agent openclaw|claude|gemini|codebuddy|workbuddy|cursor|codex] [flags]
7
7
  */
8
8
  export {};
9
9
  //# sourceMappingURL=wangchuan.d.ts.map
@@ -3,7 +3,7 @@
3
3
  * wangchuan.ts — CLI entry
4
4
  *
5
5
  * Usage:
6
- * wangchuan <command> [--agent openclaw|claude|gemini|codebuddy|workbuddy|cursor] [flags]
6
+ * wangchuan <command> [--agent openclaw|claude|gemini|codebuddy|workbuddy|cursor|codex] [flags]
7
7
  */
8
8
  import { Command } from 'commander';
9
9
  import { cmdInit } from '../src/commands/init.js';
@@ -50,7 +50,7 @@ const program = new Command();
50
50
  program
51
51
  .name('wangchuan')
52
52
  .description(t('cli.description'))
53
- .version('3.0.0');
53
+ .version('3.1.0');
54
54
  // ── init ────────────────────────────────────────────────────────
55
55
  program
56
56
  .command('init')
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agents/codex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,CAAC,MAAM,KAAK,GAAoB;IACpC,IAAI,EAAE,OAAO;IACb,OAAO,EAAE;QACP,OAAO,EAAE,IAAI;QACb,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;QAChD,SAAS,EAAE;YACT,EAAE,GAAG,EAAE,WAAW,EAAQ,OAAO,EAAE,IAAI,EAAG;YAC1C,EAAE,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE;SAC3C;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS/D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAO9C,CAAC;AAEX,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,UAAqC,CAAC;AAExE,2CAA2C;AAC3C,wBAAgB,oBAAoB,IAAI,aAAa,CAMpD;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,IAAI,YAAY,CAgBjD;AAED,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAU/D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAQ9C,CAAC;AAEX,oEAAoE;AACpE,eAAO,MAAM,qBAAqB,UAAqC,CAAC;AAExE,2CAA2C;AAC3C,wBAAgB,oBAAoB,IAAI,aAAa,CAMpD;AAED,0CAA0C;AAC1C,wBAAgB,kBAAkB,IAAI,YAAY,CAgBjD;AAED,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -15,6 +15,7 @@ import { gemini } from './gemini.js';
15
15
  import { codebuddy } from './codebuddy.js';
16
16
  import { workbuddy } from './workbuddy.js';
17
17
  import { cursor } from './cursor.js';
18
+ import { codex } from './codex.js';
18
19
  /**
19
20
  * Ordered list of all agent definitions.
20
21
  * The order here determines AGENT_NAMES order and iteration order.
@@ -26,6 +27,7 @@ export const AGENT_DEFINITIONS = [
26
27
  codebuddy,
27
28
  workbuddy,
28
29
  cursor,
30
+ codex,
29
31
  ];
30
32
  /** Derive AGENT_NAMES tuple from definitions (keeps type safety) */
31
33
  export const AGENT_NAMES_FROM_DEFS = AGENT_DEFINITIONS.map(d => d.name);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAO,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAS,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAS,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAS,aAAa,CAAC;AAExC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;CACE,CAAC;AAEX,oEAAoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAExE,2CAA2C;AAC3C,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,CAAC;IACD,OAAO,QAAoC,CAAC;AAC9C,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAG,iBAAiB;SACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAa,EAAE,GAAG,EAAE,CAAC,CAAC,YAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,iBAAiB;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAa,EAAE,GAAG,EAAE,CAAC,CAAC,SAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,SAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE5F,OAAO;QACL,MAAM,EAAK,EAAE,OAAO,EAAE,YAAY,EAAE;QACpC,GAAG,EAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;QAClC,SAAS,EAAE;YACT,EAAE,GAAG,EAAE,kBAAkB,EAAE,aAAa,EAAE,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE;SACnF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAO,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAS,aAAa,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAS,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAS,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,MAAU,YAAY,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IAC3D,QAAQ;IACR,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,MAAM;IACN,KAAK;CACG,CAAC;AAEX,oEAAoE;AACpE,MAAM,CAAC,MAAM,qBAAqB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAExE,2CAA2C;AAC3C,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IACnC,CAAC;IACD,OAAO,QAAoC,CAAC;AAC9C,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,kBAAkB;IAChC,MAAM,YAAY,GAAG,iBAAiB;SACnC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;SAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAa,EAAE,GAAG,EAAE,CAAC,CAAC,YAAa,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAEpE,MAAM,UAAU,GAAG,iBAAiB;SACjC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;SACxB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAa,EAAE,GAAG,EAAE,CAAC,CAAC,SAAU,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,SAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAE5F,OAAO;QACL,MAAM,EAAK,EAAE,OAAO,EAAE,YAAY,EAAE;QACpC,GAAG,EAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;QAClC,SAAS,EAAE;YACT,EAAE,GAAG,EAAE,kBAAkB,EAAE,aAAa,EAAE,uBAAuB,EAAE,OAAO,EAAE,IAAI,EAAE;SACnF;KACF,CAAC;AACJ,CAAC"}
@@ -13,7 +13,7 @@ const COMMANDS = [
13
13
  'snapshot', 'summary', 'setup', 'health', 'search', 'config',
14
14
  'changelog', 'tag', 'cleanup', 'template', 'batch', 'completions',
15
15
  ];
16
- const AGENTS = 'openclaw claude gemini codebuddy workbuddy cursor';
16
+ const AGENTS = 'openclaw claude gemini codebuddy workbuddy cursor codex';
17
17
  const BASH_SCRIPT = `# wangchuan bash completion — generated by wangchuan completions bash
18
18
  _wangchuan() {
19
19
  local cur prev commands agents
@@ -130,7 +130,7 @@ _wangchuan() {
130
130
  'batch:Run multiple commands'
131
131
  'completions:Generate shell completions'
132
132
  )
133
- agents=(openclaw claude gemini codebuddy workbuddy cursor)
133
+ agents=(openclaw claude gemini codebuddy workbuddy cursor codex)
134
134
 
135
135
  _arguments -C \\
136
136
  '1:command:->cmd' \\
@@ -1 +1 @@
1
- {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../../src/commands/completions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAW,YAAY,CAAC;AAEpC,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAChE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACrE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAC5D,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa;CAClE,CAAC;AAEF,MAAM,MAAM,GAAG,mDAAmD,CAAC;AAEnE,MAAM,WAAW,GAAG;;;;;;cAMN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACpB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEjB,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DAiD4C,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCpE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IACjD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,KAAK;YACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACjC,MAAM;QACR;YACE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACrC,MAAM;IACV,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"completions.js","sourceRoot":"","sources":["../../../src/commands/completions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAW,YAAY,CAAC;AAEpC,MAAM,QAAQ,GAAG;IACf,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAChE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACrE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAC5D,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa;CAClE,CAAC;AAEF,MAAM,MAAM,GAAG,yDAAyD,CAAC;AAEzE,MAAM,WAAW,GAAG;;;;;;cAMN,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;YACpB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyEjB,CAAC;AAEF,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+DAiD4C,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCpE,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IACjD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,MAAM;QACR,KAAK,KAAK;YACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACjC,MAAM;QACR;YACE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACrC,MAAM;IACV,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAcpE,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;AASH,OAAO,KAAK,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAepE,wBAAsB,OAAO,CAAC,EAAE,KAAK,EAAE,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDxE"}
@@ -20,6 +20,7 @@ const TIER_LABELS = {
20
20
  codebuddy: 'CodeBuddy',
21
21
  workbuddy: 'WorkBuddy',
22
22
  cursor: 'Cursor',
23
+ codex: 'Codex',
23
24
  shared: '', // filled dynamically via t()
24
25
  };
25
26
  export async function cmdList({ agent } = {}) {
@@ -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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"}
@@ -21,7 +21,7 @@ const TEMPLATES = [
21
21
  {
22
22
  name: 'full',
23
23
  descKey: 'template.desc.full',
24
- agents: ['openclaw', 'claude', 'gemini', 'codebuddy', 'workbuddy', 'cursor'],
24
+ agents: ['openclaw', 'claude', 'gemini', 'codebuddy', 'workbuddy', 'cursor', 'codex'],
25
25
  },
26
26
  {
27
27
  name: 'developer',
@@ -1 +1 @@
1
- {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/commands/template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../../src/commands/template.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,29 @@
1
1
  /**
2
- * config.ts — 全局配置管理
2
+ * config.ts — Global configuration management
3
3
  *
4
- * 配置文件:~/.wangchuan/config.json
5
- * 密钥文件:~/.wangchuan/master.key
4
+ * Config file: ~/.wangchuan/config.json
5
+ * Key file: ~/.wangchuan/master.key
6
6
  */
7
7
  import type { WangchuanConfig } from '../types.js';
8
8
  export declare const CONFIG_VERSION = 2;
9
9
  export declare const config: {
10
10
  /** Read config, return null if not found */
11
11
  readonly load: () => WangchuanConfig | null;
12
- /** 保存配置到磁盘 */
12
+ /** Save config to disk */
13
13
  readonly save: (cfg: WangchuanConfig) => void;
14
- /** 探测远程仓库的默认分支 */
14
+ /** Detect the default branch of a remote repository */
15
15
  readonly detectDefaultBranch: (repo: string) => Promise<string>;
16
- /** 初始化目录和配置文件,返回新建的配置对象 */
16
+ /** Initialize directory and config file, return the new config object */
17
17
  readonly initialize: (repo: string) => Promise<WangchuanConfig>;
18
- /** 浅合并两个配置(override 优先) */
18
+ /** Shallow merge two configs (override takes priority) */
19
19
  readonly merge: (base: WangchuanConfig, override: Partial<WangchuanConfig>) => WangchuanConfig;
20
- /** 默认配置(迁移时使用) */
20
+ /** Defaults (used during migration) */
21
21
  readonly defaults: {
22
22
  readonly profiles: import("../types.js").AgentProfiles;
23
23
  readonly shared: import("../types.js").SharedConfig;
24
24
  readonly version: 2;
25
25
  };
26
- /** 常用路径常量 */
26
+ /** Common path constants */
27
27
  readonly paths: {
28
28
  readonly dir: string;
29
29
  readonly config: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOnD,eAAO,MAAM,cAAc,IAAI,CAAC;AAQhC,eAAO,MAAM,MAAM;IACjB,4CAA4C;yBACpC,eAAe,GAAG,IAAI;IAsB9B,cAAc;yBACJ,eAAe,KAAG,IAAI;IAMhC,kBAAkB;yCACc,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;IAaxD,2BAA2B;gCACJ,MAAM,KAAG,OAAO,CAAC,eAAe,CAAC;IAiBxD,2BAA2B;2BACf,eAAe,YAAY,OAAO,CAAC,eAAe,CAAC,KAAG,eAAe;IAIjF,kBAAkB;;;;;;IAOlB,aAAa;;;;;;;CAOL,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAK7D"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOnD,eAAO,MAAM,cAAc,IAAI,CAAC;AAQhC,eAAO,MAAM,MAAM;IACjB,4CAA4C;yBACpC,eAAe,GAAG,IAAI;IAsB9B,0BAA0B;yBAChB,eAAe,KAAG,IAAI;IAMhC,uDAAuD;yCACvB,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;IAaxD,yEAAyE;gCAClD,MAAM,KAAG,OAAO,CAAC,eAAe,CAAC;IAiBxD,0DAA0D;2BAC9C,eAAe,YAAY,OAAO,CAAC,eAAe,CAAC,KAAG,eAAe;IAIjF,uCAAuC;;;;;;IAOvC,4BAA4B;;;;;;;CAOpB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAK7D"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * config.ts — 全局配置管理
2
+ * config.ts — Global configuration management
3
3
  *
4
- * 配置文件:~/.wangchuan/config.json
5
- * 密钥文件:~/.wangchuan/master.key
4
+ * Config file: ~/.wangchuan/config.json
5
+ * Key file: ~/.wangchuan/master.key
6
6
  */
7
7
  import fs from 'fs';
8
8
  import os from 'os';
@@ -16,9 +16,9 @@ const CONFIG_PATH = path.join(WANGCHUAN_DIR, 'config.json');
16
16
  const KEY_PATH = path.join(WANGCHUAN_DIR, 'master.key');
17
17
  const EXAMPLE_PATH = fileURLToPath(new URL('../../.wangchuan/config.example.json', import.meta.url));
18
18
  export const CONFIG_VERSION = 2;
19
- /** 默认配置骨架 v2 — derived from agent definitions in src/agents/ */
19
+ /** Default config skeleton v2 — derived from agent definitions in src/agents/ */
20
20
  const DEFAULT_PROFILES = buildDefaultProfiles();
21
- /** 共享层默认配置 — derived from agent definitions in src/agents/ */
21
+ /** Shared tier default config — derived from agent definitions in src/agents/ */
22
22
  const DEFAULT_SHARED = buildDefaultShared();
23
23
  export const config = {
24
24
  /** Read config, return null if not found */
@@ -45,13 +45,13 @@ export const config = {
45
45
  }
46
46
  return parsed;
47
47
  },
48
- /** 保存配置到磁盘 */
48
+ /** Save config to disk */
49
49
  save(cfg) {
50
50
  fs.mkdirSync(WANGCHUAN_DIR, { recursive: true });
51
51
  fs.writeFileSync(CONFIG_PATH, JSON.stringify(cfg, null, 2), 'utf-8');
52
52
  logger.debug(t('config.saved', { path: CONFIG_PATH }));
53
53
  },
54
- /** 探测远程仓库的默认分支 */
54
+ /** Detect the default branch of a remote repository */
55
55
  async detectDefaultBranch(repo) {
56
56
  try {
57
57
  const { execSync } = await import('child_process');
@@ -65,7 +65,7 @@ export const config = {
65
65
  return 'main';
66
66
  }
67
67
  },
68
- /** 初始化目录和配置文件,返回新建的配置对象 */
68
+ /** Initialize directory and config file, return the new config object */
69
69
  async initialize(repo) {
70
70
  fs.mkdirSync(WANGCHUAN_DIR, { recursive: true });
71
71
  const branch = await this.detectDefaultBranch(repo);
@@ -82,17 +82,17 @@ export const config = {
82
82
  this.save(cfg);
83
83
  return cfg;
84
84
  },
85
- /** 浅合并两个配置(override 优先) */
85
+ /** Shallow merge two configs (override takes priority) */
86
86
  merge(base, override) {
87
87
  return { ...base, ...override };
88
88
  },
89
- /** 默认配置(迁移时使用) */
89
+ /** Defaults (used during migration) */
90
90
  defaults: {
91
91
  profiles: DEFAULT_PROFILES,
92
92
  shared: DEFAULT_SHARED,
93
93
  version: CONFIG_VERSION,
94
94
  },
95
- /** 常用路径常量 */
95
+ /** Common path constants */
96
96
  paths: {
97
97
  dir: WANGCHUAN_DIR,
98
98
  config: CONFIG_PATH,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,24 @@
1
1
  /**
2
- * crypto.ts — AES-256-GCM 加解密模块
2
+ * crypto.ts — AES-256-GCM encryption/decryption module
3
3
  *
4
- * 密钥文件格式:32 字节随机数据,以十六进制字符串存储(64 chars
5
- * 密文文件格式:IV(12B) | AuthTag(16B) | CipherText → Base64 写入 .enc 文件
4
+ * Key file format: 32 bytes of random data, stored as hex string (64 chars)
5
+ * Ciphertext format: IV(12B) | AuthTag(16B) | CipherText → Base64 written to .enc file
6
6
  */
7
7
  export declare const cryptoEngine: {
8
8
  /**
9
- * 生成新主密钥并写入文件(mode 0o600
10
- * 返回原始 32 字节 Buffer,供测试断言使用
9
+ * Generate a new master key and write to file (mode 0o600).
10
+ * Returns the raw 32-byte Buffer for test assertions.
11
11
  */
12
12
  readonly generateKey: (keyPath: string) => Buffer;
13
- /** 密钥文件是否存在 */
13
+ /** Check if key file exists */
14
14
  readonly hasKey: (keyPath: string) => boolean;
15
- /** 加密源文件,密文写入 destPath(通常以 .enc 结尾) */
15
+ /** Encrypt source file, write ciphertext to destPath (typically ending in .enc) */
16
16
  readonly encryptFile: (srcPath: string, destPath: string, keyPath: string) => void;
17
- /** 解密 .enc 文件,明文写入 destPath */
17
+ /** Decrypt .enc file, write plaintext to destPath */
18
18
  readonly decryptFile: (srcPath: string, destPath: string, keyPath: string) => void;
19
- /** 加密任意字符串,返回 Base64 密文 */
19
+ /** Encrypt an arbitrary string, return Base64 ciphertext */
20
20
  readonly encryptString: (plaintext: string, keyPath: string) => string;
21
- /** 解密 Base64 密文,返回原始字符串 */
21
+ /** Decrypt Base64 ciphertext, return original string */
22
22
  readonly decryptString: (b64: string, keyPath: string) => string;
23
23
  };
24
24
  //# sourceMappingURL=crypto.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/core/crypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH,eAAO,MAAM,YAAY;IACvB;;;OAGG;oCACkB,MAAM,KAAG,MAAM;IAQpC,eAAe;+BACC,MAAM,KAAG,OAAO;IAIhC,uCAAuC;oCAClB,MAAM,YAAY,MAAM,WAAW,MAAM,KAAG,IAAI;IASrE,+BAA+B;oCACV,MAAM,YAAY,MAAM,WAAW,MAAM,KAAG,IAAI;IASrE,2BAA2B;wCACF,MAAM,WAAW,MAAM,KAAG,MAAM;IAKzD,2BAA2B;kCACR,MAAM,WAAW,MAAM,KAAG,MAAM;CAI3C,CAAC"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/core/crypto.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6CH,eAAO,MAAM,YAAY;IACvB;;;OAGG;oCACkB,MAAM,KAAG,MAAM;IAQpC,+BAA+B;+BACf,MAAM,KAAG,OAAO;IAIhC,mFAAmF;oCAC9D,MAAM,YAAY,MAAM,WAAW,MAAM,KAAG,IAAI;IASrE,qDAAqD;oCAChC,MAAM,YAAY,MAAM,WAAW,MAAM,KAAG,IAAI;IASrE,4DAA4D;wCACnC,MAAM,WAAW,MAAM,KAAG,MAAM;IAKzD,wDAAwD;kCACrC,MAAM,WAAW,MAAM,KAAG,MAAM;CAI3C,CAAC"}