@kaitranntt/ccs 5.3.0-beta.1 → 5.3.0-beta.3
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/VERSION +1 -1
- package/dist/ccs.js +6 -0
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/auth-handler.d.ts.map +1 -1
- package/dist/cliproxy/auth-handler.js +81 -2
- package/dist/cliproxy/auth-handler.js.map +1 -1
- package/dist/cliproxy/platform-detector.d.ts +2 -2
- package/dist/cliproxy/platform-detector.js +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +6 -3
- package/dist/commands/help-command.js.map +1 -1
- package/dist/commands/profile-command.d.ts +11 -0
- package/dist/commands/profile-command.d.ts.map +1 -0
- package/dist/commands/profile-command.js +407 -0
- package/dist/commands/profile-command.js.map +1 -0
- package/dist/commands/shell-completion-command.d.ts.map +1 -1
- package/dist/commands/shell-completion-command.js +6 -2
- package/dist/commands/shell-completion-command.js.map +1 -1
- package/dist/utils/prompt.d.ts +7 -0
- package/dist/utils/prompt.d.ts.map +1 -1
- package/dist/utils/prompt.js +61 -0
- package/dist/utils/prompt.js.map +1 -1
- package/dist/utils/shell-completion.d.ts +3 -1
- package/dist/utils/shell-completion.d.ts.map +1 -1
- package/dist/utils/shell-completion.js +43 -14
- package/dist/utils/shell-completion.js.map +1 -1
- package/package.json +1 -1
- package/scripts/completion/ccs.bash +31 -1
- package/scripts/completion/ccs.fish +43 -10
- package/scripts/completion/ccs.ps1 +57 -1
- package/scripts/completion/ccs.zsh +57 -1
|
@@ -94,7 +94,7 @@ class ShellCompletionInstaller {
|
|
|
94
94
|
/**
|
|
95
95
|
* Install bash completion
|
|
96
96
|
*/
|
|
97
|
-
installBash() {
|
|
97
|
+
installBash(force = false) {
|
|
98
98
|
const rcFile = path.join(this.homeDir, '.bashrc');
|
|
99
99
|
const completionPath = path.join(this.completionDir, 'ccs.bash');
|
|
100
100
|
if (!fs.existsSync(completionPath)) {
|
|
@@ -107,7 +107,15 @@ class ShellCompletionInstaller {
|
|
|
107
107
|
if (fs.existsSync(rcFile)) {
|
|
108
108
|
const content = fs.readFileSync(rcFile, 'utf8');
|
|
109
109
|
if (content.includes(marker)) {
|
|
110
|
-
|
|
110
|
+
if (!force) {
|
|
111
|
+
return { success: true, alreadyInstalled: true };
|
|
112
|
+
}
|
|
113
|
+
// Force: completion files already updated by ensureCompletionFiles()
|
|
114
|
+
return {
|
|
115
|
+
success: true,
|
|
116
|
+
message: `Updated completion files in ${this.completionDir}`,
|
|
117
|
+
reload: 'source ~/.bashrc',
|
|
118
|
+
};
|
|
111
119
|
}
|
|
112
120
|
}
|
|
113
121
|
// Append to .bashrc
|
|
@@ -121,7 +129,7 @@ class ShellCompletionInstaller {
|
|
|
121
129
|
/**
|
|
122
130
|
* Install zsh completion
|
|
123
131
|
*/
|
|
124
|
-
installZsh() {
|
|
132
|
+
installZsh(force = false) {
|
|
125
133
|
const rcFile = path.join(this.homeDir, '.zshrc');
|
|
126
134
|
const completionPath = path.join(this.completionDir, 'ccs.zsh');
|
|
127
135
|
const zshCompDir = path.join(this.homeDir, '.zsh', 'completion');
|
|
@@ -130,7 +138,7 @@ class ShellCompletionInstaller {
|
|
|
130
138
|
}
|
|
131
139
|
// Create zsh completion directory (with file conflict checking)
|
|
132
140
|
this.ensureDirectory(zshCompDir);
|
|
133
|
-
// Copy to zsh completion directory
|
|
141
|
+
// Copy to zsh completion directory (always update for force)
|
|
134
142
|
const destFile = path.join(zshCompDir, '_ccs');
|
|
135
143
|
fs.copyFileSync(completionPath, destFile);
|
|
136
144
|
const marker = '# CCS shell completion';
|
|
@@ -140,7 +148,15 @@ class ShellCompletionInstaller {
|
|
|
140
148
|
if (fs.existsSync(rcFile)) {
|
|
141
149
|
const content = fs.readFileSync(rcFile, 'utf8');
|
|
142
150
|
if (content.includes(marker)) {
|
|
143
|
-
|
|
151
|
+
if (!force) {
|
|
152
|
+
return { success: true, alreadyInstalled: true };
|
|
153
|
+
}
|
|
154
|
+
// Force: files already updated above
|
|
155
|
+
return {
|
|
156
|
+
success: true,
|
|
157
|
+
message: `Updated ${destFile}`,
|
|
158
|
+
reload: 'source ~/.zshrc',
|
|
159
|
+
};
|
|
144
160
|
}
|
|
145
161
|
}
|
|
146
162
|
// Append to .zshrc
|
|
@@ -154,7 +170,7 @@ class ShellCompletionInstaller {
|
|
|
154
170
|
/**
|
|
155
171
|
* Install fish completion
|
|
156
172
|
*/
|
|
157
|
-
installFish() {
|
|
173
|
+
installFish(force = false) {
|
|
158
174
|
const completionPath = path.join(this.completionDir, 'ccs.fish');
|
|
159
175
|
const fishCompDir = path.join(this.homeDir, '.config', 'fish', 'completions');
|
|
160
176
|
if (!fs.existsSync(completionPath)) {
|
|
@@ -164,6 +180,10 @@ class ShellCompletionInstaller {
|
|
|
164
180
|
this.ensureDirectory(fishCompDir);
|
|
165
181
|
// Copy to fish completion directory (fish auto-loads from here)
|
|
166
182
|
const destFile = path.join(fishCompDir, 'ccs.fish');
|
|
183
|
+
// Check if already installed
|
|
184
|
+
if (fs.existsSync(destFile) && !force) {
|
|
185
|
+
return { success: true, alreadyInstalled: true };
|
|
186
|
+
}
|
|
167
187
|
fs.copyFileSync(completionPath, destFile);
|
|
168
188
|
return {
|
|
169
189
|
success: true,
|
|
@@ -174,7 +194,7 @@ class ShellCompletionInstaller {
|
|
|
174
194
|
/**
|
|
175
195
|
* Install PowerShell completion
|
|
176
196
|
*/
|
|
177
|
-
installPowerShell() {
|
|
197
|
+
installPowerShell(force = false) {
|
|
178
198
|
const profilePath = process.env.PROFILE ||
|
|
179
199
|
path.join(this.homeDir, 'Documents', 'PowerShell', 'Microsoft.PowerShell_profile.ps1');
|
|
180
200
|
const completionPath = path.join(this.completionDir, 'ccs.ps1');
|
|
@@ -191,7 +211,15 @@ class ShellCompletionInstaller {
|
|
|
191
211
|
if (fs.existsSync(profilePath)) {
|
|
192
212
|
const content = fs.readFileSync(profilePath, 'utf8');
|
|
193
213
|
if (content.includes(marker)) {
|
|
194
|
-
|
|
214
|
+
if (!force) {
|
|
215
|
+
return { success: true, alreadyInstalled: true };
|
|
216
|
+
}
|
|
217
|
+
// Force: completion files already updated by ensureCompletionFiles()
|
|
218
|
+
return {
|
|
219
|
+
success: true,
|
|
220
|
+
message: `Updated completion files in ${this.completionDir}`,
|
|
221
|
+
reload: '. $PROFILE',
|
|
222
|
+
};
|
|
195
223
|
}
|
|
196
224
|
}
|
|
197
225
|
// Append to PowerShell profile
|
|
@@ -205,23 +233,24 @@ class ShellCompletionInstaller {
|
|
|
205
233
|
/**
|
|
206
234
|
* Install for detected or specified shell
|
|
207
235
|
*/
|
|
208
|
-
install(shell = null) {
|
|
236
|
+
install(shell = null, options = {}) {
|
|
209
237
|
const targetShell = shell || this.detectShell();
|
|
238
|
+
const { force = false } = options;
|
|
210
239
|
if (!targetShell) {
|
|
211
240
|
throw new Error('Could not detect shell. Please specify: --bash, --zsh, --fish, or --powershell');
|
|
212
241
|
}
|
|
213
|
-
// Ensure completion files exist
|
|
242
|
+
// Ensure completion files exist (always copy latest)
|
|
214
243
|
this.ensureCompletionFiles();
|
|
215
244
|
// Install for target shell
|
|
216
245
|
switch (targetShell) {
|
|
217
246
|
case 'bash':
|
|
218
|
-
return this.installBash();
|
|
247
|
+
return this.installBash(force);
|
|
219
248
|
case 'zsh':
|
|
220
|
-
return this.installZsh();
|
|
249
|
+
return this.installZsh(force);
|
|
221
250
|
case 'fish':
|
|
222
|
-
return this.installFish();
|
|
251
|
+
return this.installFish(force);
|
|
223
252
|
case 'powershell':
|
|
224
|
-
return this.installPowerShell();
|
|
253
|
+
return this.installPowerShell(force);
|
|
225
254
|
default:
|
|
226
255
|
throw new Error(`Unsupported shell: ${targetShell}`);
|
|
227
256
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-completion.js","sourceRoot":"","sources":["../../src/utils/shell-completion.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAYzB;;;GAGG;AACH,MAAa,wBAAwB;IAMnC;QACE,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAEtC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC1C,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;YAAE,OAAO,YAAY,CAAC;QAEtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACvC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAEjD,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAe;QACrC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,0BAA0B;oBAC3D,kDAAkD,CACrD,CAAC;YACJ,CAAC;YACD,kCAAkC;YAClC,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;QAED,uBAAuB;QACvB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,WAAW;
|
|
1
|
+
{"version":3,"file":"shell-completion.js","sourceRoot":"","sources":["../../src/utils/shell-completion.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -18,7 +18,7 @@ _ccs_completion() {
|
|
|
18
18
|
|
|
19
19
|
# Top-level completion (first argument)
|
|
20
20
|
if [[ ${COMP_CWORD} -eq 1 ]]; then
|
|
21
|
-
local commands="auth doctor sync update"
|
|
21
|
+
local commands="auth profile doctor sync update"
|
|
22
22
|
local flags="--help --version --shell-completion -h -v -sc"
|
|
23
23
|
local profiles=""
|
|
24
24
|
|
|
@@ -45,6 +45,36 @@ _ccs_completion() {
|
|
|
45
45
|
return 0
|
|
46
46
|
fi
|
|
47
47
|
|
|
48
|
+
# profile subcommands
|
|
49
|
+
if [[ ${prev} == "profile" ]]; then
|
|
50
|
+
local profile_commands="create list remove --help -h"
|
|
51
|
+
COMPREPLY=( $(compgen -W "${profile_commands}" -- ${cur}) )
|
|
52
|
+
return 0
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
# Completion for profile subcommands
|
|
56
|
+
if [[ ${COMP_WORDS[1]} == "profile" ]]; then
|
|
57
|
+
case "${prev}" in
|
|
58
|
+
remove|delete|rm)
|
|
59
|
+
# Complete with settings profile names
|
|
60
|
+
if [[ -f ~/.ccs/config.json ]]; then
|
|
61
|
+
local profiles=$(jq -r '.profiles | keys[]' ~/.ccs/config.json 2>/dev/null || true)
|
|
62
|
+
COMPREPLY=( $(compgen -W "${profiles}" -- ${cur}) )
|
|
63
|
+
fi
|
|
64
|
+
return 0
|
|
65
|
+
;;
|
|
66
|
+
create)
|
|
67
|
+
# Complete with create flags
|
|
68
|
+
COMPREPLY=( $(compgen -W "--base-url --api-key --model --force --yes -y" -- ${cur}) )
|
|
69
|
+
return 0
|
|
70
|
+
;;
|
|
71
|
+
list)
|
|
72
|
+
# No flags for list
|
|
73
|
+
return 0
|
|
74
|
+
;;
|
|
75
|
+
esac
|
|
76
|
+
fi
|
|
77
|
+
|
|
48
78
|
# Completion for auth subcommands that need profile names
|
|
49
79
|
if [[ ${COMP_WORDS[1]} == "auth" ]]; then
|
|
50
80
|
case "${prev}" in
|
|
@@ -78,22 +78,23 @@ complete -c ccs -s v -l version -d 'Show version information'
|
|
|
78
78
|
complete -c ccs -s sc -l shell-completion -d 'Install shell completion'
|
|
79
79
|
|
|
80
80
|
# Commands - grouped with [cmd] prefix for visual distinction
|
|
81
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a 'auth' -d '[cmd] Manage multiple Claude accounts'
|
|
82
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a '
|
|
83
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a '
|
|
84
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a '
|
|
81
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'auth' -d '[cmd] Manage multiple Claude accounts'
|
|
82
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'profile' -d '[cmd] Manage API profiles (create/remove)'
|
|
83
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'doctor' -d '[cmd] Run health check and diagnostics'
|
|
84
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'sync' -d '[cmd] Sync delegation commands and skills'
|
|
85
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'update' -d '[cmd] Update CCS to latest version'
|
|
85
86
|
|
|
86
87
|
# Model profiles - grouped with [model] prefix for visual distinction
|
|
87
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a 'default' -d '[model] Default Claude Sonnet 4.5'
|
|
88
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a 'glm' -d '[model] GLM-4.6 (cost-optimized)'
|
|
89
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a 'glmt' -d '[model] GLM-4.6 with thinking mode'
|
|
90
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a 'kimi' -d '[model] Kimi for Coding (long-context)'
|
|
88
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'default' -d '[model] Default Claude Sonnet 4.5'
|
|
89
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'glm' -d '[model] GLM-4.6 (cost-optimized)'
|
|
90
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'glmt' -d '[model] GLM-4.6 with thinking mode'
|
|
91
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a 'kimi' -d '[model] Kimi for Coding (long-context)'
|
|
91
92
|
|
|
92
93
|
# Custom model profiles - dynamic with [model] prefix
|
|
93
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a '(__fish_ccs_get_custom_settings_profiles)' -d '[model] Settings-based profile'
|
|
94
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a '(__fish_ccs_get_custom_settings_profiles)' -d '[model] Settings-based profile'
|
|
94
95
|
|
|
95
96
|
# Account profiles - dynamic with [account] prefix
|
|
96
|
-
complete -c ccs -n 'not __fish_seen_subcommand_from auth doctor sync update' -a '(__fish_ccs_get_account_profiles)' -d '[account] Account-based profile'
|
|
97
|
+
complete -c ccs -n 'not __fish_seen_subcommand_from auth profile doctor sync update' -a '(__fish_ccs_get_account_profiles)' -d '[account] Account-based profile'
|
|
97
98
|
|
|
98
99
|
# shell-completion subflags
|
|
99
100
|
complete -c ccs -n '__fish_seen_argument -l shell-completion; or __fish_seen_argument -s sc' -l bash -d 'Install for bash'
|
|
@@ -132,3 +133,35 @@ complete -c ccs -n '__fish_ccs_using_auth_subcommand default' -a '(__fish_ccs_ge
|
|
|
132
133
|
|
|
133
134
|
# doctor command flags
|
|
134
135
|
complete -c ccs -n '__fish_seen_subcommand_from doctor' -s h -l help -d 'Show help for doctor command'
|
|
136
|
+
|
|
137
|
+
# Helper function to check if we're in profile context
|
|
138
|
+
function __fish_ccs_using_profile
|
|
139
|
+
__fish_seen_subcommand_from profile
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
# Helper function to check specific profile subcommand
|
|
143
|
+
function __fish_ccs_using_profile_subcommand
|
|
144
|
+
set -l subcommand $argv[1]
|
|
145
|
+
__fish_ccs_using_profile; and __fish_seen_subcommand_from $subcommand
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# profile subcommands
|
|
149
|
+
complete -c ccs -n '__fish_ccs_using_profile; and not __fish_seen_subcommand_from create list remove' -a 'create' -d 'Create new API profile'
|
|
150
|
+
complete -c ccs -n '__fish_ccs_using_profile; and not __fish_seen_subcommand_from create list remove' -a 'list' -d 'List all profiles'
|
|
151
|
+
complete -c ccs -n '__fish_ccs_using_profile; and not __fish_seen_subcommand_from create list remove' -a 'remove' -d 'Remove a profile'
|
|
152
|
+
|
|
153
|
+
# profile command flags
|
|
154
|
+
complete -c ccs -n '__fish_ccs_using_profile' -s h -l help -d 'Show help for profile commands'
|
|
155
|
+
|
|
156
|
+
# profile create flags
|
|
157
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand create' -l base-url -d 'API base URL'
|
|
158
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand create' -l api-key -d 'API key'
|
|
159
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand create' -l model -d 'Default model'
|
|
160
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand create' -l force -d 'Overwrite existing profile'
|
|
161
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand create' -l yes -d 'Skip prompts'
|
|
162
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand create' -s y -d 'Skip prompts'
|
|
163
|
+
|
|
164
|
+
# profile remove - profile names and flags
|
|
165
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand remove' -a '(__fish_ccs_get_settings_profiles)' -d 'Settings profile'
|
|
166
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand remove' -l yes -d 'Skip confirmation'
|
|
167
|
+
complete -c ccs -n '__fish_ccs_using_profile_subcommand remove' -s y -d 'Skip confirmation'
|
|
@@ -12,8 +12,10 @@
|
|
|
12
12
|
Register-ArgumentCompleter -CommandName ccs -ScriptBlock {
|
|
13
13
|
param($commandName, $wordToComplete, $commandAst, $fakeBoundParameters)
|
|
14
14
|
|
|
15
|
-
$commands = @('auth', 'doctor', 'sync', 'update', '--help', '--version', '--shell-completion', '-h', '-v', '-sc')
|
|
15
|
+
$commands = @('auth', 'profile', 'doctor', 'sync', 'update', '--help', '--version', '--shell-completion', '-h', '-v', '-sc')
|
|
16
16
|
$authCommands = @('create', 'list', 'show', 'remove', 'default', '--help', '-h')
|
|
17
|
+
$profileCommands = @('create', 'list', 'remove', '--help', '-h')
|
|
18
|
+
$profileCreateFlags = @('--base-url', '--api-key', '--model', '--force', '--yes', '-y')
|
|
17
19
|
$shellCompletionFlags = @('--bash', '--zsh', '--fish', '--powershell')
|
|
18
20
|
$listFlags = @('--verbose', '--json')
|
|
19
21
|
$removeFlags = @('--yes', '-y')
|
|
@@ -170,4 +172,58 @@ Register-ArgumentCompleter -CommandName ccs -ScriptBlock {
|
|
|
170
172
|
}
|
|
171
173
|
}
|
|
172
174
|
}
|
|
175
|
+
|
|
176
|
+
# profile subcommand completion
|
|
177
|
+
if ($words[1] -eq 'profile') {
|
|
178
|
+
if ($position -eq 3) {
|
|
179
|
+
# profile subcommands
|
|
180
|
+
$profileCommands | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
|
|
181
|
+
[System.Management.Automation.CompletionResult]::new(
|
|
182
|
+
$_,
|
|
183
|
+
$_,
|
|
184
|
+
'ParameterValue',
|
|
185
|
+
$_
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
} elseif ($position -eq 4) {
|
|
189
|
+
# Profile names or flags for profile subcommands
|
|
190
|
+
switch ($words[2]) {
|
|
191
|
+
'remove' {
|
|
192
|
+
$options = (Get-CcsProfiles -Type settings) + $removeFlags
|
|
193
|
+
$options | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
|
|
194
|
+
[System.Management.Automation.CompletionResult]::new(
|
|
195
|
+
$_,
|
|
196
|
+
$_,
|
|
197
|
+
'ParameterValue',
|
|
198
|
+
$_
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
'create' {
|
|
203
|
+
$profileCreateFlags | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
|
|
204
|
+
[System.Management.Automation.CompletionResult]::new(
|
|
205
|
+
$_,
|
|
206
|
+
$_,
|
|
207
|
+
'ParameterValue',
|
|
208
|
+
$_
|
|
209
|
+
)
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
} elseif ($position -eq 5) {
|
|
214
|
+
# Flags after profile name
|
|
215
|
+
switch ($words[2]) {
|
|
216
|
+
'remove' {
|
|
217
|
+
$removeFlags | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
|
|
218
|
+
[System.Management.Automation.CompletionResult]::new(
|
|
219
|
+
$_,
|
|
220
|
+
$_,
|
|
221
|
+
'ParameterValue',
|
|
222
|
+
$_
|
|
223
|
+
)
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
173
229
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
# Color codes: 0;34=blue, 0;32=green, 0;33=yellow, 2;37=dim white
|
|
17
17
|
# Pattern format: =(#b)(group1)(group2)==color_for_group1=color_for_group2
|
|
18
18
|
# The leading '=' means no color for whole match, then each '=' assigns to each group
|
|
19
|
-
zstyle ':completion:*:*:ccs:*:commands' list-colors '=(#b)(auth|doctor|sync|update)([[:space:]]#--[[:space:]]#*)==0\;34=2\;37'
|
|
19
|
+
zstyle ':completion:*:*:ccs:*:commands' list-colors '=(#b)(auth|profile|doctor|sync|update)([[:space:]]#--[[:space:]]#*)==0\;34=2\;37'
|
|
20
20
|
zstyle ':completion:*:*:ccs:*:model-profiles' list-colors '=(#b)(default|glm|glmt|kimi|[^[:space:]]##)([[:space:]]#--[[:space:]]#*)==0\;32=2\;37'
|
|
21
21
|
zstyle ':completion:*:*:ccs:*:account-profiles' list-colors '=(#b)([^[:space:]]##)([[:space:]]#--[[:space:]]#*)==0\;33=2\;37'
|
|
22
22
|
zstyle ':completion:*:*:ccs:*' group-name ''
|
|
@@ -33,6 +33,7 @@ _ccs() {
|
|
|
33
33
|
# Define top-level commands (padded for alignment)
|
|
34
34
|
commands=(
|
|
35
35
|
'auth:Manage multiple Claude accounts'
|
|
36
|
+
'profile:Manage API profiles (create/remove)'
|
|
36
37
|
'doctor:Run health check and diagnostics'
|
|
37
38
|
'sync:Sync delegation commands and skills'
|
|
38
39
|
'update:Update CCS to latest version'
|
|
@@ -90,6 +91,9 @@ _ccs() {
|
|
|
90
91
|
auth)
|
|
91
92
|
_ccs_auth
|
|
92
93
|
;;
|
|
94
|
+
profile)
|
|
95
|
+
_ccs_profile
|
|
96
|
+
;;
|
|
93
97
|
doctor)
|
|
94
98
|
_arguments \
|
|
95
99
|
'(- *)'{-h,--help}'[Show help for doctor command]'
|
|
@@ -110,6 +114,58 @@ _ccs() {
|
|
|
110
114
|
esac
|
|
111
115
|
}
|
|
112
116
|
|
|
117
|
+
_ccs_profile() {
|
|
118
|
+
local curcontext="$curcontext" state line
|
|
119
|
+
typeset -A opt_args
|
|
120
|
+
|
|
121
|
+
local -a profile_commands settings_profiles
|
|
122
|
+
|
|
123
|
+
# Define profile subcommands
|
|
124
|
+
profile_commands=(
|
|
125
|
+
'create:Create new API profile (interactive)'
|
|
126
|
+
'list:List all profiles'
|
|
127
|
+
'remove:Remove a profile'
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
# Load settings profiles for remove command
|
|
131
|
+
if [[ -f ~/.ccs/config.json ]]; then
|
|
132
|
+
settings_profiles=(${(f)"$(jq -r '.profiles | keys[]' ~/.ccs/config.json 2>/dev/null)"})
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
_arguments -C \
|
|
136
|
+
'(- *)'{-h,--help}'[Show help for profile commands]' \
|
|
137
|
+
'1: :->subcommand' \
|
|
138
|
+
'*:: :->subargs'
|
|
139
|
+
|
|
140
|
+
case $state in
|
|
141
|
+
subcommand)
|
|
142
|
+
_describe -t profile-commands 'profile commands' profile_commands
|
|
143
|
+
;;
|
|
144
|
+
|
|
145
|
+
subargs)
|
|
146
|
+
case $words[1] in
|
|
147
|
+
create)
|
|
148
|
+
_arguments \
|
|
149
|
+
'1:profile name:' \
|
|
150
|
+
'--base-url[API base URL]:url:' \
|
|
151
|
+
'--api-key[API key]:key:' \
|
|
152
|
+
'--model[Default model]:model:' \
|
|
153
|
+
'--force[Overwrite existing profile]' \
|
|
154
|
+
{--yes,-y}'[Skip prompts]'
|
|
155
|
+
;;
|
|
156
|
+
list)
|
|
157
|
+
# No arguments
|
|
158
|
+
;;
|
|
159
|
+
remove|delete|rm)
|
|
160
|
+
_arguments \
|
|
161
|
+
'1:profile:($settings_profiles)' \
|
|
162
|
+
{--yes,-y}'[Skip confirmation]'
|
|
163
|
+
;;
|
|
164
|
+
esac
|
|
165
|
+
;;
|
|
166
|
+
esac
|
|
167
|
+
}
|
|
168
|
+
|
|
113
169
|
_ccs_auth() {
|
|
114
170
|
local curcontext="$curcontext" state line
|
|
115
171
|
typeset -A opt_args
|