multi-ccp 0.1.1 → 0.1.2
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 +1 -0
- package/README.md +212 -49
- package/README.zh-CN.md +277 -0
- package/dist/cli/program.js +83 -4
- package/dist/cli/program.js.map +1 -1
- package/dist/core/profiles.d.ts +1 -0
- package/dist/core/profiles.js +4 -2
- package/dist/core/profiles.js.map +1 -1
- package/dist/core/sessions.d.ts +72 -0
- package/dist/core/sessions.js +324 -0
- package/dist/core/sessions.js.map +1 -0
- package/package.json +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,3 +9,4 @@
|
|
|
9
9
|
- Added CCR base commands for `status`, `install`, `start`, `stop`, `restart`, `ui`, and `model`.
|
|
10
10
|
- Added CCR preset-bound profile creation with `add-ccr`.
|
|
11
11
|
- Added CCR profile gateway preparation before `ccp start`.
|
|
12
|
+
- Added session synchronization with `sync-session`.
|
package/README.md
CHANGED
|
@@ -1,16 +1,21 @@
|
|
|
1
1
|
# multi-ccp
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
English | [简体中文](README.zh-CN.md)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`multi-ccp` is a profile and session manager for Claude Code. It installs the `ccp` command and helps you run multiple Claude Code windows with fully isolated configuration directories, model providers, login state, and history.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Use it when you want separate Claude Code sessions for work, personal projects, different API providers, or different model routes without manually switching environment variables or editing config files.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- Run multiple Claude Code windows with independent profiles.
|
|
12
|
+
- Keep each profile's Claude Code config, login state, environment variables, and project history isolated.
|
|
13
|
+
- Create Anthropic-compatible API profiles with custom `ANTHROPIC_BASE_URL`, token, and model settings.
|
|
14
|
+
- Create Claude login profiles that use Claude Code's normal account login flow without storing account passwords.
|
|
15
|
+
- Create [Claude Code Router](https://github.com/musistudio/claude-code-router) preset profiles for multiple model providers and routes.
|
|
16
|
+
- Manage [Claude Code Router](https://github.com/musistudio/claude-code-router) from the same CLI.
|
|
17
|
+
- Sync historical Claude Code sessions between profiles or between `main` and a profile.
|
|
18
|
+
- Open and inspect profile settings quickly from the terminal.
|
|
14
19
|
|
|
15
20
|
## Install
|
|
16
21
|
|
|
@@ -18,14 +23,169 @@ The command name is `ccp`.
|
|
|
18
23
|
npm install -g multi-ccp
|
|
19
24
|
```
|
|
20
25
|
|
|
21
|
-
|
|
26
|
+
Verify the install:
|
|
22
27
|
|
|
23
28
|
```bash
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
29
|
+
ccp --version
|
|
30
|
+
ccp help
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
Want the shortest path? Ask your AI assistant how to use `multi-ccp`. Copy this prompt:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
How do I use multi-ccp to manage multiple Claude Code profiles?
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Then continue with the examples below when you want the full command reference.
|
|
42
|
+
|
|
43
|
+
Create a profile for an Anthropic-compatible API provider:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
ccp add provider-a
|
|
47
|
+
ccp start provider-a
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Create another isolated profile for a different provider, account, or project context:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ccp add provider-b
|
|
54
|
+
ccp start provider-b
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Create a profile that uses Claude Code's normal account login flow:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
ccp add-login work
|
|
61
|
+
ccp start work
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
List and inspect profiles:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ccp list
|
|
68
|
+
ccp status work
|
|
69
|
+
ccp path work
|
|
27
70
|
```
|
|
28
71
|
|
|
72
|
+
## Profile Types
|
|
73
|
+
|
|
74
|
+
### API Profiles
|
|
75
|
+
|
|
76
|
+
API profiles are for Anthropic-compatible providers. They store API environment variables in the profile's `settings.json`.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
ccp add provider-a
|
|
80
|
+
ccp start provider-a
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
The command prompts for:
|
|
84
|
+
|
|
85
|
+
- `ANTHROPIC_BASE_URL`
|
|
86
|
+
- `ANTHROPIC_AUTH_TOKEN`
|
|
87
|
+
- Model name
|
|
88
|
+
|
|
89
|
+
#### Customizing Provider Models
|
|
90
|
+
|
|
91
|
+
`ccp add` keeps provider setup simple by applying the model you enter to all default Claude Code model slots. For example, a DeepSeek profile may initially look like this:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"env": {
|
|
96
|
+
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
97
|
+
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
98
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-pro",
|
|
99
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro",
|
|
100
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
|
|
101
|
+
"ANTHROPIC_MODEL": "deepseek-v4-pro"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
If your provider offers different models for fast tasks, subagents, or long-context work, edit the profile manually:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
ccp edit deepseek
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
For example, you can assign a flash model to lightweight work and a 1M context model to the main model slots:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"env": {
|
|
117
|
+
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
118
|
+
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
119
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
|
|
120
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro[1M]",
|
|
121
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro[1M]",
|
|
122
|
+
"CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-v4-flash",
|
|
123
|
+
"ANTHROPIC_MODEL": "deepseek-v4-pro[1M]"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
See the [DeepSeek API documentation](https://api-docs.deepseek.com/) for provider-specific model names and endpoint details.
|
|
129
|
+
|
|
130
|
+
### Login Profiles
|
|
131
|
+
|
|
132
|
+
Login profiles are for Claude Code account-based authentication. They do not set `ANTHROPIC_BASE_URL` or `ANTHROPIC_AUTH_TOKEN`.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
ccp add-login work
|
|
136
|
+
ccp start work
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
When Claude Code asks you to sign in, the login state is stored under that profile's config directory. Another profile can use a different account or login state:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
ccp add-login personal
|
|
143
|
+
ccp start personal
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Claude Code Router Profiles
|
|
147
|
+
|
|
148
|
+
CCR profiles are bound to [Claude Code Router](https://github.com/musistudio/claude-code-router) presets. Claude Code Router is a separate open source project that can route Claude Code requests to different model providers. `multi-ccp` integrates with its config and preset system so each profile can use its own provider route.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
ccp ccr status
|
|
152
|
+
ccp ccr model
|
|
153
|
+
ccp add-ccr gpt-route
|
|
154
|
+
ccp start gpt-route
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
A CCR profile stores its route in `.ccp.json` and points Claude Code at a preset endpoint such as:
|
|
158
|
+
|
|
159
|
+
```text
|
|
160
|
+
http://127.0.0.1:3456/preset/gpt-route
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Session Sync
|
|
164
|
+
|
|
165
|
+
`sync-session` copies Claude Code history for the current project between profiles. It can sync selected sessions interactively or all sessions at once.
|
|
166
|
+
|
|
167
|
+
Sync from `main` to a profile:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
ccp sync-session work
|
|
171
|
+
ccp sync-session work --all
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Sync between two named profiles:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
ccp sync-session work to personal
|
|
178
|
+
ccp sync-session work to personal --all
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Sync from a profile back to `main`:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
ccp sync-session work to main
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
The sync command tracks hashes in `.ccp-sync`, copies session assets, and prompts before overwriting conflicting target sessions.
|
|
188
|
+
|
|
29
189
|
## Commands
|
|
30
190
|
|
|
31
191
|
```bash
|
|
@@ -39,6 +199,11 @@ ccp status <profile|main>
|
|
|
39
199
|
ccp start <profile> [claude args...]
|
|
40
200
|
ccp path <profile|main>
|
|
41
201
|
ccp edit <profile>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
[Claude Code Router](https://github.com/musistudio/claude-code-router) commands:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
42
207
|
ccp ccr status
|
|
43
208
|
ccp ccr install
|
|
44
209
|
ccp ccr start
|
|
@@ -48,67 +213,65 @@ ccp ccr ui
|
|
|
48
213
|
ccp ccr model
|
|
49
214
|
```
|
|
50
215
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
### API profile
|
|
216
|
+
Session sync commands:
|
|
54
217
|
|
|
55
218
|
```bash
|
|
56
|
-
ccp
|
|
57
|
-
ccp
|
|
219
|
+
ccp sync-session <target-profile> [--all]
|
|
220
|
+
ccp sync-session <source-profile|main> to <target-profile|main> [--all]
|
|
58
221
|
```
|
|
59
222
|
|
|
60
|
-
|
|
223
|
+
## Configuration Layout
|
|
61
224
|
|
|
62
|
-
|
|
225
|
+
Profiles are stored under:
|
|
63
226
|
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
ccp start work
|
|
227
|
+
```text
|
|
228
|
+
~/.claude-profiles/<profile>
|
|
67
229
|
```
|
|
68
230
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
Create another login account with:
|
|
231
|
+
Claude Code's default config directory is still available as:
|
|
72
232
|
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
ccp start personal
|
|
233
|
+
```text
|
|
234
|
+
main
|
|
76
235
|
```
|
|
77
236
|
|
|
78
|
-
|
|
237
|
+
For example:
|
|
79
238
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
- `add`
|
|
86
|
-
- `add-login`
|
|
87
|
-
- `remove`
|
|
88
|
-
- `status`
|
|
89
|
-
- `path`
|
|
90
|
-
- `edit`
|
|
91
|
-
- `start`
|
|
92
|
-
- `add-ccr`
|
|
93
|
-
- CCR preset generation and CCR profile auto-start integration
|
|
94
|
-
- `ccp ccr status|install|start|stop|restart|ui|model`
|
|
95
|
-
|
|
96
|
-
Planned migrations from the legacy PowerShell tool:
|
|
239
|
+
```bash
|
|
240
|
+
ccp status main
|
|
241
|
+
ccp sync-session main to work
|
|
242
|
+
ccp sync-session work to main
|
|
243
|
+
```
|
|
97
244
|
|
|
98
|
-
|
|
99
|
-
- `ccp ui`
|
|
245
|
+
## Safety Notes
|
|
100
246
|
|
|
101
|
-
|
|
247
|
+
- `ccp remove <profile>` asks you to type the profile name before deleting it.
|
|
248
|
+
- `ccp add`, `ccp add-login`, and `ccp add-ccr` refuse to overwrite existing profiles.
|
|
249
|
+
- `sync-session` detects conflicts with SHA-256 hashes and asks before overwriting target files.
|
|
250
|
+
- Login profiles do not store Claude account passwords.
|
|
102
251
|
|
|
103
252
|
## Development
|
|
104
253
|
|
|
105
254
|
```bash
|
|
255
|
+
git clone <repository-url>
|
|
256
|
+
cd multi-ccp
|
|
106
257
|
npm install
|
|
107
258
|
npm run typecheck
|
|
108
259
|
npm test
|
|
109
260
|
npm run build
|
|
110
261
|
```
|
|
111
262
|
|
|
263
|
+
Run the CLI from source:
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
npm run dev -- help
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Preview the npm package:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
npm pack --dry-run
|
|
273
|
+
```
|
|
274
|
+
|
|
112
275
|
## License
|
|
113
276
|
|
|
114
277
|
MIT
|
package/README.zh-CN.md
ADDED
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
# multi-ccp
|
|
2
|
+
|
|
3
|
+
[English](README.md) | 简体中文
|
|
4
|
+
|
|
5
|
+
`multi-ccp` 是一个 Claude Code profile 和历史会话管理工具。它会安装 `ccp` 命令,帮助你运行多个 Claude Code 会话窗口,并让每个窗口拥有独立隔离的配置目录、模型 provider、登录状态和历史记录。
|
|
6
|
+
|
|
7
|
+
当你希望为工作、个人项目、不同 API provider、不同模型路由分别使用独立 Claude Code 会话时,可以使用 `multi-ccp`,无需手动切换环境变量或反复编辑配置文件。
|
|
8
|
+
|
|
9
|
+
## 功能特性
|
|
10
|
+
|
|
11
|
+
- 使用独立 profile 运行多个 Claude Code 会话窗口。
|
|
12
|
+
- 每个 profile 的 Claude Code 配置、登录状态、环境变量和项目历史记录互相隔离。
|
|
13
|
+
- 创建兼容 Anthropic API 的 profile,自定义 `ANTHROPIC_BASE_URL`、token 和模型配置。
|
|
14
|
+
- 创建 Claude 登录 profile,使用 Claude Code 正常账号登录流程,不保存账号密码。
|
|
15
|
+
- 创建 [Claude Code Router](https://github.com/musistudio/claude-code-router) preset profile,支持多个模型 provider 和 route。
|
|
16
|
+
- 通过同一个 CLI 管理 [Claude Code Router](https://github.com/musistudio/claude-code-router)。
|
|
17
|
+
- 在不同 profile 之间,或在 `main` 与 profile 之间同步 Claude Code 历史会话。
|
|
18
|
+
- 快速查看、打开和编辑 profile 配置。
|
|
19
|
+
|
|
20
|
+
## 安装
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g multi-ccp
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
验证安装:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
ccp --version
|
|
30
|
+
ccp help
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 快速开始
|
|
34
|
+
|
|
35
|
+
想走最短路径?可以先问 AI 如何使用 `multi-ccp`。复制这句提示词:
|
|
36
|
+
|
|
37
|
+
```text
|
|
38
|
+
How do I use multi-ccp to manage multiple Claude Code profiles?
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
如果你想查看完整命令说明,可以继续阅读下面的示例。
|
|
42
|
+
|
|
43
|
+
创建一个兼容 Anthropic API 的 provider profile:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
ccp add provider-a
|
|
47
|
+
ccp start provider-a
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
为另一个 provider、账号或项目上下文创建独立 profile:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ccp add provider-b
|
|
54
|
+
ccp start provider-b
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
创建一个使用 Claude Code 正常账号登录流程的 profile:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
ccp add-login work
|
|
61
|
+
ccp start work
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
列出和查看 profile:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ccp list
|
|
68
|
+
ccp status work
|
|
69
|
+
ccp path work
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Profile 类型
|
|
73
|
+
|
|
74
|
+
### API Profiles
|
|
75
|
+
|
|
76
|
+
API profile 用于兼容 Anthropic API 的 provider。它会将 API 环境变量写入该 profile 的 `settings.json`。
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
ccp add provider-a
|
|
80
|
+
ccp start provider-a
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
命令会提示你输入:
|
|
84
|
+
|
|
85
|
+
- `ANTHROPIC_BASE_URL`
|
|
86
|
+
- `ANTHROPIC_AUTH_TOKEN`
|
|
87
|
+
- 模型名称
|
|
88
|
+
|
|
89
|
+
#### 自定义 provider 模型
|
|
90
|
+
|
|
91
|
+
为了简化 provider 配置,`ccp add` 会把你输入的模型名称默认写入所有 Claude Code 默认模型槽位。以 DeepSeek profile 为例,初始配置可能类似:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"env": {
|
|
96
|
+
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
97
|
+
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
98
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-pro",
|
|
99
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro",
|
|
100
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro",
|
|
101
|
+
"ANTHROPIC_MODEL": "deepseek-v4-pro"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
如果你的 provider 为快速任务、子代理或长上下文任务提供了不同模型,可以手动编辑 profile:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
ccp edit deepseek
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
例如,把轻量模型分配给快速任务,把支持 1M 上下文的模型分配给主模型槽位:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
{
|
|
116
|
+
"env": {
|
|
117
|
+
"ANTHROPIC_AUTH_TOKEN": "sk-",
|
|
118
|
+
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
|
|
119
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "deepseek-v4-flash",
|
|
120
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "deepseek-v4-pro[1M]",
|
|
121
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "deepseek-v4-pro[1M]",
|
|
122
|
+
"CLAUDE_CODE_SUBAGENT_MODEL": "deepseek-v4-flash",
|
|
123
|
+
"ANTHROPIC_MODEL": "deepseek-v4-pro[1M]"
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
具体模型名称和 endpoint 请参考 [DeepSeek API 文档](https://api-docs.deepseek.com/)。
|
|
129
|
+
|
|
130
|
+
### Login Profiles
|
|
131
|
+
|
|
132
|
+
Login profile 用于 Claude Code 的账号登录模式。它不会设置 `ANTHROPIC_BASE_URL` 或 `ANTHROPIC_AUTH_TOKEN`。
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
ccp add-login work
|
|
136
|
+
ccp start work
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
当 Claude Code 要求你登录时,登录状态会保存在这个 profile 的配置目录下。另一个 profile 可以使用不同账号或不同登录状态:
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
ccp add-login personal
|
|
143
|
+
ccp start personal
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Claude Code Router Profiles
|
|
147
|
+
|
|
148
|
+
CCR profile 绑定到 [Claude Code Router](https://github.com/musistudio/claude-code-router) preset。Claude Code Router 是一个独立的开源项目,可以将 Claude Code 请求路由到不同模型 provider。`multi-ccp` 会集成它的 config 和 preset system,让每个 profile 可以使用自己的 provider route。
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
ccp ccr status
|
|
152
|
+
ccp ccr model
|
|
153
|
+
ccp add-ccr gpt-route
|
|
154
|
+
ccp start gpt-route
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
CCR profile 会把 route 写入 `.ccp.json`,并让 Claude Code 指向类似这样的 preset endpoint:
|
|
158
|
+
|
|
159
|
+
```text
|
|
160
|
+
http://127.0.0.1:3456/preset/gpt-route
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## 历史会话同步
|
|
164
|
+
|
|
165
|
+
`sync-session` 会同步当前项目的 Claude Code 历史会话。你可以交互式选择要同步的会话,也可以一次同步全部会话。
|
|
166
|
+
|
|
167
|
+
从 `main` 同步到某个 profile:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
ccp sync-session work
|
|
171
|
+
ccp sync-session work --all
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
在两个命名 profile 之间同步:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
ccp sync-session work to personal
|
|
178
|
+
ccp sync-session work to personal --all
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
从 profile 同步回 `main`:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
ccp sync-session work to main
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
同步命令会在 `.ccp-sync` 中记录 hash,复制 session assets,并在目标文件存在冲突时提示是否覆盖。
|
|
188
|
+
|
|
189
|
+
## 命令
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
ccp help
|
|
193
|
+
ccp list
|
|
194
|
+
ccp add <profile>
|
|
195
|
+
ccp add-login <profile>
|
|
196
|
+
ccp add-ccr <profile>
|
|
197
|
+
ccp remove <profile>
|
|
198
|
+
ccp status <profile|main>
|
|
199
|
+
ccp start <profile> [claude args...]
|
|
200
|
+
ccp path <profile|main>
|
|
201
|
+
ccp edit <profile>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
[Claude Code Router](https://github.com/musistudio/claude-code-router) 相关命令:
|
|
205
|
+
|
|
206
|
+
```bash
|
|
207
|
+
ccp ccr status
|
|
208
|
+
ccp ccr install
|
|
209
|
+
ccp ccr start
|
|
210
|
+
ccp ccr stop
|
|
211
|
+
ccp ccr restart
|
|
212
|
+
ccp ccr ui
|
|
213
|
+
ccp ccr model
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
历史会话同步命令:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
ccp sync-session <target-profile> [--all]
|
|
220
|
+
ccp sync-session <source-profile|main> to <target-profile|main> [--all]
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## 配置目录
|
|
224
|
+
|
|
225
|
+
Profiles 默认存放在:
|
|
226
|
+
|
|
227
|
+
```text
|
|
228
|
+
~/.claude-profiles/<profile>
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Claude Code 默认配置目录仍然可以通过 `main` 访问:
|
|
232
|
+
|
|
233
|
+
```text
|
|
234
|
+
main
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
例如:
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
ccp status main
|
|
241
|
+
ccp sync-session main to work
|
|
242
|
+
ccp sync-session work to main
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
## 安全说明
|
|
246
|
+
|
|
247
|
+
- `ccp remove <profile>` 删除前会要求你输入 profile 名称确认。
|
|
248
|
+
- `ccp add`、`ccp add-login` 和 `ccp add-ccr` 不会覆盖已经存在的 profile。
|
|
249
|
+
- `sync-session` 使用 SHA-256 hash 检测冲突,并在覆盖目标文件前询问确认。
|
|
250
|
+
- Login profile 不保存 Claude 账号密码。
|
|
251
|
+
|
|
252
|
+
## 开发
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
git clone <repository-url>
|
|
256
|
+
cd multi-ccp
|
|
257
|
+
npm install
|
|
258
|
+
npm run typecheck
|
|
259
|
+
npm test
|
|
260
|
+
npm run build
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
从源码运行 CLI:
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
npm run dev -- help
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
预览 npm 包内容:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
npm pack --dry-run
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## License
|
|
276
|
+
|
|
277
|
+
MIT
|
package/dist/cli/program.js
CHANGED
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import { confirm, input, password, select } from "@inquirer/prompts";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
2
3
|
import { Command } from "commander";
|
|
3
4
|
import { CcpError } from "../core/errors.js";
|
|
4
5
|
import { launchClaude } from "../core/launcher.js";
|
|
5
6
|
import { resolveConfigDir } from "../core/profiles.js";
|
|
6
|
-
import { createApiProfile, createCcrProfile, createLoginProfile, listProfiles, removeProfile, summarizeProfile } from "../core/profiles.js";
|
|
7
|
+
import { createApiProfile, createCcrProfile, createLoginProfile, listProfiles, profileExists, removeProfile, summarizeProfile } from "../core/profiles.js";
|
|
7
8
|
import { getSettingsPath } from "../core/settings.js";
|
|
8
9
|
import { getCcrRouteChoices, getCcrStatus, installCcr, readCcrConfig, invokeCcrCli, printCcrStatus, restartCcrService, startCcrService, stopCcrService } from "../core/ccr.js";
|
|
9
10
|
import { openEditor } from "../platform/editor.js";
|
|
11
|
+
import { parseSelectionText, syncSessions } from "../core/sessions.js";
|
|
12
|
+
function getPackageVersion() {
|
|
13
|
+
try {
|
|
14
|
+
const packageJsonUrl = new URL("../../package.json", import.meta.url);
|
|
15
|
+
const packageJson = JSON.parse(readFileSync(packageJsonUrl, "utf8"));
|
|
16
|
+
return packageJson.version ?? "0.0.0";
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return "0.0.0";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function ensureProfileCanBeCreated(name) {
|
|
23
|
+
if (!(await profileExists(name))) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
const config = await resolveConfigDir(name, { allowMain: false });
|
|
27
|
+
console.log(`Profile '${name}' already exists:`);
|
|
28
|
+
console.log(config.dir);
|
|
29
|
+
console.log("Use a different profile name, or remove the existing profile first with:");
|
|
30
|
+
console.log(` ccp remove ${name}`);
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
10
33
|
function printProfile(profile) {
|
|
11
34
|
if (profile.model) {
|
|
12
35
|
console.log(`${profile.name}\t${profile.model}\t${profile.baseUrl}`);
|
|
@@ -15,6 +38,37 @@ function printProfile(profile) {
|
|
|
15
38
|
console.log(`${profile.name}\t${profile.baseUrl}`);
|
|
16
39
|
}
|
|
17
40
|
}
|
|
41
|
+
async function selectSessionFiles(sessions) {
|
|
42
|
+
if (sessions.length === 0)
|
|
43
|
+
return [];
|
|
44
|
+
console.log("Select sessions to sync:");
|
|
45
|
+
sessions.forEach((item, index) => {
|
|
46
|
+
const when = item.lastWriteTime.toISOString().slice(0, 16).replace("T", " ");
|
|
47
|
+
const shortId = item.sessionId.length > 8 ? item.sessionId.slice(0, 8) : item.sessionId;
|
|
48
|
+
console.log("[" + (index + 1) + "] " + when + " " + item.relativeTime + " " + shortId + " " + item.title + " " + item.sizeKb + "KB");
|
|
49
|
+
});
|
|
50
|
+
const answer = await input({ message: "Choose numbers/ranges, 'a' for all, or 'q' to cancel" });
|
|
51
|
+
if (!answer.trim() || answer.trim().toLowerCase() === "q")
|
|
52
|
+
return [];
|
|
53
|
+
if (["a", "all"].includes(answer.trim().toLowerCase()))
|
|
54
|
+
return sessions;
|
|
55
|
+
return parseSelectionText(answer, sessions.length).map((index) => sessions[index]);
|
|
56
|
+
}
|
|
57
|
+
async function confirmSessionConflict(details) {
|
|
58
|
+
console.log("");
|
|
59
|
+
console.log("Conflict detected:");
|
|
60
|
+
console.log(" " + details.sourceFile);
|
|
61
|
+
console.log("Target: " + details.targetFile);
|
|
62
|
+
return select({
|
|
63
|
+
message: "Overwrite target with source?",
|
|
64
|
+
choices: [
|
|
65
|
+
{ name: "No", value: "no" },
|
|
66
|
+
{ name: "Yes", value: "yes" },
|
|
67
|
+
{ name: "All", value: "all" },
|
|
68
|
+
{ name: "Quit", value: "quit" }
|
|
69
|
+
]
|
|
70
|
+
});
|
|
71
|
+
}
|
|
18
72
|
async function showStatus(name) {
|
|
19
73
|
const config = await resolveConfigDir(name, { allowMain: true });
|
|
20
74
|
const profile = await summarizeProfile(config.name, config.dir);
|
|
@@ -58,7 +112,7 @@ export function createProgram() {
|
|
|
58
112
|
program
|
|
59
113
|
.name("ccp")
|
|
60
114
|
.description("Claude Code profile manager")
|
|
61
|
-
.version(
|
|
115
|
+
.version(getPackageVersion());
|
|
62
116
|
program
|
|
63
117
|
.command("list")
|
|
64
118
|
.description("List Claude Code profiles")
|
|
@@ -75,6 +129,8 @@ export function createProgram() {
|
|
|
75
129
|
.argument("<profile>")
|
|
76
130
|
.description("Create an API profile with base URL, token, and model")
|
|
77
131
|
.action(async (profile) => {
|
|
132
|
+
if (!(await ensureProfileCanBeCreated(profile)))
|
|
133
|
+
return;
|
|
78
134
|
console.log(`Create Claude API profile: ${profile}`);
|
|
79
135
|
const baseUrl = await input({ message: "ANTHROPIC_BASE_URL", required: true });
|
|
80
136
|
const token = await password({ message: "ANTHROPIC_AUTH_TOKEN (hidden, Enter to leave placeholder)", mask: "*" });
|
|
@@ -93,6 +149,8 @@ export function createProgram() {
|
|
|
93
149
|
.argument("<profile>")
|
|
94
150
|
.description("Create a login profile that stores a separate Claude Code account login state")
|
|
95
151
|
.action(async (profile) => {
|
|
152
|
+
if (!(await ensureProfileCanBeCreated(profile)))
|
|
153
|
+
return;
|
|
96
154
|
console.log(`Create Claude login profile: ${profile}`);
|
|
97
155
|
console.log("This profile will not set ANTHROPIC_BASE_URL or ANTHROPIC_AUTH_TOKEN.");
|
|
98
156
|
const ok = await confirm({ message: "Create this login profile?", default: true });
|
|
@@ -110,6 +168,8 @@ export function createProgram() {
|
|
|
110
168
|
.argument("<profile>")
|
|
111
169
|
.description("Create a CCR preset-bound profile")
|
|
112
170
|
.action(async (profile) => {
|
|
171
|
+
if (!(await ensureProfileCanBeCreated(profile)))
|
|
172
|
+
return;
|
|
113
173
|
const config = await readCcrConfig();
|
|
114
174
|
const routes = getCcrRouteChoices(config);
|
|
115
175
|
if (routes.length === 0) {
|
|
@@ -249,10 +309,29 @@ export function createProgram() {
|
|
|
249
309
|
});
|
|
250
310
|
program
|
|
251
311
|
.command("sync-session")
|
|
312
|
+
.argument("<first>")
|
|
252
313
|
.allowUnknownOption(true)
|
|
314
|
+
.argument("[syncArgs...]", "Use '<source> to <target>' and optional --all")
|
|
253
315
|
.description("Sync Claude Code sessions between profiles")
|
|
254
|
-
.action(() => {
|
|
255
|
-
|
|
316
|
+
.action(async (first, syncArgs) => {
|
|
317
|
+
const result = await syncSessions({
|
|
318
|
+
first,
|
|
319
|
+
args: syncArgs,
|
|
320
|
+
selectSessions: selectSessionFiles,
|
|
321
|
+
confirmOverwrite: confirmSessionConflict
|
|
322
|
+
});
|
|
323
|
+
if (!result)
|
|
324
|
+
return;
|
|
325
|
+
console.log("Synced current project sessions.");
|
|
326
|
+
console.log("Project: " + result.projectKey);
|
|
327
|
+
console.log("From: " + result.sourceName + " -> " + result.sourceProjectDir);
|
|
328
|
+
console.log("To: " + result.targetName + " -> " + result.targetProjectDir);
|
|
329
|
+
console.log("Selected: " + result.selected);
|
|
330
|
+
console.log("copied=" + result.counts.copied + ", updated=" + result.counts.updated + ", unchanged=" + result.counts.unchanged + ", overwritten=" + result.counts.overwritten + ", conflict=" + result.counts.conflict);
|
|
331
|
+
if (result.conflicts.length > 0) {
|
|
332
|
+
console.log("Conflicts skipped:");
|
|
333
|
+
result.conflicts.forEach((name) => console.log(" " + name));
|
|
334
|
+
}
|
|
256
335
|
});
|
|
257
336
|
program
|
|
258
337
|
.command("ui")
|
package/dist/cli/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,gBAAgB,EACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,cAAc,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,SAAS,YAAY,CAAC,OAAqD;IACzE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAY;IACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7E,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAC9F,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACjF,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,KAAK,CAAC;SACX,WAAW,CAAC,6BAA6B,CAAC;SAC1C,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,2DAA2D,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAClH,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,WAAW,CAAC;SACpB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,+EAA+E,CAAC;SAC5F,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,iCAAiC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,QAAQ,CAAC,iDAAiD,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;YACzB,OAAO,EAAE,kCAAkC;YAC3C,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACzD,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,qDAAqD,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrH,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG,MAAM,QAAQ,CAAC,EAAE,OAAO,EAAE,sEAAsE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACzH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,kBAAkB,CAAC;SAC/B,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,gDAAgD,OAAO,IAAI,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,OAAO,aAAa,EAAE,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,qBAAqB,CAAC;SAClC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,WAAW,CAAC;SACrB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,WAAW,CAAC;SACrB,kBAAkB,CAAC,IAAI,CAAC;SACxB,QAAQ,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;SACtE,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,UAAoB,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC;YAC9B,IAAI,EAAE,OAAO;YACb,UAAU;YACV,oBAAoB,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;gBACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,gEAAgE,WAAW,IAAI,CAAC,CAAC;gBAC7F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE,CAAC,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,CAAC;SACF,CAAC,CAAC;QACH,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,UAAU,CAAC,KAAK,CAAC;SACjB,QAAQ,CAAC,UAAU,CAAC;SACpB,kBAAkB,CAAC,IAAI,CAAC;SACxB,QAAQ,CAAC,gBAAgB,EAAE,iCAAiC,CAAC;SAC7D,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,MAA0B,EAAE,SAAmB,EAAE,EAAE;QAChE,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,SAAS,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,cAAc,CAAC,MAAM,YAAY,EAAE,CAAC,CAAC;gBACrC,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,OAAO,CAAC,QAAQ,GAAG,MAAM,UAAU,EAAE,CAAC;gBACtC,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,eAAe,EAAE,CAAC;gBACxB,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,cAAc,EAAE,CAAC;gBACvB,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,iBAAiB,EAAE,CAAC;gBAC1B,MAAM;YACR,CAAC;YACD,KAAK,IAAI,CAAC;YACV,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,OAAO,CAAC,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBACzD,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAI,QAAQ,CAAC,wBAAwB,MAAM,8DAA8D,CAAC,CAAC;YACnH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,kBAAkB,CAAC,IAAI,CAAC;SACxB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,QAAQ,CAAC,oGAAoG,CAAC,CAAC;IAC3H,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,IAAI,QAAQ,CAAC,iFAAiF,CAAC,CAAC;IACxG,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"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"}
|
package/dist/core/profiles.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type PathContext } from "./paths.js";
|
|
2
2
|
import type { ClaudeSettings, CreateApiProfileInput, CreateLoginProfileInput, CreateCcrProfileInput, ProfileMeta, ProfileSummary, ProfileType } from "./types.js";
|
|
3
3
|
export declare function getProfileDir(name: string, context?: PathContext): string;
|
|
4
|
+
export declare function profileExists(name: string, context?: PathContext): Promise<boolean>;
|
|
4
5
|
export declare function resolveConfigDir(name: string, options?: {
|
|
5
6
|
allowMain?: boolean;
|
|
6
7
|
context?: PathContext;
|
package/dist/core/profiles.js
CHANGED
|
@@ -16,6 +16,10 @@ async function exists(target) {
|
|
|
16
16
|
export function getProfileDir(name, context = {}) {
|
|
17
17
|
return path.join(getProfilesRoot(context), name);
|
|
18
18
|
}
|
|
19
|
+
export async function profileExists(name, context = {}) {
|
|
20
|
+
assertProfileName(name);
|
|
21
|
+
return exists(getProfileDir(name, context));
|
|
22
|
+
}
|
|
19
23
|
export async function resolveConfigDir(name, options = {}) {
|
|
20
24
|
const allowMain = options.allowMain ?? true;
|
|
21
25
|
const context = options.context ?? {};
|
|
@@ -114,9 +118,7 @@ export async function createApiProfile(input, context = {}) {
|
|
|
114
118
|
ANTHROPIC_BASE_URL: input.baseUrl.trim(),
|
|
115
119
|
ANTHROPIC_DEFAULT_HAIKU_MODEL: input.model.trim(),
|
|
116
120
|
ANTHROPIC_DEFAULT_OPUS_MODEL: input.model.trim(),
|
|
117
|
-
ANTHROPIC_DEFAULT_OPUS_MODEL_NAME: input.model.trim(),
|
|
118
121
|
ANTHROPIC_DEFAULT_SONNET_MODEL: input.model.trim(),
|
|
119
|
-
ANTHROPIC_DEFAULT_SONNET_MODEL_NAME: input.model.trim(),
|
|
120
122
|
ANTHROPIC_MODEL: input.model.trim()
|
|
121
123
|
}
|
|
122
124
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/core/profiles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/core/profiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { type PathContext } from "./paths.js";
|
|
2
|
+
export type SyncStatus = "copied" | "updated" | "unchanged" | "overwritten" | "conflict";
|
|
3
|
+
export interface SessionDisplayInfo {
|
|
4
|
+
filePath: string;
|
|
5
|
+
name: string;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
title: string;
|
|
8
|
+
lastWriteTime: Date;
|
|
9
|
+
relativeTime: string;
|
|
10
|
+
sizeKb: number;
|
|
11
|
+
}
|
|
12
|
+
export interface SyncMetaRecord {
|
|
13
|
+
source: string;
|
|
14
|
+
file: string;
|
|
15
|
+
lastSyncedHash: string;
|
|
16
|
+
syncedAt: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SyncMeta {
|
|
19
|
+
version: number;
|
|
20
|
+
projectKey: string;
|
|
21
|
+
updatedAt?: string;
|
|
22
|
+
records: Record<string, SyncMetaRecord>;
|
|
23
|
+
}
|
|
24
|
+
export interface SyncCounts {
|
|
25
|
+
copied: number;
|
|
26
|
+
updated: number;
|
|
27
|
+
unchanged: number;
|
|
28
|
+
overwritten: number;
|
|
29
|
+
conflict: number;
|
|
30
|
+
}
|
|
31
|
+
export interface SyncSessionPlan {
|
|
32
|
+
source: {
|
|
33
|
+
name: string;
|
|
34
|
+
dir: string;
|
|
35
|
+
isMain: boolean;
|
|
36
|
+
};
|
|
37
|
+
target: {
|
|
38
|
+
name: string;
|
|
39
|
+
dir: string;
|
|
40
|
+
isMain: boolean;
|
|
41
|
+
};
|
|
42
|
+
projectKey: string;
|
|
43
|
+
sourceProjectDir: string;
|
|
44
|
+
targetProjectDir: string;
|
|
45
|
+
sessionFiles: SessionDisplayInfo[];
|
|
46
|
+
}
|
|
47
|
+
export interface SyncSessionOptions {
|
|
48
|
+
first: string;
|
|
49
|
+
args: string[];
|
|
50
|
+
cwd?: string;
|
|
51
|
+
context?: PathContext;
|
|
52
|
+
selectSessions?: (sessions: SessionDisplayInfo[]) => Promise<SessionDisplayInfo[]>;
|
|
53
|
+
confirmOverwrite?: (details: {
|
|
54
|
+
sourceFile: string;
|
|
55
|
+
targetFile: string;
|
|
56
|
+
}) => Promise<"yes" | "no" | "all" | "quit">;
|
|
57
|
+
}
|
|
58
|
+
export interface SyncSessionResult {
|
|
59
|
+
projectKey: string;
|
|
60
|
+
sourceName: string;
|
|
61
|
+
targetName: string;
|
|
62
|
+
sourceProjectDir: string;
|
|
63
|
+
targetProjectDir: string;
|
|
64
|
+
selected: number;
|
|
65
|
+
counts: SyncCounts;
|
|
66
|
+
conflicts: string[];
|
|
67
|
+
}
|
|
68
|
+
export declare function parseSelectionText(text: string, max: number): number[];
|
|
69
|
+
export declare function planSyncSession(options: SyncSessionOptions): Promise<SyncSessionPlan & {
|
|
70
|
+
syncAll: boolean;
|
|
71
|
+
}>;
|
|
72
|
+
export declare function syncSessions(options: SyncSessionOptions): Promise<SyncSessionResult | undefined>;
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { cp, mkdir, readdir, readFile, stat, writeFile, copyFile } from "node:fs/promises";
|
|
2
|
+
import crypto from "node:crypto";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { CcpError } from "./errors.js";
|
|
5
|
+
import { getProjectDir, getProjectKey } from "./paths.js";
|
|
6
|
+
import { resolveConfigDir } from "./profiles.js";
|
|
7
|
+
function parseSyncArgs(first, args) {
|
|
8
|
+
if (!first?.trim()) {
|
|
9
|
+
throw new CcpError("Missing sync target. Use 'ccp sync-session <target-profile>' or 'ccp sync-session <source> to <target>'.");
|
|
10
|
+
}
|
|
11
|
+
const syncArgs = [];
|
|
12
|
+
let syncAll = false;
|
|
13
|
+
for (const arg of args) {
|
|
14
|
+
if (arg === "--all") {
|
|
15
|
+
syncAll = true;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
syncArgs.push(arg);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (syncArgs.length === 0) {
|
|
22
|
+
return { sourceName: "main", targetName: first, syncAll };
|
|
23
|
+
}
|
|
24
|
+
if (syncArgs.length === 2 && syncArgs[0].toLowerCase() === "to") {
|
|
25
|
+
return { sourceName: first, targetName: syncArgs[1], syncAll };
|
|
26
|
+
}
|
|
27
|
+
throw new CcpError("Invalid sync syntax. Use 'ccp sync-session <target-profile>' or 'ccp sync-session <source> to <target>'.");
|
|
28
|
+
}
|
|
29
|
+
async function exists(target) {
|
|
30
|
+
try {
|
|
31
|
+
await stat(target);
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
async function fileSha256(filePath) {
|
|
39
|
+
const hash = crypto.createHash("sha256");
|
|
40
|
+
hash.update(await readFile(filePath));
|
|
41
|
+
return hash.digest("hex");
|
|
42
|
+
}
|
|
43
|
+
function syncMetaPath(targetConfigDir, projectKey) {
|
|
44
|
+
return path.join(targetConfigDir, ".ccp-sync", `${projectKey}.json`);
|
|
45
|
+
}
|
|
46
|
+
async function readSyncMeta(metaPath, projectKey) {
|
|
47
|
+
if (!(await exists(metaPath))) {
|
|
48
|
+
return { version: 1, projectKey, records: {} };
|
|
49
|
+
}
|
|
50
|
+
const raw = JSON.parse((await readFile(metaPath, "utf8")).replace(/^/, ""));
|
|
51
|
+
return {
|
|
52
|
+
version: 1,
|
|
53
|
+
projectKey,
|
|
54
|
+
updatedAt: raw.updatedAt,
|
|
55
|
+
records: raw.records ?? {}
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async function writeSyncMeta(metaPath, meta) {
|
|
59
|
+
const records = Object.fromEntries(Object.entries(meta.records).sort(([a], [b]) => a.localeCompare(b)));
|
|
60
|
+
const data = {
|
|
61
|
+
version: 1,
|
|
62
|
+
projectKey: meta.projectKey,
|
|
63
|
+
updatedAt: new Date().toISOString(),
|
|
64
|
+
records
|
|
65
|
+
};
|
|
66
|
+
await mkdir(path.dirname(metaPath), { recursive: true });
|
|
67
|
+
await writeFile(metaPath, `${JSON.stringify(data, null, 2)}\n`, "utf8");
|
|
68
|
+
}
|
|
69
|
+
async function copySessionAssetsMissingOnly(sourceProjectDir, targetProjectDir, sessionName) {
|
|
70
|
+
const sourceAssetDir = path.join(sourceProjectDir, sessionName);
|
|
71
|
+
if (!(await exists(sourceAssetDir))) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const targetAssetDir = path.join(targetProjectDir, sessionName);
|
|
75
|
+
await cp(sourceAssetDir, targetAssetDir, {
|
|
76
|
+
recursive: true,
|
|
77
|
+
force: false,
|
|
78
|
+
errorOnExist: false
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
async function syncSessionFile(sourceFile, targetFile, meta, metaKey, sourceName, forceOverwrite = false) {
|
|
82
|
+
const sourceHash = await fileSha256(sourceFile);
|
|
83
|
+
const sourceNameOnly = path.basename(sourceFile);
|
|
84
|
+
const record = () => {
|
|
85
|
+
meta.records[metaKey] = {
|
|
86
|
+
source: sourceName,
|
|
87
|
+
file: sourceNameOnly,
|
|
88
|
+
lastSyncedHash: sourceHash,
|
|
89
|
+
syncedAt: new Date().toISOString()
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
if (!(await exists(targetFile))) {
|
|
93
|
+
await copyFile(sourceFile, targetFile);
|
|
94
|
+
record();
|
|
95
|
+
return "copied";
|
|
96
|
+
}
|
|
97
|
+
const targetHash = await fileSha256(targetFile);
|
|
98
|
+
const existingRecord = meta.records[metaKey];
|
|
99
|
+
if (sourceHash === targetHash) {
|
|
100
|
+
record();
|
|
101
|
+
return "unchanged";
|
|
102
|
+
}
|
|
103
|
+
if (forceOverwrite) {
|
|
104
|
+
await copyFile(sourceFile, targetFile);
|
|
105
|
+
record();
|
|
106
|
+
return "overwritten";
|
|
107
|
+
}
|
|
108
|
+
if (!existingRecord?.lastSyncedHash) {
|
|
109
|
+
return "conflict";
|
|
110
|
+
}
|
|
111
|
+
if (targetHash === existingRecord.lastSyncedHash) {
|
|
112
|
+
await copyFile(sourceFile, targetFile);
|
|
113
|
+
record();
|
|
114
|
+
return "updated";
|
|
115
|
+
}
|
|
116
|
+
return "conflict";
|
|
117
|
+
}
|
|
118
|
+
function getPlainSessionText(text) {
|
|
119
|
+
return text.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
|
|
120
|
+
}
|
|
121
|
+
function getSessionUserTitleCandidate(content) {
|
|
122
|
+
if (typeof content !== "string") {
|
|
123
|
+
return "";
|
|
124
|
+
}
|
|
125
|
+
if (content.includes("<local-command-caveat>") || content.includes("<local-command-stdout>")) {
|
|
126
|
+
return "";
|
|
127
|
+
}
|
|
128
|
+
const commandName = content.match(/<command-name>\s*([\s\S]*?)\s*<\/command-name>/);
|
|
129
|
+
if (commandName) {
|
|
130
|
+
return getPlainSessionText(commandName[1]);
|
|
131
|
+
}
|
|
132
|
+
return getPlainSessionText(content);
|
|
133
|
+
}
|
|
134
|
+
function limitSessionTitle(title) {
|
|
135
|
+
const plain = getPlainSessionText(title);
|
|
136
|
+
if (!plain)
|
|
137
|
+
return "";
|
|
138
|
+
return plain.length <= 120 ? plain : `${plain.slice(0, 120)}...`;
|
|
139
|
+
}
|
|
140
|
+
function relativeTime(time) {
|
|
141
|
+
const seconds = Math.max(0, Math.floor((Date.now() - time.getTime()) / 1000));
|
|
142
|
+
if (seconds < 60)
|
|
143
|
+
return "just now";
|
|
144
|
+
const minutes = Math.floor(seconds / 60);
|
|
145
|
+
if (minutes < 60)
|
|
146
|
+
return minutes === 1 ? "1 minute ago" : `${minutes} minutes ago`;
|
|
147
|
+
const hours = Math.floor(minutes / 60);
|
|
148
|
+
if (hours < 24)
|
|
149
|
+
return hours === 1 ? "1 hour ago" : `${hours} hours ago`;
|
|
150
|
+
const days = Math.floor(hours / 24);
|
|
151
|
+
if (days < 30)
|
|
152
|
+
return days === 1 ? "1 day ago" : `${days} days ago`;
|
|
153
|
+
const months = Math.floor(days / 30);
|
|
154
|
+
return months === 1 ? "1 month ago" : `${months} months ago`;
|
|
155
|
+
}
|
|
156
|
+
async function getSessionDisplayInfo(filePath) {
|
|
157
|
+
const fileStat = await stat(filePath);
|
|
158
|
+
let aiTitle = "";
|
|
159
|
+
let lastPrompt = "";
|
|
160
|
+
let firstUserTitle = "";
|
|
161
|
+
try {
|
|
162
|
+
const lines = (await readFile(filePath, "utf8")).split(/\r?\n/);
|
|
163
|
+
for (const line of lines) {
|
|
164
|
+
if (!line.trim())
|
|
165
|
+
continue;
|
|
166
|
+
try {
|
|
167
|
+
const obj = JSON.parse(line);
|
|
168
|
+
if (obj.type === "ai-title" && obj.aiTitle) {
|
|
169
|
+
aiTitle = limitSessionTitle(obj.aiTitle);
|
|
170
|
+
}
|
|
171
|
+
else if (obj.type === "last-prompt" && obj.lastPrompt) {
|
|
172
|
+
lastPrompt = limitSessionTitle(obj.lastPrompt);
|
|
173
|
+
}
|
|
174
|
+
else if (obj.type === "user" && obj.message?.content && !firstUserTitle) {
|
|
175
|
+
firstUserTitle = limitSessionTitle(getSessionUserTitleCandidate(obj.message.content));
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// Ignore malformed lines in session logs.
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch {
|
|
184
|
+
// Fall back to generic title if the log cannot be read.
|
|
185
|
+
}
|
|
186
|
+
const title = aiTitle || lastPrompt || firstUserTitle || "(session)";
|
|
187
|
+
const name = path.basename(filePath);
|
|
188
|
+
const sessionId = path.basename(filePath, path.extname(filePath));
|
|
189
|
+
return {
|
|
190
|
+
filePath,
|
|
191
|
+
name,
|
|
192
|
+
sessionId,
|
|
193
|
+
title,
|
|
194
|
+
lastWriteTime: fileStat.mtime,
|
|
195
|
+
relativeTime: relativeTime(fileStat.mtime),
|
|
196
|
+
sizeKb: Math.round((fileStat.size / 1024) * 10) / 10
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
export function parseSelectionText(text, max) {
|
|
200
|
+
const indexes = [];
|
|
201
|
+
const tokens = text.split(/[,\s]+/).filter(Boolean);
|
|
202
|
+
for (const token of tokens) {
|
|
203
|
+
const range = token.match(/^(\d+)-(\d+)$/);
|
|
204
|
+
if (range) {
|
|
205
|
+
const start = Number(range[1]);
|
|
206
|
+
const end = Number(range[2]);
|
|
207
|
+
if (start > end)
|
|
208
|
+
throw new CcpError(`Invalid range '${token}'.`);
|
|
209
|
+
for (let i = start; i <= end; i++) {
|
|
210
|
+
if (i < 1 || i > max)
|
|
211
|
+
throw new CcpError(`Selection '${i}' is out of range.`);
|
|
212
|
+
if (!indexes.includes(i - 1))
|
|
213
|
+
indexes.push(i - 1);
|
|
214
|
+
}
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
if (!/^\d+$/.test(token)) {
|
|
218
|
+
throw new CcpError(`Invalid selection token '${token}'.`);
|
|
219
|
+
}
|
|
220
|
+
const index = Number(token);
|
|
221
|
+
if (index < 1 || index > max)
|
|
222
|
+
throw new CcpError(`Selection '${index}' is out of range.`);
|
|
223
|
+
if (!indexes.includes(index - 1))
|
|
224
|
+
indexes.push(index - 1);
|
|
225
|
+
}
|
|
226
|
+
return indexes;
|
|
227
|
+
}
|
|
228
|
+
export async function planSyncSession(options) {
|
|
229
|
+
const parsed = parseSyncArgs(options.first, options.args);
|
|
230
|
+
const source = await resolveConfigDir(parsed.sourceName, { allowMain: true, context: options.context });
|
|
231
|
+
const target = await resolveConfigDir(parsed.targetName, { allowMain: true, context: options.context });
|
|
232
|
+
if (source.dir.toLowerCase() === target.dir.toLowerCase()) {
|
|
233
|
+
return {
|
|
234
|
+
source,
|
|
235
|
+
target,
|
|
236
|
+
projectKey: getProjectKey(options.cwd ?? options.context?.cwd ?? process.cwd()),
|
|
237
|
+
sourceProjectDir: "",
|
|
238
|
+
targetProjectDir: "",
|
|
239
|
+
sessionFiles: [],
|
|
240
|
+
syncAll: parsed.syncAll
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
const projectKey = getProjectKey(options.cwd ?? options.context?.cwd ?? process.cwd());
|
|
244
|
+
const sourceProjectDir = getProjectDir(source.dir, projectKey);
|
|
245
|
+
const targetProjectDir = getProjectDir(target.dir, projectKey);
|
|
246
|
+
if (!(await exists(sourceProjectDir))) {
|
|
247
|
+
return { source, target, projectKey, sourceProjectDir, targetProjectDir, sessionFiles: [], syncAll: parsed.syncAll };
|
|
248
|
+
}
|
|
249
|
+
const entries = await readdir(sourceProjectDir, { withFileTypes: true });
|
|
250
|
+
const jsonlFiles = entries
|
|
251
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith(".jsonl"))
|
|
252
|
+
.map((entry) => path.join(sourceProjectDir, entry.name))
|
|
253
|
+
.sort((a, b) => a.localeCompare(b));
|
|
254
|
+
const sessionFiles = await Promise.all(jsonlFiles.map(getSessionDisplayInfo));
|
|
255
|
+
sessionFiles.sort((a, b) => b.lastWriteTime.getTime() - a.lastWriteTime.getTime());
|
|
256
|
+
return { source, target, projectKey, sourceProjectDir, targetProjectDir, sessionFiles, syncAll: parsed.syncAll };
|
|
257
|
+
}
|
|
258
|
+
export async function syncSessions(options) {
|
|
259
|
+
const plan = await planSyncSession(options);
|
|
260
|
+
if (plan.source.dir.toLowerCase() === plan.target.dir.toLowerCase()) {
|
|
261
|
+
console.log(`Source and target are the same config: ${plan.source.name}. Nothing to sync.`);
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
if (!plan.sourceProjectDir || plan.sessionFiles.length === 0) {
|
|
265
|
+
console.log("No source session logs for current project.");
|
|
266
|
+
console.log(`Project: ${plan.projectKey}`);
|
|
267
|
+
console.log(`Source: ${plan.sourceProjectDir}`);
|
|
268
|
+
return undefined;
|
|
269
|
+
}
|
|
270
|
+
const selectedFiles = plan.syncAll
|
|
271
|
+
? plan.sessionFiles
|
|
272
|
+
: await options.selectSessions?.(plan.sessionFiles) ?? [];
|
|
273
|
+
if (selectedFiles.length === 0) {
|
|
274
|
+
console.log("Sync cancelled.");
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
await mkdir(plan.targetProjectDir, { recursive: true });
|
|
278
|
+
const metaPath = syncMetaPath(plan.target.dir, plan.projectKey);
|
|
279
|
+
const meta = await readSyncMeta(metaPath, plan.projectKey);
|
|
280
|
+
const counts = { copied: 0, updated: 0, unchanged: 0, overwritten: 0, conflict: 0 };
|
|
281
|
+
const conflicts = [];
|
|
282
|
+
let overwriteAll = false;
|
|
283
|
+
for (const session of [...selectedFiles].sort((a, b) => a.name.localeCompare(b.name))) {
|
|
284
|
+
const targetFile = path.join(plan.targetProjectDir, session.name);
|
|
285
|
+
const metaKey = `${plan.source.name}|${session.name}`;
|
|
286
|
+
let status = await syncSessionFile(session.filePath, targetFile, meta, metaKey, plan.source.name);
|
|
287
|
+
if (status === "conflict") {
|
|
288
|
+
if (!overwriteAll) {
|
|
289
|
+
const answer = await options.confirmOverwrite?.({ sourceFile: session.filePath, targetFile }) ?? "no";
|
|
290
|
+
if (answer === "quit") {
|
|
291
|
+
throw new CcpError("Sync cancelled by user.");
|
|
292
|
+
}
|
|
293
|
+
if (answer === "all") {
|
|
294
|
+
overwriteAll = true;
|
|
295
|
+
}
|
|
296
|
+
if (answer === "yes" || answer === "all") {
|
|
297
|
+
status = await syncSessionFile(session.filePath, targetFile, meta, metaKey, plan.source.name, true);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
status = await syncSessionFile(session.filePath, targetFile, meta, metaKey, plan.source.name, true);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
counts[status]++;
|
|
305
|
+
if (status !== "conflict") {
|
|
306
|
+
await copySessionAssetsMissingOnly(plan.sourceProjectDir, plan.targetProjectDir, session.sessionId);
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
conflicts.push(session.name);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
await writeSyncMeta(metaPath, meta);
|
|
313
|
+
return {
|
|
314
|
+
projectKey: plan.projectKey,
|
|
315
|
+
sourceName: plan.source.name,
|
|
316
|
+
targetName: plan.target.name,
|
|
317
|
+
sourceProjectDir: plan.sourceProjectDir,
|
|
318
|
+
targetProjectDir: plan.targetProjectDir,
|
|
319
|
+
selected: selectedFiles.length,
|
|
320
|
+
counts,
|
|
321
|
+
conflicts
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/core/sessions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "multi-ccp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Cross-platform Claude Code profile manager for API, login, and router workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
11
|
"README.md",
|
|
12
|
+
"README.zh-CN.md",
|
|
12
13
|
"LICENSE",
|
|
13
14
|
"CHANGELOG.md"
|
|
14
15
|
],
|