hop-claude 2.0.1 → 2.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/CHANGELOG.md +43 -0
- package/README.md +124 -112
- package/dist/config/config-manager.d.ts +5 -19
- package/dist/config/config-manager.d.ts.map +1 -1
- package/dist/config/config-manager.js +20 -46
- package/dist/config/config-manager.js.map +1 -1
- package/dist/ui/prompts.d.ts +0 -5
- package/dist/ui/prompts.d.ts.map +1 -1
- package/dist/ui/prompts.js +4 -71
- package/dist/ui/prompts.js.map +1 -1
- package/dist/utils/migration.d.ts.map +1 -1
- package/dist/utils/migration.js +6 -74
- package/dist/utils/migration.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 90e020c: 移除密码加密模式的所有密码输入提示
|
|
8
|
+
|
|
9
|
+
**改进**:
|
|
10
|
+
|
|
11
|
+
- 密码加密模式现在使用固定的内置密码,无需用户输入
|
|
12
|
+
- 移除所有密码相关的交互提示
|
|
13
|
+
- 创建配置时不再需要输入密码
|
|
14
|
+
- 启动时不再需要输入密码
|
|
15
|
+
- 加密模式迁移时不再需要输入密码
|
|
16
|
+
|
|
17
|
+
**技术细节**:
|
|
18
|
+
|
|
19
|
+
- 添加 `DEFAULT_PASSPHRASE` 常量作为固定密码
|
|
20
|
+
- 从 ConfigManager 移除 `sessionPassphrase` 和相关方法
|
|
21
|
+
- 从 UI 移除 `getPassphraseIfNeeded()` 方法
|
|
22
|
+
- 更新迁移工具,移除所有密码输入逻辑
|
|
23
|
+
|
|
24
|
+
**用户体验**:
|
|
25
|
+
|
|
26
|
+
- 密码加密模式完全透明,使用体验与 Keychain 模式一致
|
|
27
|
+
- 配置仍然是加密的,只是不需要用户记住密码
|
|
28
|
+
- 保持完全可移植性,可跨机器导入/导出
|
|
29
|
+
|
|
30
|
+
## 2.0.2
|
|
31
|
+
|
|
32
|
+
### Patch Changes
|
|
33
|
+
|
|
34
|
+
- 5218ed7: 修复删除配置后不应启动 Claude 的问题
|
|
35
|
+
|
|
36
|
+
**修正**:
|
|
37
|
+
|
|
38
|
+
- 删除配置后直接退出,不再启动 Claude Code
|
|
39
|
+
- 与导入/导出操作保持一致的行为
|
|
40
|
+
|
|
41
|
+
**改进**:
|
|
42
|
+
|
|
43
|
+
- 更符合用户预期的操作流程
|
|
44
|
+
- 删除是破坏性操作,完成后应退出而非启动
|
|
45
|
+
|
|
3
46
|
## 2.0.1
|
|
4
47
|
|
|
5
48
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -2,27 +2,33 @@
|
|
|
2
2
|
|
|
3
3
|
Claude Code 配置管理工具 - 轻松管理多个 Claude Code 中转站配置
|
|
4
4
|
|
|
5
|
-
## ⚠️ 重要更新
|
|
5
|
+
## ⚠️ 重要更新 v2.0.0
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**重大更新**(2025-01-03):
|
|
8
8
|
|
|
9
|
-
🔒
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
9
|
+
🔒 **移除 Legacy 加密模式**:
|
|
10
|
+
- 完全移除不安全的 Legacy 加密模式
|
|
11
|
+
- 现在只支持 Keychain 和密码加密两种模式
|
|
12
|
+
- 新安装自动选择最佳加密模式
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
14
|
+
⚠️ **破坏性变更**:
|
|
15
|
+
- `-c/--config` 参数更改为 `-m/--manage`
|
|
16
|
+
- `-c` 现在可以透传给 Claude CLI(用于继续上次对话)
|
|
17
|
+
- 支持 `--` 分隔符来明确区分参数
|
|
18
|
+
|
|
19
|
+
✨ **新功能和改进**:
|
|
20
|
+
- 支持空密码快速启动(密码加密模式)
|
|
21
|
+
- 自动密码提示,更友好的交互体验
|
|
22
|
+
- 导入/导出操作后不再自动启动 Claude
|
|
23
|
+
- `-s` 不提供配置名时显示交互式选择列表
|
|
18
24
|
|
|
19
25
|
📖 **建议操作**:
|
|
20
26
|
```bash
|
|
21
27
|
# 查看当前加密模式
|
|
22
28
|
hop-claude --encryption-info
|
|
23
29
|
|
|
24
|
-
#
|
|
25
|
-
hop-claude
|
|
30
|
+
# 首次使用会自动引导配置
|
|
31
|
+
hop-claude
|
|
26
32
|
```
|
|
27
33
|
|
|
28
34
|
详情查看 [SECURITY.md](./SECURITY.md)
|
|
@@ -31,7 +37,7 @@ hop-claude --migrate-encryption
|
|
|
31
37
|
|
|
32
38
|
## 特性
|
|
33
39
|
|
|
34
|
-
- 🔐
|
|
40
|
+
- 🔐 **双模式加密存储** - Keychain(OS 管理)和密码加密(可移植)两种模式
|
|
35
41
|
- 🔒 **OS Keychain 集成** - macOS Keychain、Windows Credential Manager、Linux libsecret 硬件级安全
|
|
36
42
|
- 🔄 **多配置管理** - 支持多个配置 profile,按 domain 区分
|
|
37
43
|
- 🎯 **交互式界面** - 友好的命令行交互体验
|
|
@@ -41,7 +47,7 @@ hop-claude --migrate-encryption
|
|
|
41
47
|
- ✅ **API Key 验证** - 可选的 API Key 有效性验证
|
|
42
48
|
- 🚀 **自动启动 Claude** - 应用配置后自动启动 Claude CLI
|
|
43
49
|
- 🛡️ **安全防护** - 防命令注入、并发写保护、权限控制
|
|
44
|
-
- 🔄
|
|
50
|
+
- 🔄 **参数透传** - 支持 `-c` 和 `--` 分隔符透传参数给 Claude
|
|
45
51
|
|
|
46
52
|
## 安装
|
|
47
53
|
|
|
@@ -65,7 +71,7 @@ npx hop-claude --help
|
|
|
65
71
|
npx hop-claude --list
|
|
66
72
|
|
|
67
73
|
# 配置管理
|
|
68
|
-
npx hop-claude --
|
|
74
|
+
npx hop-claude --manage
|
|
69
75
|
|
|
70
76
|
# 快速切换并启动
|
|
71
77
|
npx hop-claude -s production
|
|
@@ -108,11 +114,16 @@ hop-claude
|
|
|
108
114
|
按照提示创建你的第一个配置:
|
|
109
115
|
|
|
110
116
|
1. 输入 Domain/Profile 名称(如:production, dev)
|
|
111
|
-
2. 输入 API Key
|
|
112
|
-
3. 输入 Base URL
|
|
117
|
+
2. 输入 API Key(对应环境变量 ANTHROPIC_AUTH_TOKEN)
|
|
118
|
+
3. 输入 Base URL(可选,用于中转站,对应 ANTHROPIC_BASE_URL)
|
|
113
119
|
4. 输入 Proxy(可选)
|
|
114
120
|
5. 选择是否禁用非必要流量
|
|
115
121
|
|
|
122
|
+
**密码加密模式用户**:
|
|
123
|
+
- 创建配置时可以直接回车使用空密码(快速启动)
|
|
124
|
+
- 也可以设置密码保护(推荐 ≥8 字符)
|
|
125
|
+
- 启动时自动尝试空密码,失败才提示输入
|
|
126
|
+
|
|
116
127
|
### 使用现有配置启动 Claude
|
|
117
128
|
|
|
118
129
|
配置完成后,再次运行 `hop-claude` 将直接启动 Claude:
|
|
@@ -123,14 +134,26 @@ hop-claude
|
|
|
123
134
|
|
|
124
135
|
### 透传参数给 Claude
|
|
125
136
|
|
|
126
|
-
|
|
137
|
+
支持两种方式透传参数:
|
|
138
|
+
|
|
139
|
+
#### 方式 1:直接透传(推荐)
|
|
127
140
|
|
|
128
141
|
```bash
|
|
129
|
-
#
|
|
142
|
+
# -c 现在可以直接透传给 Claude(继续上次对话)
|
|
143
|
+
hop-claude -c
|
|
144
|
+
|
|
145
|
+
# 透传其他参数
|
|
130
146
|
hop-claude -r "Explain this code"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### 方式 2:使用 -- 分隔符(更明确)
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# 使用 -- 明确分隔 hop-claude 参数和 Claude 参数
|
|
153
|
+
hop-claude -- -c
|
|
131
154
|
|
|
132
|
-
#
|
|
133
|
-
hop-claude -s production -
|
|
155
|
+
# 切换配置后透传参数
|
|
156
|
+
hop-claude -s production -- -c --verbose
|
|
134
157
|
```
|
|
135
158
|
|
|
136
159
|
## 命令参考
|
|
@@ -146,9 +169,12 @@ hop-claude --version # 显示版本号
|
|
|
146
169
|
### 配置管理
|
|
147
170
|
|
|
148
171
|
```bash
|
|
149
|
-
hop-claude
|
|
150
|
-
hop-claude --
|
|
172
|
+
hop-claude -m # 进入配置管理界面(原 -c)
|
|
173
|
+
hop-claude --manage # 同上(长选项)
|
|
174
|
+
hop-claude -l # 列出所有配置
|
|
175
|
+
hop-claude --list # 同上(长选项)
|
|
151
176
|
hop-claude -s <profile> # 快速切换到指定配置
|
|
177
|
+
hop-claude -s # 不提供名称时显示交互式选择列表
|
|
152
178
|
```
|
|
153
179
|
|
|
154
180
|
### 配置导入/导出
|
|
@@ -158,6 +184,8 @@ hop-claude -e backup.json # 导出配置到文件
|
|
|
158
184
|
hop-claude -i backup.json # 从文件导入配置
|
|
159
185
|
```
|
|
160
186
|
|
|
187
|
+
**注意**:导入/导出操作完成后会直接退出,不再启动 Claude。
|
|
188
|
+
|
|
161
189
|
### 加密模式管理
|
|
162
190
|
|
|
163
191
|
```bash
|
|
@@ -171,27 +199,26 @@ hop-claude --migrate-encryption # 迁移到不同的加密模式
|
|
|
171
199
|
- macOS: Keychain Access
|
|
172
200
|
- Windows: Credential Manager
|
|
173
201
|
- Linux: libsecret
|
|
202
|
+
- 无需记住密码
|
|
203
|
+
- **限制**:不可跨机器迁移
|
|
174
204
|
|
|
175
|
-
-
|
|
205
|
+
- **密码加密模式**:使用密码加密,支持跨机器迁移
|
|
176
206
|
- AES-256-GCM 加密
|
|
177
207
|
- PBKDF2 密钥派生(100,000 次迭代)
|
|
178
|
-
-
|
|
179
|
-
|
|
180
|
-
- **Legacy 模式**(已弃用):基于机器信息的加密,向后兼容 v0.0.x
|
|
181
|
-
- 不推荐新用户使用
|
|
182
|
-
- 建议迁移到 Keychain 或 Passphrase 模式
|
|
208
|
+
- 支持空密码快速启动
|
|
209
|
+
- 完全可移植跨机器
|
|
183
210
|
|
|
184
211
|
## 配置项说明
|
|
185
212
|
|
|
186
213
|
每个配置 profile 包含以下信息:
|
|
187
214
|
|
|
188
|
-
| 配置项 | 说明 | 必填 |
|
|
189
|
-
|
|
190
|
-
| Domain | 配置名称/标识 | ✅ |
|
|
191
|
-
| API Key | Anthropic API 密钥 | ✅ |
|
|
192
|
-
| Base URL | 自定义 API 地址(中转站) | ❌ |
|
|
193
|
-
| Proxy | HTTP/HTTPS 代理 | ❌ |
|
|
194
|
-
| Disable Nonessential Traffic | 是否禁用非必要流量 | ❌ |
|
|
215
|
+
| 配置项 | 说明 | 对应环境变量 | 必填 |
|
|
216
|
+
|--------|------|-------------|------|
|
|
217
|
+
| Domain | 配置名称/标识 | - | ✅ |
|
|
218
|
+
| API Key | Anthropic API 密钥 | ANTHROPIC_AUTH_TOKEN | ✅ |
|
|
219
|
+
| Base URL | 自定义 API 地址(中转站) | ANTHROPIC_BASE_URL | ❌ |
|
|
220
|
+
| Proxy | HTTP/HTTPS 代理 | HTTP_PROXY / HTTPS_PROXY | ❌ |
|
|
221
|
+
| Disable Nonessential Traffic | 是否禁用非必要流量 | CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | ❌ |
|
|
195
222
|
|
|
196
223
|
## 使用场景
|
|
197
224
|
|
|
@@ -199,14 +226,14 @@ hop-claude --migrate-encryption # 迁移到不同的加密模式
|
|
|
199
226
|
|
|
200
227
|
```bash
|
|
201
228
|
# 创建生产环境配置
|
|
202
|
-
hop-claude
|
|
229
|
+
hop-claude -m
|
|
203
230
|
> Create new configuration
|
|
204
231
|
> Domain: production
|
|
205
232
|
> API Key: sk-ant-***
|
|
206
233
|
> Base URL: https://api.example.com
|
|
207
234
|
|
|
208
235
|
# 创建开发环境配置
|
|
209
|
-
hop-claude
|
|
236
|
+
hop-claude -m
|
|
210
237
|
> Create new configuration
|
|
211
238
|
> Domain: development
|
|
212
239
|
> API Key: sk-ant-***
|
|
@@ -215,6 +242,9 @@ hop-claude --config
|
|
|
215
242
|
# 快速切换
|
|
216
243
|
hop-claude -s production # 切换到生产环境
|
|
217
244
|
hop-claude -s development # 切换到开发环境
|
|
245
|
+
|
|
246
|
+
# 不记得配置名?显示选择列表
|
|
247
|
+
hop-claude -s
|
|
218
248
|
```
|
|
219
249
|
|
|
220
250
|
### 场景 2:备份和恢复配置
|
|
@@ -227,15 +257,18 @@ hop-claude -e my-backup.json
|
|
|
227
257
|
hop-claude -i my-backup.json
|
|
228
258
|
```
|
|
229
259
|
|
|
230
|
-
### 场景 3
|
|
231
|
-
|
|
232
|
-
创建配置时,可以选择验证 API Key 是否有效:
|
|
260
|
+
### 场景 3:继续上次对话
|
|
233
261
|
|
|
234
262
|
```bash
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
263
|
+
# 方式 1:直接透传 -c
|
|
264
|
+
hop-claude -c
|
|
265
|
+
|
|
266
|
+
# 方式 2:使用 -- 分隔符(更明确)
|
|
267
|
+
hop-claude -- -c
|
|
268
|
+
|
|
269
|
+
# 切换配置后继续对话
|
|
270
|
+
hop-claude -s production -c
|
|
271
|
+
hop-claude -s production -- -c
|
|
239
272
|
```
|
|
240
273
|
|
|
241
274
|
## 安全说明
|
|
@@ -244,7 +277,7 @@ hop-claude 提供多层安全保护,确保您的 API Key 安全。详细安全
|
|
|
244
277
|
|
|
245
278
|
### 加密模式
|
|
246
279
|
|
|
247
|
-
hop-claude
|
|
280
|
+
hop-claude 支持两种加密模式:
|
|
248
281
|
|
|
249
282
|
#### 1. Keychain 模式(推荐)⭐
|
|
250
283
|
|
|
@@ -256,24 +289,16 @@ hop-claude 支持三种加密模式,安全性从高到低:
|
|
|
256
289
|
- 无需记住密码
|
|
257
290
|
- **限制**:不可跨机器迁移
|
|
258
291
|
|
|
259
|
-
#### 2.
|
|
292
|
+
#### 2. 密码加密模式
|
|
260
293
|
|
|
261
294
|
**安全级别:MEDIUM to HIGH**(取决于密码强度)
|
|
262
295
|
|
|
263
296
|
- 使用 AES-256-GCM 加密
|
|
264
297
|
- PBKDF2 密钥派生(100,000 次迭代)
|
|
265
298
|
- 完全可移植跨机器
|
|
299
|
+
- 支持空密码快速启动
|
|
266
300
|
- **限制**:需要记住密码,密码强度很重要
|
|
267
301
|
|
|
268
|
-
#### 3. Legacy 模式(已弃用)
|
|
269
|
-
|
|
270
|
-
**安全级别:LOW**
|
|
271
|
-
|
|
272
|
-
- 基于机器信息(hostname + username)的加密
|
|
273
|
-
- 仅提供混淆,非真正安全
|
|
274
|
-
- 向后兼容 v0.0.x
|
|
275
|
-
- **限制**:已弃用,建议迁移
|
|
276
|
-
|
|
277
302
|
### 安全防护
|
|
278
303
|
|
|
279
304
|
✅ **防止意外泄露**
|
|
@@ -287,8 +312,8 @@ hop-claude 支持三种加密模式,安全性从高到低:
|
|
|
287
312
|
- 加密存储防止随意浏览
|
|
288
313
|
|
|
289
314
|
✅ **防命令注入**
|
|
290
|
-
- 已修复 v0.0.x 中的命令注入漏洞
|
|
291
315
|
- 安全的子进程调用(无 shell 解释)
|
|
316
|
+
- 所有参数正确转义
|
|
292
317
|
|
|
293
318
|
✅ **并发写保护**
|
|
294
319
|
- 文件锁防止数据损坏
|
|
@@ -308,32 +333,15 @@ hop-claude 支持三种加密模式,安全性从高到低:
|
|
|
308
333
|
2. ✅ 使用强机器登录密码
|
|
309
334
|
3. ✅ 离开时锁屏(建议自动锁定)
|
|
310
335
|
|
|
311
|
-
|
|
312
|
-
1. ✅
|
|
313
|
-
2. ✅
|
|
314
|
-
3. ✅
|
|
336
|
+
**密码加密模式用户**:
|
|
337
|
+
1. ✅ 如需安全,使用强密码(≥8 字符,混合大小写、符号)
|
|
338
|
+
2. ✅ 如需便利,可使用空密码(直接回车)
|
|
339
|
+
3. ✅ 考虑使用密码管理器
|
|
340
|
+
4. ✅ 不要将加密配置提交到公开仓库
|
|
315
341
|
|
|
316
342
|
**所有用户**:
|
|
317
343
|
1. ✅ 运行 `hop-claude --encryption-info` 验证当前模式
|
|
318
|
-
2. ✅
|
|
319
|
-
3. ✅ 定期轮换 API Key(建议每 90 天)
|
|
320
|
-
|
|
321
|
-
### 迁移指南
|
|
322
|
-
|
|
323
|
-
从 v0.0.x 迁移到 v0.1.0+:
|
|
324
|
-
|
|
325
|
-
```bash
|
|
326
|
-
# 1. 备份配置
|
|
327
|
-
hop-claude -e backup-before-migration.json
|
|
328
|
-
|
|
329
|
-
# 2. 运行迁移
|
|
330
|
-
hop-claude --migrate-encryption
|
|
331
|
-
|
|
332
|
-
# 3. 选择 Keychain(最安全)或 Passphrase(可移植)
|
|
333
|
-
|
|
334
|
-
# 4. 验证迁移
|
|
335
|
-
hop-claude --encryption-info
|
|
336
|
-
```
|
|
344
|
+
2. ✅ 定期轮换 API Key(建议每 90 天)
|
|
337
345
|
|
|
338
346
|
### 测试覆盖
|
|
339
347
|
|
|
@@ -400,7 +408,7 @@ rmdir /s %APPDATA%\hop-claude-config
|
|
|
400
408
|
|
|
401
409
|
### 加密模式问题
|
|
402
410
|
|
|
403
|
-
|
|
411
|
+
**忘记密码**:
|
|
404
412
|
- 无法恢复,需要重新配置 API Key
|
|
405
413
|
- 如有备份文件,可以尝试导入
|
|
406
414
|
|
|
@@ -409,17 +417,17 @@ rmdir /s %APPDATA%\hop-claude-config
|
|
|
409
417
|
# 检查 keychain 状态
|
|
410
418
|
hop-claude --encryption-info
|
|
411
419
|
|
|
412
|
-
#
|
|
420
|
+
# 如不可用,迁移到密码加密模式
|
|
413
421
|
hop-claude --migrate-encryption
|
|
414
422
|
```
|
|
415
423
|
|
|
416
|
-
|
|
424
|
+
**空密码解密失败**:
|
|
417
425
|
```bash
|
|
418
|
-
#
|
|
419
|
-
hop-claude
|
|
426
|
+
# 启动时会自动提示输入密码
|
|
427
|
+
hop-claude
|
|
420
428
|
|
|
421
|
-
#
|
|
422
|
-
|
|
429
|
+
# 如果一直提示输入密码,说明你设置了非空密码
|
|
430
|
+
# 需要输入正确密码
|
|
423
431
|
```
|
|
424
432
|
|
|
425
433
|
**迁移失败恢复**:
|
|
@@ -485,7 +493,7 @@ bun test --coverage
|
|
|
485
493
|
测试覆盖:
|
|
486
494
|
- ✅ 安全性测试(防命令注入、加密算法、文件权限)
|
|
487
495
|
- ✅ 并发访问测试(文件锁、竞争条件)
|
|
488
|
-
- ✅ 加密迁移测试(
|
|
496
|
+
- ✅ 加密迁移测试(Keychain ↔ Passphrase)
|
|
489
497
|
- ✅ 边缘情况测试(特殊字符、空配置、错误密码)
|
|
490
498
|
|
|
491
499
|
### 项目结构
|
|
@@ -496,14 +504,13 @@ hop-claude/
|
|
|
496
504
|
│ ├── cli.ts # CLI 命令定义
|
|
497
505
|
│ ├── index.ts # 主入口
|
|
498
506
|
│ ├── config/
|
|
499
|
-
│ │ ├── config-manager.ts #
|
|
500
|
-
│ │ ├── encryption.ts
|
|
501
|
-
│ │ ├── encryption-v2.ts # Passphrase 加密/解密
|
|
507
|
+
│ │ ├── config-manager.ts # 配置管理核心(双模式加密支持)
|
|
508
|
+
│ │ ├── encryption-v2.ts # 密码加密/解密(AES-256-GCM)
|
|
502
509
|
│ │ ├── keychain.ts # OS Keychain 集成
|
|
503
510
|
│ │ ├── storage.ts # 文件存储(含文件锁)
|
|
504
511
|
│ │ └── validator.ts # API Key 验证
|
|
505
512
|
│ ├── ui/
|
|
506
|
-
│ │ ├── prompts.ts #
|
|
513
|
+
│ │ ├── prompts.ts # 交互式界面(含自动密码提示)
|
|
507
514
|
│ │ └── display.ts # 显示工具
|
|
508
515
|
│ ├── utils/
|
|
509
516
|
│ │ ├── claude-launcher.ts # Claude 启动器(安全子进程调用)
|
|
@@ -523,36 +530,41 @@ hop-claude/
|
|
|
523
530
|
|
|
524
531
|
## 版本历史
|
|
525
532
|
|
|
526
|
-
###
|
|
533
|
+
### v2.0.0(2025-01-03)
|
|
527
534
|
|
|
528
|
-
|
|
529
|
-
- ✅
|
|
530
|
-
- ✅
|
|
531
|
-
- ✅ 新增文件锁防止并发写入数据损坏
|
|
532
|
-
- ✅ 改进 Windows 二进制检测(支持 claude.cmd、claude.exe)
|
|
533
|
-
- ✅ 增强 Windows ACL 错误处理
|
|
535
|
+
**破坏性变更**:
|
|
536
|
+
- ✅ 移除 Legacy 加密模式(不安全的机器绑定加密)
|
|
537
|
+
- ✅ `-c/--config` 更改为 `-m/--manage`(避免与 Claude CLI 的 `-c` 冲突)
|
|
534
538
|
|
|
535
539
|
**新功能**:
|
|
536
|
-
- ✅
|
|
537
|
-
- ✅
|
|
538
|
-
- ✅
|
|
539
|
-
- ✅
|
|
540
|
-
- ✅
|
|
540
|
+
- ✅ `-c` 现在可以透传给 Claude CLI(继续上次对话)
|
|
541
|
+
- ✅ 支持 `--` 分隔符明确区分参数
|
|
542
|
+
- ✅ `-s` 不提供配置名时显示交互式选择列表
|
|
543
|
+
- ✅ 自动密码提示(密码加密模式)
|
|
544
|
+
- ✅ 支持空密码快速启动
|
|
545
|
+
- ✅ 导入/导出后不再自动启动 Claude
|
|
546
|
+
|
|
547
|
+
**改进**:
|
|
548
|
+
- ✅ 更友好的密码输入体验(先尝试空密码)
|
|
549
|
+
- ✅ 简化加密模式选择(只有两种模式)
|
|
550
|
+
- ✅ 更清晰的用户界面和错误提示
|
|
541
551
|
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
552
|
+
### v0.1.0(2025-01-03)
|
|
553
|
+
|
|
554
|
+
**安全更新**:
|
|
555
|
+
- ✅ 修复命令注入漏洞(CRITICAL)
|
|
556
|
+
- ✅ 新增文件锁防止并发写入
|
|
557
|
+
- ✅ 改进 Windows 二进制检测
|
|
545
558
|
|
|
546
|
-
|
|
547
|
-
- ✅
|
|
548
|
-
- ✅
|
|
549
|
-
- ✅
|
|
559
|
+
**新功能**:
|
|
560
|
+
- ✅ Keychain 加密模式
|
|
561
|
+
- ✅ Passphrase 加密模式
|
|
562
|
+
- ✅ 加密模式迁移工具
|
|
550
563
|
|
|
551
564
|
### v0.0.x
|
|
552
565
|
|
|
553
566
|
- 初始版本
|
|
554
567
|
- 基本配置管理功能
|
|
555
|
-
- Legacy 加密模式(已弃用)
|
|
556
568
|
|
|
557
569
|
## 许可证
|
|
558
570
|
|
|
@@ -9,16 +9,7 @@ export declare class ConfigManager {
|
|
|
9
9
|
private storage;
|
|
10
10
|
private passphraseEncryption;
|
|
11
11
|
private keychainManager;
|
|
12
|
-
private sessionPassphrase?;
|
|
13
12
|
constructor();
|
|
14
|
-
/**
|
|
15
|
-
* 设置会话密码(用于 passphrase 模式)
|
|
16
|
-
*/
|
|
17
|
-
setSessionPassphrase(passphrase: string): void;
|
|
18
|
-
/**
|
|
19
|
-
* 清除会话密码
|
|
20
|
-
*/
|
|
21
|
-
clearSessionPassphrase(): void;
|
|
22
13
|
/**
|
|
23
14
|
* 获取当前加密模式
|
|
24
15
|
*/
|
|
@@ -34,29 +25,25 @@ export declare class ConfigManager {
|
|
|
34
25
|
/**
|
|
35
26
|
* 添加或更新 profile
|
|
36
27
|
* @param profile 解密后的 profile
|
|
37
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
38
28
|
*/
|
|
39
|
-
saveProfile(profile: DecryptedProfile
|
|
29
|
+
saveProfile(profile: DecryptedProfile): Promise<void>;
|
|
40
30
|
/**
|
|
41
31
|
* 获取解密后的 profile
|
|
42
32
|
* @param domain profile 名称
|
|
43
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
44
33
|
*/
|
|
45
|
-
getProfile(domain: string
|
|
34
|
+
getProfile(domain: string): Promise<DecryptedProfile | null>;
|
|
46
35
|
/**
|
|
47
36
|
* 设置当前激活的 profile
|
|
48
37
|
*/
|
|
49
38
|
setCurrentProfile(domain: string): Promise<void>;
|
|
50
39
|
/**
|
|
51
40
|
* 获取当前激活的 profile
|
|
52
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
53
41
|
*/
|
|
54
|
-
getCurrentProfile(
|
|
42
|
+
getCurrentProfile(): Promise<DecryptedProfile | null>;
|
|
55
43
|
/**
|
|
56
44
|
* 列出所有 profiles(API Key 部分隐藏)
|
|
57
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
58
45
|
*/
|
|
59
|
-
listProfiles(
|
|
46
|
+
listProfiles(): Promise<Array<ProfileConfig & {
|
|
60
47
|
maskedApiKey: string;
|
|
61
48
|
}>>;
|
|
62
49
|
/**
|
|
@@ -75,9 +62,8 @@ export declare class ConfigManager {
|
|
|
75
62
|
/**
|
|
76
63
|
* 切换加密模式(需要提供所有必要的凭据)
|
|
77
64
|
* @param newMode 新的加密模式
|
|
78
|
-
* @param passphrase 密码(切换到 passphrase 模式时需要)
|
|
79
65
|
*/
|
|
80
|
-
switchEncryptionMode(newMode: EncryptionMode
|
|
66
|
+
switchEncryptionMode(newMode: EncryptionMode): Promise<void>;
|
|
81
67
|
/**
|
|
82
68
|
* 获取配置文件路径
|
|
83
69
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAQtG;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAkB;;IAQzC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAUlD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IA2BxC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAavC;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C3D;;;OAGG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAmClE;;OAEG;IACG,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAM3D;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA0C9E;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlD;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAWrC;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/C;;;OAGG;IACG,oBAAoB,CACxB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { ConfigStorage } from './storage.js';
|
|
2
2
|
import { PassphraseEncryption } from './encryption-v2.js';
|
|
3
3
|
import { KeychainManager } from './keychain.js';
|
|
4
|
+
/**
|
|
5
|
+
* 内置默认密码(用于密码加密模式)
|
|
6
|
+
* 用户无需记住,系统自动使用
|
|
7
|
+
*/
|
|
8
|
+
const DEFAULT_PASSPHRASE = 'hop-claude-default-encryption-key-2025';
|
|
4
9
|
/**
|
|
5
10
|
* 配置管理核心类
|
|
6
11
|
* 支持两种加密模式:
|
|
@@ -11,25 +16,11 @@ export class ConfigManager {
|
|
|
11
16
|
storage;
|
|
12
17
|
passphraseEncryption;
|
|
13
18
|
keychainManager;
|
|
14
|
-
// 用于临时存储用户输入的 passphrase(仅在当前会话有效)
|
|
15
|
-
sessionPassphrase;
|
|
16
19
|
constructor() {
|
|
17
20
|
this.storage = new ConfigStorage();
|
|
18
21
|
this.passphraseEncryption = new PassphraseEncryption();
|
|
19
22
|
this.keychainManager = new KeychainManager();
|
|
20
23
|
}
|
|
21
|
-
/**
|
|
22
|
-
* 设置会话密码(用于 passphrase 模式)
|
|
23
|
-
*/
|
|
24
|
-
setSessionPassphrase(passphrase) {
|
|
25
|
-
this.sessionPassphrase = passphrase;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 清除会话密码
|
|
29
|
-
*/
|
|
30
|
-
clearSessionPassphrase() {
|
|
31
|
-
this.sessionPassphrase = undefined;
|
|
32
|
-
}
|
|
33
24
|
/**
|
|
34
25
|
* 获取当前加密模式
|
|
35
26
|
*/
|
|
@@ -85,9 +76,8 @@ export class ConfigManager {
|
|
|
85
76
|
/**
|
|
86
77
|
* 添加或更新 profile
|
|
87
78
|
* @param profile 解密后的 profile
|
|
88
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
89
79
|
*/
|
|
90
|
-
async saveProfile(profile
|
|
80
|
+
async saveProfile(profile) {
|
|
91
81
|
const config = await this.getConfig();
|
|
92
82
|
const mode = config.encryptionMode;
|
|
93
83
|
if (!config.encryptionSalt && mode === 'passphrase') {
|
|
@@ -102,15 +92,11 @@ export class ConfigManager {
|
|
|
102
92
|
encryptedApiKey = '__KEYCHAIN__';
|
|
103
93
|
}
|
|
104
94
|
else {
|
|
105
|
-
// Passphrase
|
|
106
|
-
const pwd = passphrase || this.sessionPassphrase;
|
|
107
|
-
if (!pwd && pwd !== '') {
|
|
108
|
-
throw new Error('需要密码来加密 API Key');
|
|
109
|
-
}
|
|
95
|
+
// Passphrase 模式:使用内置默认密码加密
|
|
110
96
|
if (!config.encryptionSalt) {
|
|
111
97
|
config.encryptionSalt = this.passphraseEncryption.generateSalt();
|
|
112
98
|
}
|
|
113
|
-
encryptedApiKey = this.passphraseEncryption.encrypt(profile.apiKey,
|
|
99
|
+
encryptedApiKey = this.passphraseEncryption.encrypt(profile.apiKey, DEFAULT_PASSPHRASE, config.encryptionSalt);
|
|
114
100
|
}
|
|
115
101
|
const encryptedProfile = {
|
|
116
102
|
...profile,
|
|
@@ -130,9 +116,8 @@ export class ConfigManager {
|
|
|
130
116
|
/**
|
|
131
117
|
* 获取解密后的 profile
|
|
132
118
|
* @param domain profile 名称
|
|
133
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
134
119
|
*/
|
|
135
|
-
async getProfile(domain
|
|
120
|
+
async getProfile(domain) {
|
|
136
121
|
const config = await this.getConfig();
|
|
137
122
|
const profile = config.profiles.find(p => p.domain === domain);
|
|
138
123
|
if (!profile)
|
|
@@ -149,15 +134,11 @@ export class ConfigManager {
|
|
|
149
134
|
decryptedApiKey = keychainKey;
|
|
150
135
|
}
|
|
151
136
|
else {
|
|
152
|
-
// Passphrase
|
|
153
|
-
const pwd = passphrase || this.sessionPassphrase;
|
|
154
|
-
if (!pwd && pwd !== '') {
|
|
155
|
-
throw new Error('需要密码来解密 API key');
|
|
156
|
-
}
|
|
137
|
+
// Passphrase 模式:使用内置默认密码解密
|
|
157
138
|
if (!config.encryptionSalt) {
|
|
158
139
|
throw new Error('未找到加密 salt');
|
|
159
140
|
}
|
|
160
|
-
decryptedApiKey = this.passphraseEncryption.decrypt(profile.apiKey,
|
|
141
|
+
decryptedApiKey = this.passphraseEncryption.decrypt(profile.apiKey, DEFAULT_PASSPHRASE, config.encryptionSalt);
|
|
161
142
|
}
|
|
162
143
|
return {
|
|
163
144
|
...profile,
|
|
@@ -174,19 +155,17 @@ export class ConfigManager {
|
|
|
174
155
|
}
|
|
175
156
|
/**
|
|
176
157
|
* 获取当前激活的 profile
|
|
177
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
178
158
|
*/
|
|
179
|
-
async getCurrentProfile(
|
|
159
|
+
async getCurrentProfile() {
|
|
180
160
|
const config = await this.getConfig();
|
|
181
161
|
if (!config.currentProfile)
|
|
182
162
|
return null;
|
|
183
|
-
return await this.getProfile(config.currentProfile
|
|
163
|
+
return await this.getProfile(config.currentProfile);
|
|
184
164
|
}
|
|
185
165
|
/**
|
|
186
166
|
* 列出所有 profiles(API Key 部分隐藏)
|
|
187
|
-
* @param passphrase 密码(仅 passphrase 模式需要)
|
|
188
167
|
*/
|
|
189
|
-
async listProfiles(
|
|
168
|
+
async listProfiles() {
|
|
190
169
|
const config = await this.getConfig();
|
|
191
170
|
const mode = config.encryptionMode;
|
|
192
171
|
const results = [];
|
|
@@ -198,16 +177,12 @@ export class ConfigManager {
|
|
|
198
177
|
decryptedKey = keychainKey || '';
|
|
199
178
|
}
|
|
200
179
|
else {
|
|
201
|
-
// Passphrase
|
|
202
|
-
|
|
203
|
-
if (!pwd && pwd !== '') {
|
|
204
|
-
decryptedKey = '';
|
|
205
|
-
}
|
|
206
|
-
else if (!config.encryptionSalt) {
|
|
180
|
+
// Passphrase 模式:使用内置默认密码解密
|
|
181
|
+
if (!config.encryptionSalt) {
|
|
207
182
|
decryptedKey = '';
|
|
208
183
|
}
|
|
209
184
|
else {
|
|
210
|
-
decryptedKey = this.passphraseEncryption.decrypt(p.apiKey,
|
|
185
|
+
decryptedKey = this.passphraseEncryption.decrypt(p.apiKey, DEFAULT_PASSPHRASE, config.encryptionSalt);
|
|
211
186
|
}
|
|
212
187
|
}
|
|
213
188
|
results.push({
|
|
@@ -272,9 +247,8 @@ export class ConfigManager {
|
|
|
272
247
|
/**
|
|
273
248
|
* 切换加密模式(需要提供所有必要的凭据)
|
|
274
249
|
* @param newMode 新的加密模式
|
|
275
|
-
* @param passphrase 密码(切换到 passphrase 模式时需要)
|
|
276
250
|
*/
|
|
277
|
-
async switchEncryptionMode(newMode
|
|
251
|
+
async switchEncryptionMode(newMode) {
|
|
278
252
|
const config = await this.getConfig();
|
|
279
253
|
const oldMode = config.encryptionMode;
|
|
280
254
|
if (oldMode === newMode) {
|
|
@@ -283,7 +257,7 @@ export class ConfigManager {
|
|
|
283
257
|
// 读取所有 profiles 的明文 API Keys
|
|
284
258
|
const decryptedProfiles = [];
|
|
285
259
|
for (const p of config.profiles) {
|
|
286
|
-
const decrypted = await this.getProfile(p.domain
|
|
260
|
+
const decrypted = await this.getProfile(p.domain);
|
|
287
261
|
if (decrypted) {
|
|
288
262
|
decryptedProfiles.push(decrypted);
|
|
289
263
|
}
|
|
@@ -299,7 +273,7 @@ export class ConfigManager {
|
|
|
299
273
|
await this.storage.write(config);
|
|
300
274
|
// 使用新模式重新保存所有 profiles
|
|
301
275
|
for (const profile of decryptedProfiles) {
|
|
302
|
-
await this.saveProfile(profile
|
|
276
|
+
await this.saveProfile(profile);
|
|
303
277
|
}
|
|
304
278
|
// 如果从 keychain 切换出去,清理密钥链
|
|
305
279
|
if (oldMode === 'keychain') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;GAKG;AACH,MAAM,OAAO,aAAa;IAChB,OAAO,CAAgB;IACvB,oBAAoB,CAAuB;IAC3C,eAAe,CAAkB;IAEzC
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/prompts.d.ts
CHANGED
|
@@ -6,11 +6,6 @@ import type { ProfileConfig } from '../types/index.js';
|
|
|
6
6
|
export declare class InteractiveUI {
|
|
7
7
|
private configManager;
|
|
8
8
|
constructor(configManager: ConfigManager);
|
|
9
|
-
/**
|
|
10
|
-
* 获取密码(如果需要)
|
|
11
|
-
* 先尝试空密码,失败后提示输入
|
|
12
|
-
*/
|
|
13
|
-
private getPassphraseIfNeeded;
|
|
14
9
|
/**
|
|
15
10
|
* 显示当前配置并询问是否修改
|
|
16
11
|
* @returns 是否应该继续启动 Claude
|
package/dist/ui/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAoB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGzE;;GAEG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD;;;OAGG;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,OAAO,KAAK,EAAoB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGzE;;GAEG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,aAAa;IAEhD;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAuC3C;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IA0C7C;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB7F;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAgFpC;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsD3F;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,GAAG;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B7F;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBzC;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB1C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B3C"}
|
package/dist/ui/prompts.js
CHANGED
|
@@ -11,59 +11,12 @@ export class InteractiveUI {
|
|
|
11
11
|
constructor(configManager) {
|
|
12
12
|
this.configManager = configManager;
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* 获取密码(如果需要)
|
|
16
|
-
* 先尝试空密码,失败后提示输入
|
|
17
|
-
*/
|
|
18
|
-
async getPassphraseIfNeeded() {
|
|
19
|
-
const mode = await this.configManager.getEncryptionMode();
|
|
20
|
-
if (mode !== 'passphrase') {
|
|
21
|
-
return undefined;
|
|
22
|
-
}
|
|
23
|
-
const config = await this.configManager.getConfig();
|
|
24
|
-
if (config.profiles.length === 0 || !config.currentProfile) {
|
|
25
|
-
// 没有配置,不需要密码
|
|
26
|
-
return '';
|
|
27
|
-
}
|
|
28
|
-
// 先尝试空密码
|
|
29
|
-
try {
|
|
30
|
-
this.configManager.setSessionPassphrase('');
|
|
31
|
-
await this.configManager.getCurrentProfile('');
|
|
32
|
-
// 空密码可用
|
|
33
|
-
return '';
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
// 空密码失败,清除并提示输入
|
|
37
|
-
this.configManager.clearSessionPassphrase();
|
|
38
|
-
}
|
|
39
|
-
// 提示输入密码
|
|
40
|
-
const { passphrase } = await prompts({
|
|
41
|
-
type: 'password',
|
|
42
|
-
name: 'passphrase',
|
|
43
|
-
message: '输入密码以解密配置:',
|
|
44
|
-
});
|
|
45
|
-
if (passphrase === undefined) {
|
|
46
|
-
throw new Error('需要密码来解密配置');
|
|
47
|
-
}
|
|
48
|
-
this.configManager.setSessionPassphrase(passphrase);
|
|
49
|
-
return passphrase;
|
|
50
|
-
}
|
|
51
14
|
/**
|
|
52
15
|
* 显示当前配置并询问是否修改
|
|
53
16
|
* @returns 是否应该继续启动 Claude
|
|
54
17
|
*/
|
|
55
18
|
async showCurrentAndAsk() {
|
|
56
|
-
|
|
57
|
-
let passphrase;
|
|
58
|
-
try {
|
|
59
|
-
passphrase = await this.getPassphraseIfNeeded();
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
63
|
-
displayError(err.message);
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
const current = await this.configManager.getCurrentProfile(passphrase);
|
|
19
|
+
const current = await this.configManager.getCurrentProfile();
|
|
67
20
|
displayTitle('🔧 Claude Code 配置管理工具');
|
|
68
21
|
if (current) {
|
|
69
22
|
console.log(chalk.cyan('当前配置:'));
|
|
@@ -100,17 +53,7 @@ export class InteractiveUI {
|
|
|
100
53
|
* @returns 是否应该继续启动 Claude(导入/导出操作返回 false)
|
|
101
54
|
*/
|
|
102
55
|
async manageConfiguration() {
|
|
103
|
-
|
|
104
|
-
let passphrase;
|
|
105
|
-
try {
|
|
106
|
-
passphrase = await this.getPassphraseIfNeeded();
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
110
|
-
displayError(err.message);
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
const profiles = await this.configManager.listProfiles(passphrase);
|
|
56
|
+
const profiles = await this.configManager.listProfiles();
|
|
114
57
|
const { action } = await prompts({
|
|
115
58
|
type: 'select',
|
|
116
59
|
name: 'action',
|
|
@@ -137,7 +80,7 @@ export class InteractiveUI {
|
|
|
137
80
|
return true;
|
|
138
81
|
case 'delete':
|
|
139
82
|
await this.deleteProfile(profiles);
|
|
140
|
-
return
|
|
83
|
+
return false; // 删除后不启动 Claude
|
|
141
84
|
case 'export':
|
|
142
85
|
await this.exportConfiguration();
|
|
143
86
|
return false; // 导出后不启动 Claude
|
|
@@ -327,17 +270,7 @@ export class InteractiveUI {
|
|
|
327
270
|
* 列出所有配置
|
|
328
271
|
*/
|
|
329
272
|
async listConfigurations() {
|
|
330
|
-
|
|
331
|
-
let passphrase;
|
|
332
|
-
try {
|
|
333
|
-
passphrase = await this.getPassphraseIfNeeded();
|
|
334
|
-
}
|
|
335
|
-
catch (error) {
|
|
336
|
-
const err = error instanceof Error ? error : new Error(String(error));
|
|
337
|
-
displayError(err.message);
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
const profiles = await this.configManager.listProfiles(passphrase);
|
|
273
|
+
const profiles = await this.configManager.listProfiles();
|
|
341
274
|
const config = await this.configManager.getConfig();
|
|
342
275
|
displayTitle('📋 所有配置:');
|
|
343
276
|
if (profiles.length === 0) {
|
package/dist/ui/prompts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/ui/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,EAAE,aAAa;IAIxC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAK5D;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAgB;gBAEzB,aAAa,EAAE,aAAa;IAIxC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuG9B;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;CA6B1C"}
|
package/dist/utils/migration.js
CHANGED
|
@@ -35,7 +35,7 @@ export class EncryptionMigration {
|
|
|
35
35
|
choices.push({
|
|
36
36
|
title: '密码加密',
|
|
37
37
|
value: 'passphrase',
|
|
38
|
-
description: '
|
|
38
|
+
description: '使用内置密码自动加密 - 可跨机器移植,无需手动输入密码',
|
|
39
39
|
});
|
|
40
40
|
const { newMode } = await prompts({
|
|
41
41
|
type: 'select',
|
|
@@ -51,65 +51,6 @@ export class EncryptionMigration {
|
|
|
51
51
|
displayMessage('已在使用此模式,无需迁移。');
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
|
-
// 如果当前模式是密码模式,需要密码来解密
|
|
55
|
-
let currentPassphrase;
|
|
56
|
-
if (currentMode === 'passphrase') {
|
|
57
|
-
// 先尝试空密码
|
|
58
|
-
this.configManager.setSessionPassphrase('');
|
|
59
|
-
// 验证空密码是否可以解密
|
|
60
|
-
try {
|
|
61
|
-
const config = await this.configManager.getConfig();
|
|
62
|
-
if (config.profiles.length > 0) {
|
|
63
|
-
// 尝试解密第一个配置来验证密码
|
|
64
|
-
await this.configManager.getProfile(config.profiles[0].domain, '');
|
|
65
|
-
}
|
|
66
|
-
// 空密码可用
|
|
67
|
-
currentPassphrase = '';
|
|
68
|
-
}
|
|
69
|
-
catch {
|
|
70
|
-
// 空密码失败,提示输入
|
|
71
|
-
this.configManager.clearSessionPassphrase();
|
|
72
|
-
const { currentPwd } = await prompts({
|
|
73
|
-
type: 'password',
|
|
74
|
-
name: 'currentPwd',
|
|
75
|
-
message: '输入当前密码以解密配置:',
|
|
76
|
-
validate: (value) => value.trim() !== '' ? true : '密码不能为空',
|
|
77
|
-
});
|
|
78
|
-
if (!currentPwd) {
|
|
79
|
-
displayWarning('已取消迁移');
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
currentPassphrase = currentPwd;
|
|
83
|
-
this.configManager.setSessionPassphrase(currentPassphrase);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
// 如果选择密码模式,需要输入新密码
|
|
87
|
-
let newPassphrase;
|
|
88
|
-
if (newMode === 'passphrase') {
|
|
89
|
-
const { pwd1 } = await prompts({
|
|
90
|
-
type: 'password',
|
|
91
|
-
name: 'pwd1',
|
|
92
|
-
message: '输入新密码用于加密(直接回车使用空密码):',
|
|
93
|
-
validate: (value) => value.length === 0 || value.length >= 8 ? true : '密码至少需要 8 个字符',
|
|
94
|
-
});
|
|
95
|
-
if (pwd1 === undefined) {
|
|
96
|
-
displayWarning('已取消迁移');
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
// 如果不是空密码,需要确认
|
|
100
|
-
if (pwd1.length > 0) {
|
|
101
|
-
const { pwd2 } = await prompts({
|
|
102
|
-
type: 'password',
|
|
103
|
-
name: 'pwd2',
|
|
104
|
-
message: '确认新密码:',
|
|
105
|
-
});
|
|
106
|
-
if (pwd1 !== pwd2) {
|
|
107
|
-
displayError('两次密码输入不一致');
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
newPassphrase = pwd1;
|
|
112
|
-
}
|
|
113
54
|
// 确认迁移
|
|
114
55
|
const { confirm } = await prompts({
|
|
115
56
|
type: 'confirm',
|
|
@@ -131,7 +72,7 @@ export class EncryptionMigration {
|
|
|
131
72
|
displaySuccess(`备份已创建:${backupPath}`);
|
|
132
73
|
displayMessage('\n正在迁移加密模式...');
|
|
133
74
|
// 执行迁移
|
|
134
|
-
await this.configManager.switchEncryptionMode(newMode
|
|
75
|
+
await this.configManager.switchEncryptionMode(newMode);
|
|
135
76
|
displaySuccess(`\n迁移完成!`);
|
|
136
77
|
displayMessage(`\n加密模式已更改:${currentMode} → ${newMode}`);
|
|
137
78
|
if (newMode === 'keychain') {
|
|
@@ -139,17 +80,8 @@ export class EncryptionMigration {
|
|
|
139
80
|
displayMessage('配置文件仅包含非敏感数据。');
|
|
140
81
|
}
|
|
141
82
|
else if (newMode === 'passphrase') {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
displayWarning('每次使用 hop-claude 时都需要输入密码。');
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
displayMessage('\n您使用了空密码加密。');
|
|
148
|
-
displayMessage('每次启动将自动使用空密码解密。');
|
|
149
|
-
}
|
|
150
|
-
if (newPassphrase !== undefined) {
|
|
151
|
-
this.configManager.setSessionPassphrase(newPassphrase);
|
|
152
|
-
}
|
|
83
|
+
displayMessage('\n您的 API 密钥现在使用内置密码加密。');
|
|
84
|
+
displayMessage('配置完全可移植,可跨机器导入/导出。');
|
|
153
85
|
}
|
|
154
86
|
displayMessage(`\n备份文件:${backupPath}`);
|
|
155
87
|
displayMessage('验证迁移成功后可以删除备份文件。\n');
|
|
@@ -184,9 +116,9 @@ export class EncryptionMigration {
|
|
|
184
116
|
break;
|
|
185
117
|
case 'passphrase':
|
|
186
118
|
displayMessage('\n密码加密模式:');
|
|
187
|
-
displayMessage(' -
|
|
119
|
+
displayMessage(' - 使用内置密码自动加密密钥');
|
|
188
120
|
displayMessage(' - 完全可跨机器移植');
|
|
189
|
-
displayMessage(' -
|
|
121
|
+
displayMessage(' - 无需手动输入密码');
|
|
190
122
|
break;
|
|
191
123
|
}
|
|
192
124
|
displayMessage(`\n系统 Keychain 可用:${keychainAvailable ? '是' : '否'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGhG;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACtB,aAAa,CAAgB;IAErC,YAAY,aAA4B;QACtC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,cAAc,CAAC,oBAAoB,CAAC,CAAC;QAErC,WAAW;QACX,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;QAEjE,cAAc,CAAC,UAAU,WAAW,EAAE,CAAC,CAAC;QAExC,mBAAmB;QACnB,MAAM,iBAAiB,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC;QAE9D,WAAW;QACX,MAAM,OAAO,GAAyE,EAAE,CAAC;QAEzF,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK,EAAE,cAAc;gBACrB,KAAK,EAAE,UAAU;gBACjB,WAAW,EAAE,gCAAgC;aAC9C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,wBAAwB,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,MAAM;YACb,KAAK,EAAE,YAAY;YACnB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
|