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.
- package/README.md +146 -174
- package/README.zh-CN.md +254 -0
- package/dist/bin/wangchuan.d.ts +1 -1
- package/dist/bin/wangchuan.js +2 -2
- package/dist/src/agents/codex.d.ts +9 -0
- package/dist/src/agents/codex.d.ts.map +1 -0
- package/dist/src/agents/codex.js +20 -0
- package/dist/src/agents/codex.js.map +1 -0
- package/dist/src/agents/index.d.ts.map +1 -1
- package/dist/src/agents/index.js +2 -0
- package/dist/src/agents/index.js.map +1 -1
- package/dist/src/commands/completions.js +2 -2
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/list.d.ts.map +1 -1
- package/dist/src/commands/list.js +1 -0
- package/dist/src/commands/list.js.map +1 -1
- package/dist/src/commands/template.js +1 -1
- package/dist/src/commands/template.js.map +1 -1
- package/dist/src/core/config.d.ts +9 -9
- package/dist/src/core/config.d.ts.map +1 -1
- package/dist/src/core/config.js +11 -11
- package/dist/src/core/config.js.map +1 -1
- package/dist/src/core/crypto.d.ts +10 -10
- package/dist/src/core/crypto.d.ts.map +1 -1
- package/dist/src/core/crypto.js +19 -19
- package/dist/src/core/crypto.js.map +1 -1
- package/dist/src/core/git.d.ts +2 -2
- package/dist/src/core/git.js +9 -9
- package/dist/src/core/git.js.map +1 -1
- package/dist/src/core/json-field.d.ts +5 -5
- package/dist/src/core/json-field.d.ts.map +1 -1
- package/dist/src/core/json-field.js +5 -5
- package/dist/src/core/json-field.js.map +1 -1
- package/dist/src/core/sync.d.ts +9 -9
- package/dist/src/core/sync.js +47 -47
- package/dist/src/core/sync.js.map +1 -1
- package/dist/src/i18n.js +2 -2
- package/dist/src/i18n.js.map +1 -1
- package/dist/src/types.d.ts +24 -23
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +3 -3
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/linediff.d.ts +6 -5
- package/dist/src/utils/linediff.d.ts.map +1 -1
- package/dist/src/utils/linediff.js +10 -9
- package/dist/src/utils/linediff.js.map +1 -1
- package/dist/test/crypto.test.d.ts +1 -1
- package/dist/test/crypto.test.js +16 -16
- package/dist/test/crypto.test.js.map +1 -1
- package/dist/test/json-field.test.d.ts +1 -1
- package/dist/test/json-field.test.js +13 -13
- package/dist/test/json-field.test.js.map +1 -1
- package/dist/test/sync.test.d.ts +8 -8
- package/dist/test/sync.test.js +122 -113
- package/dist/test/sync.test.js.map +1 -1
- package/package.json +1 -1
package/README.zh-CN.md
ADDED
|
@@ -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
|
+
[](https://www.npmjs.com/package/wangchuan)
|
|
11
|
+
[](https://nodejs.org)
|
|
12
|
+
[](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
|
package/dist/bin/wangchuan.d.ts
CHANGED
|
@@ -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
|
package/dist/bin/wangchuan.js
CHANGED
|
@@ -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.
|
|
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;
|
|
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"}
|
package/dist/src/agents/index.js
CHANGED
|
@@ -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;
|
|
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,
|
|
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;
|
|
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"}
|
|
@@ -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":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAc,mBAAmB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAW,uBAAuB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAc,oBAAoB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAmB,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAS,aAAa,CAAC;AAE7C,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,MAAM,SAAS,GAAwB;IACrC;QACE,IAAI,EAAK,SAAS;QAClB,OAAO,EAAE,uBAAuB;QAChC,MAAM,EAAG,CAAC,QAAQ,CAAC;KACpB;IACD;QACE,IAAI,EAAK,MAAM;QACf,OAAO,EAAE,oBAAoB;QAC7B,MAAM,EAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;
|
|
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
|
-
*
|
|
5
|
-
*
|
|
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
|
-
/**
|
|
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,
|
|
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"}
|
package/dist/src/core/config.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* config.ts —
|
|
2
|
+
* config.ts — Global configuration management
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
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
|
-
/**
|
|
19
|
+
/** Default config skeleton v2 — derived from agent definitions in src/agents/ */
|
|
20
20
|
const DEFAULT_PROFILES = buildDefaultProfiles();
|
|
21
|
-
/**
|
|
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
|
-
/**
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAQ,IAAI,CAAC;AACtB,OAAO,EAAE,MAAQ,IAAI,CAAC;AACtB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAW,YAAY,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG9E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAC5D,MAAM,WAAW,GAAK,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAC9D,MAAM,QAAQ,GAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAC7D,MAAM,YAAY,GAAI,aAAa,CAAC,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEtG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,
|
|
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
|
-
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
10
|
-
*
|
|
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
|
-
/**
|
|
15
|
+
/** Encrypt source file, write ciphertext to destPath (typically ending in .enc) */
|
|
16
16
|
readonly encryptFile: (srcPath: string, destPath: string, keyPath: string) => void;
|
|
17
|
-
/**
|
|
17
|
+
/** Decrypt .enc file, write plaintext to destPath */
|
|
18
18
|
readonly decryptFile: (srcPath: string, destPath: string, keyPath: string) => void;
|
|
19
|
-
/**
|
|
19
|
+
/** Encrypt an arbitrary string, return Base64 ciphertext */
|
|
20
20
|
readonly encryptString: (plaintext: string, keyPath: string) => string;
|
|
21
|
-
/**
|
|
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
|
|
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"}
|