ccjk 14.1.9 → 14.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/chunks/agent-teams.mjs +1 -1
  2. package/dist/chunks/api-cli.mjs +1 -1
  3. package/dist/chunks/api-config-selector.mjs +3 -3
  4. package/dist/chunks/ccjk-all.mjs +1 -1
  5. package/dist/chunks/ccjk-mcp.mjs +1 -1
  6. package/dist/chunks/ccjk-setup.mjs +1 -1
  7. package/dist/chunks/ccr.mjs +8 -8
  8. package/dist/chunks/check-updates.mjs +1 -1
  9. package/dist/chunks/claude-code-incremental-manager.mjs +185 -70
  10. package/dist/chunks/claude-config.mjs +1 -1
  11. package/dist/chunks/codex-config-switch.mjs +1 -1
  12. package/dist/chunks/codex-provider-manager.mjs +1 -1
  13. package/dist/chunks/config-switch.mjs +1 -1
  14. package/dist/chunks/config.mjs +2 -1
  15. package/dist/chunks/config2.mjs +1 -1
  16. package/dist/chunks/config3.mjs +1 -1
  17. package/dist/chunks/doctor.mjs +4 -4
  18. package/dist/chunks/features.mjs +3 -3
  19. package/dist/chunks/index10.mjs +1 -1
  20. package/dist/chunks/init.mjs +5 -5
  21. package/dist/chunks/mcp-cli.mjs +2 -2
  22. package/dist/chunks/mcp.mjs +3 -3
  23. package/dist/chunks/package.mjs +1 -1
  24. package/dist/chunks/quick-provider.mjs +1 -1
  25. package/dist/chunks/quick-setup.mjs +5 -5
  26. package/dist/chunks/simple-config.mjs +1 -1
  27. package/dist/chunks/smart-guide.mjs +1 -1
  28. package/dist/chunks/update.mjs +6 -6
  29. package/dist/chunks/zero-config.mjs +7 -4
  30. package/dist/cli.mjs +0 -0
  31. package/dist/index.d.mts +3 -0
  32. package/dist/index.d.ts +3 -0
  33. package/dist/index.mjs +1 -1
  34. package/dist/shared/{ccjk.BJ3Zpjo5.mjs → ccjk.BCzOWT1L.mjs} +3 -2
  35. package/dist/shared/{ccjk.B8oqkakg.mjs → ccjk.BLsIiTqO.mjs} +1 -1
  36. package/dist/shared/{ccjk.Hwoicrh8.mjs → ccjk.BXv8aYs1.mjs} +1 -1
  37. package/dist/shared/{ccjk.B9OuS4xZ.mjs → ccjk.CfKJnpbB.mjs} +1 -1
  38. package/dist/shared/{ccjk.BzxpiEPF.mjs → ccjk.Cgv_cFVX.mjs} +2 -2
  39. package/dist/shared/{ccjk.Di1IYU3u.mjs → ccjk.DDL-4C-k.mjs} +47 -10
  40. package/dist/shared/{ccjk.BEiR3L4C.mjs → ccjk.DOw7Fawt.mjs} +3 -3
  41. package/dist/shared/{ccjk.tI_s2uSh.mjs → ccjk.f3TBLJSt.mjs} +1 -1
  42. package/package.json +43 -40
@@ -1,7 +1,7 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
2
  import a from './index5.mjs';
3
3
  import { ensureI18nInitialized, i18n } from './index2.mjs';
4
- import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
4
+ import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
5
5
  import { writeJsonConfig } from './json-config.mjs';
6
6
  import '../shared/ccjk.BAGoDD49.mjs';
7
7
  import 'node:process';
@@ -31,7 +31,7 @@ import './index3.mjs';
31
31
  import './fs-operations.mjs';
32
32
  import 'node:fs/promises';
33
33
  import './json-config.mjs';
34
- import '../shared/ccjk.Di1IYU3u.mjs';
34
+ import '../shared/ccjk.DDL-4C-k.mjs';
35
35
  import './platform.mjs';
36
36
  import './main.mjs';
37
37
  import 'module';
@@ -31,13 +31,13 @@ import 'node:fs/promises';
31
31
  import './json-config.mjs';
32
32
  import '../shared/ccjk.RyizuzOI.mjs';
33
33
  import 'node:child_process';
34
- import '../shared/ccjk.Di1IYU3u.mjs';
34
+ import '../shared/ccjk.DDL-4C-k.mjs';
35
35
  import './platform.mjs';
36
36
  import './main.mjs';
37
37
  import 'module';
38
38
  import 'node:stream';
39
- import '../shared/ccjk.BzxpiEPF.mjs';
40
- import '../shared/ccjk.BJ3Zpjo5.mjs';
39
+ import '../shared/ccjk.Cgv_cFVX.mjs';
40
+ import '../shared/ccjk.BCzOWT1L.mjs';
41
41
  import '../shared/ccjk.BFQ7yr5S.mjs';
42
42
  import '../shared/ccjk.DZ2LLOa-.mjs';
43
43
  import '../shared/ccjk.DeWpAShp.mjs';
@@ -43,7 +43,7 @@ import './index3.mjs';
43
43
  import './fs-operations.mjs';
44
44
  import 'node:fs/promises';
45
45
  import './json-config.mjs';
46
- import '../shared/ccjk.Di1IYU3u.mjs';
46
+ import '../shared/ccjk.DDL-4C-k.mjs';
47
47
  import './platform.mjs';
48
48
  import './main.mjs';
49
49
  import 'module';
@@ -34,7 +34,7 @@ import './index3.mjs';
34
34
  import './fs-operations.mjs';
35
35
  import 'node:fs/promises';
36
36
  import './json-config.mjs';
37
- import '../shared/ccjk.Di1IYU3u.mjs';
37
+ import '../shared/ccjk.DDL-4C-k.mjs';
38
38
  import './main.mjs';
39
39
  import 'module';
40
40
  import 'node:stream';
@@ -40,7 +40,7 @@ import './index3.mjs';
40
40
  import './fs-operations.mjs';
41
41
  import 'node:fs/promises';
42
42
  import './json-config.mjs';
43
- import '../shared/ccjk.Di1IYU3u.mjs';
43
+ import '../shared/ccjk.DDL-4C-k.mjs';
44
44
  import './platform.mjs';
45
45
  import './main.mjs';
46
46
  import 'module';
@@ -34,7 +34,7 @@ import './json-config.mjs';
34
34
  import '../shared/ccjk.RyizuzOI.mjs';
35
35
  import './config.mjs';
36
36
  import 'node:child_process';
37
- import '../shared/ccjk.Di1IYU3u.mjs';
37
+ import '../shared/ccjk.DDL-4C-k.mjs';
38
38
  import './platform.mjs';
39
39
  import './main.mjs';
40
40
  import 'module';
@@ -48,8 +48,8 @@ import './prompts.mjs';
48
48
  import '../shared/ccjk.DZ2LLOa-.mjs';
49
49
  import './code-type-resolver.mjs';
50
50
  import './features.mjs';
51
- import '../shared/ccjk.BzxpiEPF.mjs';
52
- import '../shared/ccjk.BJ3Zpjo5.mjs';
51
+ import '../shared/ccjk.Cgv_cFVX.mjs';
52
+ import '../shared/ccjk.BCzOWT1L.mjs';
53
53
  import '../shared/ccjk.CbWVbtb9.mjs';
54
54
  import './simple-config.mjs';
55
55
  import '../shared/ccjk.DbigonEQ.mjs';
@@ -62,9 +62,9 @@ import './config2.mjs';
62
62
  import '../shared/ccjk.DFRPtmK_.mjs';
63
63
  import './auto-updater.mjs';
64
64
  import './version-checker.mjs';
65
- import '../shared/ccjk.Hwoicrh8.mjs';
65
+ import '../shared/ccjk.BXv8aYs1.mjs';
66
66
  import './installer.mjs';
67
- import '../shared/ccjk.B8oqkakg.mjs';
67
+ import '../shared/ccjk.BLsIiTqO.mjs';
68
68
  import '../shared/ccjk.B2U7DsPy.mjs';
69
69
  import '../shared/ccjk.Bq8TqZG_.mjs';
70
70
  import './commands.mjs';
@@ -73,10 +73,10 @@ import './config-switch.mjs';
73
73
  import './doctor.mjs';
74
74
  import './api-providers.mjs';
75
75
  import '../shared/ccjk.DsZsc4LR.mjs';
76
- import '../shared/ccjk.BEiR3L4C.mjs';
76
+ import '../shared/ccjk.DOw7Fawt.mjs';
77
77
  import '../shared/ccjk.J8YiPsOw.mjs';
78
- import '../shared/ccjk.B9OuS4xZ.mjs';
79
- import '../shared/ccjk.tI_s2uSh.mjs';
78
+ import '../shared/ccjk.CfKJnpbB.mjs';
79
+ import '../shared/ccjk.f3TBLJSt.mjs';
80
80
  import './notification.mjs';
81
81
  import '../shared/ccjk.DcMvE7lf.mjs';
82
82
  import '../shared/ccjk.D0g2ABGg.mjs';
@@ -42,7 +42,7 @@ import '../shared/ccjk.DZ2LLOa-.mjs';
42
42
  import './version-checker.mjs';
43
43
  import '../shared/ccjk.CxpGa6MC.mjs';
44
44
  import './config.mjs';
45
- import '../shared/ccjk.Di1IYU3u.mjs';
45
+ import '../shared/ccjk.DDL-4C-k.mjs';
46
46
  import '../shared/ccjk.BFQ7yr5S.mjs';
47
47
  import './prompts.mjs';
48
48
  import '../shared/ccjk.gDEDGD_t.mjs';
@@ -6,7 +6,7 @@ import { C as ClaudeCodeConfigManager } from './config.mjs';
6
6
  import { r as resolveClaudeFamilyModelSlots } from '../shared/ccjk.B2U7DsPy.mjs';
7
7
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
8
8
  import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
9
- import { v as validateApiKey } from '../shared/ccjk.BzxpiEPF.mjs';
9
+ import { v as validateApiKey } from '../shared/ccjk.Cgv_cFVX.mjs';
10
10
  import '../shared/ccjk.BAGoDD49.mjs';
11
11
  import 'node:readline';
12
12
  import 'stream';
@@ -34,13 +34,13 @@ import 'node:fs/promises';
34
34
  import './json-config.mjs';
35
35
  import '../shared/ccjk.RyizuzOI.mjs';
36
36
  import 'node:child_process';
37
- import '../shared/ccjk.Di1IYU3u.mjs';
37
+ import '../shared/ccjk.DDL-4C-k.mjs';
38
38
  import './platform.mjs';
39
39
  import './main.mjs';
40
40
  import 'module';
41
41
  import 'node:stream';
42
42
  import '../shared/ccjk.DeWpAShp.mjs';
43
- import '../shared/ccjk.BJ3Zpjo5.mjs';
43
+ import '../shared/ccjk.BCzOWT1L.mjs';
44
44
 
45
45
  function getAuthTypeLabel(authType) {
46
46
  ensureI18nInitialized();
@@ -70,7 +70,9 @@ async function configureIncrementalManagement() {
70
70
  const config = ClaudeCodeConfigManager.readConfig();
71
71
  if (!config || !config.profiles || Object.keys(config.profiles).length === 0) {
72
72
  await handleAddProfile();
73
- await syncMyclaudeProfilesIfNeeded();
73
+ if (!isClavueRuntime()) {
74
+ await syncMyclaudeProfilesIfNeeded();
75
+ }
74
76
  return;
75
77
  }
76
78
  const profiles = Object.values(config.profiles);
@@ -122,13 +124,130 @@ async function promptContinueAdding() {
122
124
  async function addProfileDirect() {
123
125
  ensureI18nInitialized();
124
126
  await handleAddProfile();
125
- await syncMyclaudeProfilesIfNeeded();
127
+ if (!isClavueRuntime()) {
128
+ await syncMyclaudeProfilesIfNeeded();
129
+ }
126
130
  }
127
131
  function getProviderDefaultModels(provider) {
128
132
  return resolveClaudeFamilyModelSlots({
129
133
  defaultModels: provider?.claudeCode?.defaultModels
130
134
  });
131
135
  }
136
+ function isClavueRuntime() {
137
+ return readZcfConfig()?.codeToolType === "clavue";
138
+ }
139
+ function getDefaultModelsForRouteMode(mode, provider) {
140
+ if (mode === "official") {
141
+ return {
142
+ primaryModel: "claude-sonnet-4-6",
143
+ haikuModel: "claude-haiku-4-5-20251001",
144
+ sonnetModel: "claude-sonnet-4-6",
145
+ opusModel: "claude-opus-4-6"
146
+ };
147
+ }
148
+ if (mode === "openai-native") {
149
+ if (provider?.claudeCode?.defaultModels?.length) {
150
+ const defaults = getProviderDefaultModels(provider);
151
+ return {
152
+ primaryModel: defaults.primaryModel || "gpt-5-codex",
153
+ haikuModel: defaults.haikuModel || defaults.primaryModel || "gpt-5-codex",
154
+ sonnetModel: defaults.sonnetModel || defaults.primaryModel || "gpt-5-codex",
155
+ opusModel: defaults.opusModel || defaults.primaryModel || "gpt-5-codex"
156
+ };
157
+ }
158
+ return resolveClaudeFamilyModelSlots({ selectedModel: "gpt-5-codex" });
159
+ }
160
+ return {
161
+ primaryModel: "gpt-5-codex",
162
+ haikuModel: "claude-haiku-4-5-20251001",
163
+ sonnetModel: "gpt-5-codex",
164
+ opusModel: "claude-opus-4-6"
165
+ };
166
+ }
167
+ function toLegacyProviderMode(mode) {
168
+ return mode === "openai-native" ? "openai-native" : mode === "ccr-proxy" ? "ccr-proxy" : "official";
169
+ }
170
+ async function promptModelRouteSelection(provider) {
171
+ const isZh = i18n.language === "zh-CN";
172
+ const { mode } = await inquirer.prompt([{
173
+ type: "list",
174
+ name: "mode",
175
+ message: isZh ? "\u8BF7\u9009\u62E9\u6A21\u578B\u8DEF\u7531\u6A21\u5F0F:" : "Select model routing mode:",
176
+ choices: addNumbersToChoices([
177
+ {
178
+ name: isZh ? "OpenAI / GPT \u6A21\u578B\uFF08GPT-5.x\u3001Codex\uFF09" : "OpenAI / GPT models (GPT-5.x, Codex)",
179
+ value: "openai-native"
180
+ },
181
+ {
182
+ name: isZh ? "Claude \u6A21\u578B\uFF08Anthropic / Claude \u517C\u5BB9\uFF09" : "Claude models (Anthropic / Claude compatible)",
183
+ value: "official"
184
+ },
185
+ {
186
+ name: isZh ? "\u6DF7\u5408\u6A21\u578B\uFF08OpenAI + Claude \u5206\u69FD\uFF09" : "Hybrid models (OpenAI + Claude slots)",
187
+ value: "ccr-proxy"
188
+ }
189
+ ]),
190
+ default: "openai-native"
191
+ }]);
192
+ const defaults = getDefaultModelsForRouteMode(mode, provider);
193
+ const { promptCustomModels } = await import('./features.mjs');
194
+ const models = await promptCustomModels(
195
+ defaults.primaryModel,
196
+ defaults.haikuModel,
197
+ defaults.sonnetModel,
198
+ defaults.opusModel
199
+ );
200
+ return { mode: toLegacyProviderMode(mode), models };
201
+ }
202
+ function toMyclaudeProviderProfile(profile, routeSelection) {
203
+ return {
204
+ id: profile.id || ClaudeCodeConfigManager.generateProfileId(profile.name),
205
+ name: profile.name,
206
+ provider: profile.provider || "custom",
207
+ apiKey: profile.apiKey,
208
+ baseUrl: profile.baseUrl,
209
+ model: profile.primaryModel,
210
+ fastModel: profile.defaultHaikuModel,
211
+ authType: profile.authType,
212
+ primaryModel: profile.primaryModel,
213
+ defaultHaikuModel: profile.defaultHaikuModel,
214
+ defaultSonnetModel: profile.defaultSonnetModel,
215
+ defaultOpusModel: profile.defaultOpusModel,
216
+ mode: routeSelection.mode
217
+ };
218
+ }
219
+ function fromClavueProviderProfile(profile) {
220
+ const routing = profile.modelRouting;
221
+ return {
222
+ id: profile.provenance?.kind === "imported" && profile.provenance.sourceId === "ccjk" && typeof profile.provenance.externalProfileId === "string" ? profile.provenance.externalProfileId : profile.id,
223
+ name: profile.name,
224
+ provider: profile.providerId || "custom",
225
+ baseUrl: profile.baseUrl,
226
+ authType: profile.authType,
227
+ model: routing?.primaryModel,
228
+ fastModel: routing?.smallFastModel,
229
+ primaryModel: routing?.primaryModel,
230
+ defaultHaikuModel: routing?.smallFastModel,
231
+ defaultSonnetModel: routing?.generalModel || routing?.subagentModel,
232
+ defaultOpusModel: routing?.planModel,
233
+ mode: profile.modelMode === "openai_native" ? "openai-native" : profile.modelMode === "hybrid_compatible" ? "ccr-proxy" : "official"
234
+ };
235
+ }
236
+ async function saveClavueNativeProfile(profile, routeSelection, setAsDefault) {
237
+ const { readClavueConfig, setMyclaudeProviderProfiles } = await import('./config.mjs').then(function (n) { return n.P; });
238
+ const config = readClavueConfig();
239
+ const activeClavueProfileId = config?.clavueActiveProviderProfileId;
240
+ const existingManagedProfiles = (config?.clavueProviderProfiles || []).filter((existing) => existing.provenance?.kind === "imported" && existing.provenance.sourceId === "ccjk").map(fromClavueProviderProfile);
241
+ const activeManagedProfileId = existingManagedProfiles.find((existing) => {
242
+ return existing.id === activeClavueProfileId || `ccjk-${existing.id}` === activeClavueProfileId;
243
+ })?.id;
244
+ const nextProfile = toMyclaudeProviderProfile(profile, routeSelection);
245
+ const profiles = [
246
+ ...existingManagedProfiles.filter((existing) => existing.id !== nextProfile.id),
247
+ nextProfile
248
+ ];
249
+ setMyclaudeProviderProfiles(profiles, setAsDefault ? nextProfile.id : activeManagedProfileId || activeClavueProfileId);
250
+ }
132
251
  async function handleAddProfile() {
133
252
  console.log(a.green(`
134
253
  ${i18n.t("multi-config:addingNewProfile")}`));
@@ -218,17 +337,8 @@ ${i18n.t("multi-config:addingNewProfile")}`));
218
337
  }
219
338
  }
220
339
  ]);
221
- let modelConfig = null;
222
- {
223
- const { promptCustomModels } = await import('./features.mjs');
224
- const defaults = getProviderDefaultModels(selectedProviderPreset);
225
- modelConfig = await promptCustomModels(
226
- defaults.primaryModel,
227
- defaults.haikuModel,
228
- defaults.sonnetModel,
229
- defaults.opusModel
230
- );
231
- }
340
+ const routeSelection = await promptModelRouteSelection(selectedProviderPreset);
341
+ const modelConfig = routeSelection.models;
232
342
  const setAsDefault = await promptBoolean({
233
343
  message: i18n.t("multi-config:setAsDefaultPrompt"),
234
344
  defaultValue: true
@@ -256,66 +366,71 @@ ${i18n.t("multi-config:addingNewProfile")}`));
256
366
  if (modelConfig.opusModel.trim())
257
367
  profile.defaultOpusModel = modelConfig.opusModel.trim();
258
368
  }
259
- const existingProfile = ClaudeCodeConfigManager.getProfileByName(profile.name);
260
- if (existingProfile) {
261
- const overwrite = await promptBoolean({
262
- message: i18n.t("multi-config:profileDuplicatePrompt", {
263
- name: profile.name,
264
- source: i18n.t("multi-config:existingConfig")
265
- }),
266
- defaultValue: false
267
- });
268
- if (!overwrite) {
269
- console.log(a.yellow(i18n.t("multi-config:profileDuplicateSkipped", { name: profile.name })));
270
- const shouldContinue2 = await promptContinueAdding();
271
- if (shouldContinue2) {
272
- await handleAddProfile();
273
- }
274
- return;
275
- }
276
- const updateResult = await ClaudeCodeConfigManager.updateProfile(existingProfile.id, {
277
- name: profile.name,
278
- authType: profile.authType,
279
- provider: profile.provider,
280
- apiKey: profile.apiKey,
281
- baseUrl: profile.baseUrl,
282
- primaryModel: profile.primaryModel,
283
- defaultHaikuModel: profile.defaultHaikuModel,
284
- defaultSonnetModel: profile.defaultSonnetModel,
285
- defaultOpusModel: profile.defaultOpusModel
286
- });
287
- if (updateResult.success) {
288
- console.log(a.green(i18n.t("multi-config:profileUpdated", { name: profile.name })));
289
- if (updateResult.backupPath) {
290
- console.log(a.gray(i18n.t("common:backupCreated", { path: updateResult.backupPath })));
369
+ if (isClavueRuntime()) {
370
+ await saveClavueNativeProfile(profile, routeSelection, setAsDefault);
371
+ console.log(a.green(i18n.t("multi-config:profileAdded", { name: profile.name })));
372
+ } else {
373
+ const existingProfile = ClaudeCodeConfigManager.getProfileByName(profile.name);
374
+ if (existingProfile) {
375
+ const overwrite = await promptBoolean({
376
+ message: i18n.t("multi-config:profileDuplicatePrompt", {
377
+ name: profile.name,
378
+ source: i18n.t("multi-config:existingConfig")
379
+ }),
380
+ defaultValue: false
381
+ });
382
+ if (!overwrite) {
383
+ console.log(a.yellow(i18n.t("multi-config:profileDuplicateSkipped", { name: profile.name })));
384
+ const shouldContinue2 = await promptContinueAdding();
385
+ if (shouldContinue2) {
386
+ await handleAddProfile();
387
+ }
388
+ return;
291
389
  }
292
- if (setAsDefault) {
293
- const switchResult = await ClaudeCodeConfigManager.switchProfile(existingProfile.id);
294
- if (switchResult.success) {
295
- console.log(a.green(i18n.t("multi-config:profileSetAsDefault", { name: profile.name })));
296
- await ClaudeCodeConfigManager.applyProfileSettings({ ...profile, id: existingProfile.id });
390
+ const updateResult = await ClaudeCodeConfigManager.updateProfile(existingProfile.id, {
391
+ name: profile.name,
392
+ authType: profile.authType,
393
+ provider: profile.provider,
394
+ apiKey: profile.apiKey,
395
+ baseUrl: profile.baseUrl,
396
+ primaryModel: profile.primaryModel,
397
+ defaultHaikuModel: profile.defaultHaikuModel,
398
+ defaultSonnetModel: profile.defaultSonnetModel,
399
+ defaultOpusModel: profile.defaultOpusModel
400
+ });
401
+ if (updateResult.success) {
402
+ console.log(a.green(i18n.t("multi-config:profileUpdated", { name: profile.name })));
403
+ if (updateResult.backupPath) {
404
+ console.log(a.gray(i18n.t("common:backupCreated", { path: updateResult.backupPath })));
297
405
  }
406
+ if (setAsDefault) {
407
+ const switchResult = await ClaudeCodeConfigManager.switchProfile(existingProfile.id);
408
+ if (switchResult.success) {
409
+ console.log(a.green(i18n.t("multi-config:profileSetAsDefault", { name: profile.name })));
410
+ await ClaudeCodeConfigManager.applyProfileSettings({ ...profile, id: existingProfile.id });
411
+ }
412
+ }
413
+ } else {
414
+ console.log(a.red(i18n.t("multi-config:profileUpdateFailed", { error: updateResult.error || "" })));
298
415
  }
299
416
  } else {
300
- console.log(a.red(i18n.t("multi-config:profileUpdateFailed", { error: updateResult.error || "" })));
301
- }
302
- } else {
303
- const result = await ClaudeCodeConfigManager.addProfile(profile);
304
- if (result.success) {
305
- const runtimeProfile = result.addedProfile || { ...profile, id: profileId };
306
- console.log(a.green(i18n.t("multi-config:profileAdded", { name: runtimeProfile.name })));
307
- if (result.backupPath) {
308
- console.log(a.gray(i18n.t("common:backupCreated", { path: result.backupPath })));
309
- }
310
- if (setAsDefault) {
311
- const switchResult = await ClaudeCodeConfigManager.switchProfile(runtimeProfile.id);
312
- if (switchResult.success) {
313
- console.log(a.green(i18n.t("multi-config:profileSetAsDefault", { name: runtimeProfile.name })));
314
- await ClaudeCodeConfigManager.applyProfileSettings(runtimeProfile);
417
+ const result = await ClaudeCodeConfigManager.addProfile(profile);
418
+ if (result.success) {
419
+ const runtimeProfile = result.addedProfile || { ...profile, id: profileId };
420
+ console.log(a.green(i18n.t("multi-config:profileAdded", { name: runtimeProfile.name })));
421
+ if (result.backupPath) {
422
+ console.log(a.gray(i18n.t("common:backupCreated", { path: result.backupPath })));
315
423
  }
424
+ if (setAsDefault) {
425
+ const switchResult = await ClaudeCodeConfigManager.switchProfile(runtimeProfile.id);
426
+ if (switchResult.success) {
427
+ console.log(a.green(i18n.t("multi-config:profileSetAsDefault", { name: runtimeProfile.name })));
428
+ await ClaudeCodeConfigManager.applyProfileSettings(runtimeProfile);
429
+ }
430
+ }
431
+ } else {
432
+ console.log(a.red(i18n.t("multi-config:profileAddFailed", { error: result.error })));
316
433
  }
317
- } else {
318
- console.log(a.red(i18n.t("multi-config:profileAddFailed", { error: result.error })));
319
434
  }
320
435
  }
321
436
  const shouldContinue = await promptContinueAdding();
@@ -1,5 +1,5 @@
1
1
  import { SETTINGS_FILE } from './constants.mjs';
2
- import { n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
2
+ import { n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
3
3
  import { exists, ensureDir } from './fs-operations.mjs';
4
4
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
5
5
  import { x as deepMerge } from './config.mjs';
@@ -40,7 +40,7 @@ import 'node:stream';
40
40
  import './ccjk-config.mjs';
41
41
  import './index3.mjs';
42
42
  import './config.mjs';
43
- import '../shared/ccjk.Di1IYU3u.mjs';
43
+ import '../shared/ccjk.DDL-4C-k.mjs';
44
44
  import './platform.mjs';
45
45
  import './prompts.mjs';
46
46
  import '../shared/ccjk.gDEDGD_t.mjs';
@@ -37,7 +37,7 @@ import './fs-operations.mjs';
37
37
  import 'node:fs/promises';
38
38
  import './json-config.mjs';
39
39
  import './config.mjs';
40
- import '../shared/ccjk.Di1IYU3u.mjs';
40
+ import '../shared/ccjk.DDL-4C-k.mjs';
41
41
  import './platform.mjs';
42
42
  import '../shared/ccjk.BFQ7yr5S.mjs';
43
43
  import './prompts.mjs';
@@ -33,7 +33,7 @@ import 'node:fs/promises';
33
33
  import './json-config.mjs';
34
34
  import '../shared/ccjk.RyizuzOI.mjs';
35
35
  import 'node:child_process';
36
- import '../shared/ccjk.Di1IYU3u.mjs';
36
+ import '../shared/ccjk.DDL-4C-k.mjs';
37
37
  import './platform.mjs';
38
38
  import './main.mjs';
39
39
  import 'module';
@@ -8,7 +8,7 @@ import { chmodSync } from 'node:fs';
8
8
  import { execSync } from 'node:child_process';
9
9
  import process__default from 'node:process';
10
10
  import { readDefaultTomlConfig, createDefaultTomlConfig, writeTomlConfig } from './ccjk-config.mjs';
11
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
11
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings, a as applyTrustedOperatorPermissions } from '../shared/ccjk.DDL-4C-k.mjs';
12
12
  import { ensureDir, exists, copyFile, copyDir, writeFileAtomic } from './fs-operations.mjs';
13
13
  import { readJsonConfig, writeJsonConfig, backupJsonConfig } from './json-config.mjs';
14
14
  import { j as join, d as dirname } from '../shared/ccjk.bQ7Dh1g4.mjs';
@@ -1946,6 +1946,7 @@ function syncMcpPermissions(codeTool) {
1946
1946
  ...settings.permissions || {},
1947
1947
  allow: [...nonManagedPerms, ...mcpPerms]
1948
1948
  };
1949
+ applyTrustedOperatorPermissions(settings);
1949
1950
  normalizeClaudeFamilySettings(settings);
1950
1951
  writeJsonConfig(settingsPath, settings);
1951
1952
  }
@@ -8,7 +8,7 @@ import { d as dayjs } from '../shared/ccjk.RyizuzOI.mjs';
8
8
  import { i as inquirer } from './index6.mjs';
9
9
  import { ensureI18nInitialized, i18n } from './index2.mjs';
10
10
  import { y as clearLegacyTopLevelRuntimeSettings, z as setPrimaryApiKey, A as addCompletedOnboarding, b as backupExistingConfig } from './config.mjs';
11
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
11
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
12
12
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
13
13
  import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
14
14
  import { j as join } from '../shared/ccjk.bQ7Dh1g4.mjs';
@@ -4,7 +4,7 @@ import a from './index5.mjs';
4
4
  import { i as inquirer } from './index6.mjs';
5
5
  import { getApiProviderPresets } from './api-providers.mjs';
6
6
  import { i18n } from './index2.mjs';
7
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
7
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
8
8
  import { b as backupExistingConfig } from './config.mjs';
9
9
  import '../shared/ccjk.BAGoDD49.mjs';
10
10
  import 'node:readline';
@@ -7,12 +7,12 @@ import { SETTINGS_FILE, CLAUDE_DIR, CODEX_DIR, CODEX_CONFIG_FILE, getCodeToolRun
7
7
  import { i18n } from './index2.mjs';
8
8
  import { g as getPermissionManager } from '../shared/ccjk.DsZsc4LR.mjs';
9
9
  import { i as isCcrInstalled } from '../shared/ccjk.DFRPtmK_.mjs';
10
- import { i as inspectClaudeFamilyCoreFeatures } from '../shared/ccjk.BEiR3L4C.mjs';
10
+ import { i as inspectClaudeFamilyCoreFeatures } from '../shared/ccjk.DOw7Fawt.mjs';
11
11
  import { r as readCodexConfig, g as readCodexGoalsFeatureEnabled } from './codex.mjs';
12
12
  import { b as backupExistingConfig, n as copyConfigFiles } from './config.mjs';
13
13
  import { c as commandExists } from './platform.mjs';
14
14
  import { P as ProviderHealthMonitor } from '../shared/ccjk.J8YiPsOw.mjs';
15
- import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
15
+ import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
16
16
  import { platform, userInfo, homedir } from 'node:os';
17
17
  import ora from './index8.mjs';
18
18
  import { exec as q } from './main.mjs';
@@ -42,11 +42,11 @@ import './version-checker.mjs';
42
42
  import '../shared/ccjk.CxpGa6MC.mjs';
43
43
  import 'module';
44
44
  import 'node:stream';
45
- import '../shared/ccjk.B8oqkakg.mjs';
45
+ import '../shared/ccjk.BLsIiTqO.mjs';
46
46
  import 'node:fs/promises';
47
47
  import './json-config.mjs';
48
48
  import '../shared/ccjk.RyizuzOI.mjs';
49
- import '../shared/ccjk.BJ3Zpjo5.mjs';
49
+ import '../shared/ccjk.BCzOWT1L.mjs';
50
50
  import './ccjk-config.mjs';
51
51
  import '../shared/ccjk.BBtCGd_g.mjs';
52
52
  import './index3.mjs';
@@ -7,9 +7,9 @@ import { a as getExistingModelConfig, c as getExistingCustomModelConfig, u as up
7
7
  import { SUPPORTED_LANGS, LANG_LABELS } from './constants.mjs';
8
8
  import { ensureI18nInitialized, i18n, changeLanguage } from './index2.mjs';
9
9
  import { readZcfConfig, updateZcfConfig } from './ccjk-config.mjs';
10
- import { m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.BzxpiEPF.mjs';
10
+ import { m as modifyApiConfigPartially, v as validateApiKey, f as formatApiKeyDisplay } from '../shared/ccjk.Cgv_cFVX.mjs';
11
11
  import { s as selectMcpServices } from '../shared/ccjk.CbWVbtb9.mjs';
12
- import { c as configureOutputStyle } from '../shared/ccjk.BJ3Zpjo5.mjs';
12
+ import { c as configureOutputStyle } from '../shared/ccjk.BCzOWT1L.mjs';
13
13
  import { i as isWindows } from './platform.mjs';
14
14
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
15
15
  import { openSettingsJson, importRecommendedPermissions, importRecommendedEnv } from './simple-config.mjs';
@@ -32,7 +32,7 @@ import 'string_decoder';
32
32
  import 'node:url';
33
33
  import '../shared/ccjk.RyizuzOI.mjs';
34
34
  import 'node:child_process';
35
- import '../shared/ccjk.Di1IYU3u.mjs';
35
+ import '../shared/ccjk.DDL-4C-k.mjs';
36
36
  import './fs-operations.mjs';
37
37
  import 'node:fs/promises';
38
38
  import './json-config.mjs';
@@ -28,7 +28,7 @@ import { configSwitchCommand } from './config-switch.mjs';
28
28
  import process__default from 'node:process';
29
29
  import { readFile, writeFileAtomic, ensureDir, exists, readJsonFile } from './fs-operations.mjs';
30
30
  import { workspaceDiagnostics, doctor } from './doctor.mjs';
31
- import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.B9OuS4xZ.mjs';
31
+ import { a as mcpList, c as mcpUninstall, m as mcpInstall, d as mcpTrending, b as mcpSearch } from '../shared/ccjk.CfKJnpbB.mjs';
32
32
  import { notificationCommand } from './notification.mjs';
33
33
  import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
34
34
  import { uninstall } from './uninstall.mjs';
@@ -13,22 +13,22 @@ import { i as runCodexFullInit } from './codex.mjs';
13
13
  import { p as parseOrchestrationLevel, a as resolveStartupCodeType, r as resolveCodeType, w as writeOrchestrationPolicy } from './code-type-resolver.mjs';
14
14
  import { exec } from 'node:child_process';
15
15
  import { promisify } from 'node:util';
16
- import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
16
+ import { n as normalizeClaudeFamilySettings, r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
17
17
  import { exists } from './fs-operations.mjs';
18
18
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
19
19
  import { i as isWindows, w as wrapCommandWithSudo, b as isTermux } from './platform.mjs';
20
- import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.Hwoicrh8.mjs';
21
- import { m as modifyApiConfigPartially, c as configureApiCompletely, f as formatApiKeyDisplay } from '../shared/ccjk.BzxpiEPF.mjs';
20
+ import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.BXv8aYs1.mjs';
21
+ import { m as modifyApiConfigPartially, c as configureApiCompletely, f as formatApiKeyDisplay } from '../shared/ccjk.Cgv_cFVX.mjs';
22
22
  import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.DGllfVCZ.mjs';
23
23
  import { getInstallationStatus, installMyclaude, installClaudeCode } from './installer.mjs';
24
24
  import { s as selectMcpServices } from '../shared/ccjk.CbWVbtb9.mjs';
25
- import { c as configureOutputStyle } from '../shared/ccjk.BJ3Zpjo5.mjs';
25
+ import { c as configureOutputStyle } from '../shared/ccjk.BCzOWT1L.mjs';
26
26
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
27
27
  import { resolveAiOutputLanguage } from './prompts.mjs';
28
28
  import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
29
29
  import { p as promptBoolean } from '../shared/ccjk.DZ2LLOa-.mjs';
30
30
  import { checkClaudeCodeVersionAndPrompt } from './version-checker.mjs';
31
- import { W as WORKFLOW_CONFIG_BASE, s as selectAndInstallWorkflows } from '../shared/ccjk.B8oqkakg.mjs';
31
+ import { W as WORKFLOW_CONFIG_BASE, s as selectAndInstallWorkflows } from '../shared/ccjk.BLsIiTqO.mjs';
32
32
  import { r as resolveClaudeFamilyModelSlots } from '../shared/ccjk.B2U7DsPy.mjs';
33
33
  import { c as checkSuperpowersInstalled, i as installSuperpowers } from '../shared/ccjk.Bq8TqZG_.mjs';
34
34
 
@@ -1,7 +1,7 @@
1
1
  import a from './index5.mjs';
2
2
  import { g as getMcpServices, r as readMcpConfig } from './config.mjs';
3
3
  import { i18n } from './index2.mjs';
4
- import { i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.tI_s2uSh.mjs';
4
+ import { i as installMcpService, u as uninstallMcpService } from '../shared/ccjk.f3TBLJSt.mjs';
5
5
  import '../shared/ccjk.BAGoDD49.mjs';
6
6
  import 'node:url';
7
7
  import '../shared/ccjk.RyizuzOI.mjs';
@@ -31,7 +31,7 @@ import './index3.mjs';
31
31
  import './fs-operations.mjs';
32
32
  import 'node:fs/promises';
33
33
  import './json-config.mjs';
34
- import '../shared/ccjk.Di1IYU3u.mjs';
34
+ import '../shared/ccjk.DDL-4C-k.mjs';
35
35
  import './platform.mjs';
36
36
  import './main.mjs';
37
37
  import 'module';
@@ -6,7 +6,7 @@ import 'node:child_process';
6
6
  import 'node:process';
7
7
  import { M as MCP_SERVICE_TIERS, i as isCoreService, g as getServicesByTier, c as checkMcpPerformance, f as formatPerformanceWarning, a as calculateResourceUsage, b as getOptimizationSuggestions, d as getMcpTierConfig } from './mcp-performance.mjs';
8
8
  import { r as readMcpConfig, e as backupMcpConfig, w as writeMcpConfig, M as MCP_SERVICE_CONFIGS } from './config.mjs';
9
- export { m as mcpInstall, a as mcpList, b as mcpSearch, c as mcpUninstall } from '../shared/ccjk.B9OuS4xZ.mjs';
9
+ export { m as mcpInstall, a as mcpList, b as mcpSearch, c as mcpUninstall } from '../shared/ccjk.CfKJnpbB.mjs';
10
10
  import { r as readCodexConfig, d as backupCodexComplete, w as writeCodexConfig, c as applyCodexPlatformCommand } from './codex.mjs';
11
11
  import { i as isWindows, k as getSystemRoot } from './platform.mjs';
12
12
  import '../shared/ccjk.BAGoDD49.mjs';
@@ -34,8 +34,8 @@ import 'child_process';
34
34
  import 'node:path';
35
35
  import 'buffer';
36
36
  import 'string_decoder';
37
- import '../shared/ccjk.Di1IYU3u.mjs';
38
- import '../shared/ccjk.tI_s2uSh.mjs';
37
+ import '../shared/ccjk.DDL-4C-k.mjs';
38
+ import '../shared/ccjk.f3TBLJSt.mjs';
39
39
  import './index8.mjs';
40
40
  import '../shared/ccjk.DeWpAShp.mjs';
41
41
  import '../shared/ccjk.CxpGa6MC.mjs';
@@ -1,3 +1,3 @@
1
- const version = "14.1.9";
1
+ const version = "14.1.11";
2
2
 
3
3
  export { version };
@@ -6,7 +6,7 @@ import { c as createApiClient } from '../shared/ccjk.D6ycHbak.mjs';
6
6
  import { readZcfConfig } from './ccjk-config.mjs';
7
7
  import { E as setMyclaudeProviderProfiles, j as configureApi, F as overwriteModelSettings } from './config.mjs';
8
8
  import { r as resolveClaudeFamilyModelSlots } from '../shared/ccjk.B2U7DsPy.mjs';
9
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
9
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
10
10
  import { a as switchToProvider } from './codex.mjs';
11
11
  import { addProviderToExisting } from './codex-provider-manager.mjs';
12
12
  import { readJsonConfig, writeJsonConfig } from './json-config.mjs';
@@ -37,7 +37,7 @@ import 'node:url';
37
37
  import '../shared/ccjk.BBtCGd_g.mjs';
38
38
  import './index3.mjs';
39
39
  import './config.mjs';
40
- import '../shared/ccjk.Di1IYU3u.mjs';
40
+ import '../shared/ccjk.DDL-4C-k.mjs';
41
41
  import './banner.mjs';
42
42
  import './config2.mjs';
43
43
  import '../shared/ccjk.DZ2LLOa-.mjs';
@@ -50,13 +50,13 @@ import '../shared/ccjk.CxpGa6MC.mjs';
50
50
  import './codex.mjs';
51
51
  import '../shared/ccjk.BFQ7yr5S.mjs';
52
52
  import './prompts.mjs';
53
- import '../shared/ccjk.Hwoicrh8.mjs';
54
- import '../shared/ccjk.BzxpiEPF.mjs';
55
- import '../shared/ccjk.BJ3Zpjo5.mjs';
53
+ import '../shared/ccjk.BXv8aYs1.mjs';
54
+ import '../shared/ccjk.Cgv_cFVX.mjs';
55
+ import '../shared/ccjk.BCzOWT1L.mjs';
56
56
  import '../shared/ccjk.DGllfVCZ.mjs';
57
57
  import './installer.mjs';
58
58
  import '../shared/ccjk.CbWVbtb9.mjs';
59
- import '../shared/ccjk.B8oqkakg.mjs';
59
+ import '../shared/ccjk.BLsIiTqO.mjs';
60
60
  import '../shared/ccjk.B2U7DsPy.mjs';
61
61
  import '../shared/ccjk.Bq8TqZG_.mjs';
62
62
 
@@ -1,7 +1,7 @@
1
1
  import { readFileSync, existsSync } from 'node:fs';
2
2
  import { fileURLToPath } from 'node:url';
3
3
  import { exec as q } from './main.mjs';
4
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
4
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
5
5
  import { ensureDir, writeFileAtomic } from './fs-operations.mjs';
6
6
  import { o as mergeAndCleanPermissions } from './config.mjs';
7
7
  import { g as getPlatform } from './platform.mjs';
@@ -1,6 +1,6 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { readFile, writeFile } from 'node:fs/promises';
3
- import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
3
+ import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
4
4
  import './constants.mjs';
5
5
  import 'node:os';
6
6
  import './index2.mjs';
@@ -7,15 +7,15 @@ import { i18n } from './index2.mjs';
7
7
  import { displayBanner } from './banner.mjs';
8
8
  import { readZcfConfig, updateZcfConfig } from './ccjk-config.mjs';
9
9
  import { b as runCodexUpdate } from './codex.mjs';
10
- import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.Hwoicrh8.mjs';
11
- import { u as updatePromptOnly } from '../shared/ccjk.BzxpiEPF.mjs';
10
+ import { n as needsMigration, m as migrateSettingsForTokenRetrieval, d as displayMigrationResult, p as promptMigration } from '../shared/ccjk.BXv8aYs1.mjs';
11
+ import { u as updatePromptOnly } from '../shared/ccjk.Cgv_cFVX.mjs';
12
12
  import { a as handleExitPromptError, h as handleGeneralError } from '../shared/ccjk.DGllfVCZ.mjs';
13
- import { a as installMcpServices } from '../shared/ccjk.tI_s2uSh.mjs';
13
+ import { a as installMcpServices } from '../shared/ccjk.f3TBLJSt.mjs';
14
14
  import { resolveAiOutputLanguage } from './prompts.mjs';
15
15
  import { g as getRuntimeVersion } from '../shared/ccjk.gDEDGD_t.mjs';
16
- import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.Di1IYU3u.mjs';
16
+ import { r as resolveClaudeFamilySettingsTarget } from '../shared/ccjk.DDL-4C-k.mjs';
17
17
  import { checkClaudeCodeVersionAndPrompt } from './version-checker.mjs';
18
- import { s as selectAndInstallWorkflows } from '../shared/ccjk.B8oqkakg.mjs';
18
+ import { s as selectAndInstallWorkflows } from '../shared/ccjk.BLsIiTqO.mjs';
19
19
  import '../shared/ccjk.BAGoDD49.mjs';
20
20
  import 'node:readline';
21
21
  import 'stream';
@@ -50,7 +50,7 @@ import '../shared/ccjk.DeWpAShp.mjs';
50
50
  import '../shared/ccjk.CxpGa6MC.mjs';
51
51
  import '../shared/ccjk.BFQ7yr5S.mjs';
52
52
  import '../shared/ccjk.DZ2LLOa-.mjs';
53
- import '../shared/ccjk.BJ3Zpjo5.mjs';
53
+ import '../shared/ccjk.BCzOWT1L.mjs';
54
54
 
55
55
  const ccjkVersion = getRuntimeVersion();
56
56
  function resolveCodeToolType(optionValue, savedValue) {
@@ -8,8 +8,8 @@ import { d as dirname } from '../shared/ccjk.bQ7Dh1g4.mjs';
8
8
  import { isCodeToolType, isClaudeFamilyCodeTool, CODEX_CONFIG_FILE, ZCF_CONFIG_FILE } from './constants.mjs';
9
9
  import { i18n } from './index2.mjs';
10
10
  import { readZcfConfig, buildUpdatedTomlConfig, stringifyTomlConfig } from './ccjk-config.mjs';
11
- import { e as ensureClaudeFamilyCoreFeatures } from '../shared/ccjk.BEiR3L4C.mjs';
12
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from '../shared/ccjk.Di1IYU3u.mjs';
11
+ import { e as ensureClaudeFamilyCoreFeatures } from '../shared/ccjk.DOw7Fawt.mjs';
12
+ import { r as resolveClaudeFamilySettingsTarget, a as applyTrustedOperatorPermissions, n as normalizeClaudeFamilySettings } from '../shared/ccjk.DDL-4C-k.mjs';
13
13
  import { h as buildCodexGoalsFeatureConfigContent } from './codex.mjs';
14
14
  import { a as addNumbersToChoices } from '../shared/ccjk.BFQ7yr5S.mjs';
15
15
  import '../shared/ccjk.BAGoDD49.mjs';
@@ -39,7 +39,7 @@ import './platform.mjs';
39
39
  import './main.mjs';
40
40
  import 'module';
41
41
  import 'node:stream';
42
- import '../shared/ccjk.B8oqkakg.mjs';
42
+ import '../shared/ccjk.BLsIiTqO.mjs';
43
43
  import '../shared/ccjk.DFRPtmK_.mjs';
44
44
  import './auto-updater.mjs';
45
45
  import './index8.mjs';
@@ -47,7 +47,7 @@ import '../shared/ccjk.DeWpAShp.mjs';
47
47
  import '../shared/ccjk.DZ2LLOa-.mjs';
48
48
  import './version-checker.mjs';
49
49
  import '../shared/ccjk.CxpGa6MC.mjs';
50
- import '../shared/ccjk.BJ3Zpjo5.mjs';
50
+ import '../shared/ccjk.BCzOWT1L.mjs';
51
51
  import './prompts.mjs';
52
52
  import '../shared/ccjk.gDEDGD_t.mjs';
53
53
 
@@ -630,6 +630,9 @@ function applyPreset(preset, currentSettings) {
630
630
  ...existingPermissions,
631
631
  ...preset.permissions.filter((permission) => !existingPermissions.includes(permission))
632
632
  ];
633
+ if (preset.id === "dev" || preset.id === "max") {
634
+ applyTrustedOperatorPermissions(newSettings);
635
+ }
633
636
  if (preset.env) {
634
637
  newSettings.env = { ...newSettings.env };
635
638
  for (const [key, value] of Object.entries(preset.env)) {
package/dist/cli.mjs CHANGED
File without changes
package/dist/index.d.mts CHANGED
@@ -3946,7 +3946,10 @@ interface ClaudeSettings {
3946
3946
  /** Permissions configuration */
3947
3947
  permissions?: {
3948
3948
  allow?: string[];
3949
+ ask?: string[];
3949
3950
  deny?: string[];
3951
+ defaultMode?: 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'auto' | string;
3952
+ trustedOperatorMode?: boolean;
3950
3953
  };
3951
3954
  /** Chat configuration */
3952
3955
  chat?: {
package/dist/index.d.ts CHANGED
@@ -3946,7 +3946,10 @@ interface ClaudeSettings {
3946
3946
  /** Permissions configuration */
3947
3947
  permissions?: {
3948
3948
  allow?: string[];
3949
+ ask?: string[];
3949
3950
  deny?: string[];
3951
+ defaultMode?: 'default' | 'acceptEdits' | 'bypassPermissions' | 'plan' | 'auto' | string;
3952
+ trustedOperatorMode?: boolean;
3950
3953
  };
3951
3954
  /** Chat configuration */
3952
3955
  chat?: {
package/dist/index.mjs CHANGED
@@ -47,7 +47,7 @@ import './chunks/index3.mjs';
47
47
  import './chunks/fs-operations.mjs';
48
48
  import 'node:fs/promises';
49
49
  import './chunks/json-config.mjs';
50
- import './shared/ccjk.Di1IYU3u.mjs';
50
+ import './shared/ccjk.DDL-4C-k.mjs';
51
51
  import './chunks/main.mjs';
52
52
  import 'module';
53
53
 
@@ -3,7 +3,7 @@ import a from '../chunks/index5.mjs';
3
3
  import { i as inquirer } from '../chunks/index6.mjs';
4
4
  import { ensureI18nInitialized, i18n } from '../chunks/index2.mjs';
5
5
  import { updateZcfConfig } from '../chunks/ccjk-config.mjs';
6
- import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from './ccjk.Di1IYU3u.mjs';
6
+ import { r as resolveClaudeFamilySettingsTarget, n as normalizeClaudeFamilySettings } from './ccjk.DDL-4C-k.mjs';
7
7
  import { exists, removeFile, ensureDir, copyFile } from '../chunks/fs-operations.mjs';
8
8
  import { readJsonConfig, writeJsonConfig } from '../chunks/json-config.mjs';
9
9
  import { o as mergeAndCleanPermissions } from '../chunks/config.mjs';
@@ -97,8 +97,9 @@ function setGlobalDefaultOutputStyle(styleId, codeTool) {
97
97
  const updatedSettings = {
98
98
  ...existingSettings,
99
99
  outputStyle: styleId,
100
- // Ensure clean permissions
100
+ // Ensure clean permissions without dropping trusted-operator mode fields.
101
101
  permissions: {
102
+ ...existingSettings.permissions || {},
102
103
  allow: cleanedPermissions
103
104
  }
104
105
  };
@@ -4,7 +4,7 @@ import { fileURLToPath } from 'node:url';
4
4
  import a from '../chunks/index5.mjs';
5
5
  import { i as inquirer } from '../chunks/index6.mjs';
6
6
  import { ensureI18nInitialized, i18n } from '../chunks/index2.mjs';
7
- import { r as resolveClaudeFamilySettingsTarget } from './ccjk.Di1IYU3u.mjs';
7
+ import { r as resolveClaudeFamilySettingsTarget } from './ccjk.DDL-4C-k.mjs';
8
8
  import { j as join, d as dirname } from './ccjk.bQ7Dh1g4.mjs';
9
9
 
10
10
  const WORKFLOW_CONFIG_BASE = [
@@ -1,6 +1,6 @@
1
1
  import a from '../chunks/index5.mjs';
2
2
  import { ensureI18nInitialized, i18n } from '../chunks/index2.mjs';
3
- import { r as resolveClaudeFamilySettingsTarget, h as hasInvalidStatusLineConfig, n as normalizeClaudeFamilySettings } from './ccjk.Di1IYU3u.mjs';
3
+ import { r as resolveClaudeFamilySettingsTarget, h as hasInvalidStatusLineConfig, n as normalizeClaudeFamilySettings } from './ccjk.DDL-4C-k.mjs';
4
4
  import { b as backupExistingConfig } from '../chunks/config.mjs';
5
5
  import { exists } from '../chunks/fs-operations.mjs';
6
6
  import { readJsonConfig, writeJsonConfig } from '../chunks/json-config.mjs';
@@ -2,7 +2,7 @@ import a from '../chunks/index5.mjs';
2
2
  import { i as inquirer } from '../chunks/index6.mjs';
3
3
  import { M as MCP_SERVICE_CONFIGS } from '../chunks/config.mjs';
4
4
  import { i18n } from '../chunks/index2.mjs';
5
- import { d as displayInstalledMcpServices, b as isMcpServiceInstalled, i as installMcpService, u as uninstallMcpService } from './ccjk.tI_s2uSh.mjs';
5
+ import { d as displayInstalledMcpServices, b as isMcpServiceInstalled, i as installMcpService, u as uninstallMcpService } from './ccjk.f3TBLJSt.mjs';
6
6
  import { existsSync, unlinkSync, statSync, mkdirSync, readFileSync } from 'node:fs';
7
7
  import { homedir } from 'node:os';
8
8
  import { CLOUD_ENDPOINTS } from '../chunks/constants.mjs';
@@ -2,9 +2,9 @@ import a from '../chunks/index5.mjs';
2
2
  import { i as inquirer } from '../chunks/index6.mjs';
3
3
  import { ensureI18nInitialized, i18n } from '../chunks/index2.mjs';
4
4
  import { i as getExistingApiConfig, j as configureApi, B as switchToOfficialLogin, b as backupExistingConfig, D as applyAiLanguageDirective } from '../chunks/config.mjs';
5
- import { c as configureOutputStyle } from './ccjk.BJ3Zpjo5.mjs';
5
+ import { c as configureOutputStyle } from './ccjk.BCzOWT1L.mjs';
6
6
  import { a as addNumbersToChoices } from './ccjk.BFQ7yr5S.mjs';
7
- import { r as resolveClaudeFamilySettingsTarget } from './ccjk.Di1IYU3u.mjs';
7
+ import { r as resolveClaudeFamilySettingsTarget } from './ccjk.DDL-4C-k.mjs';
8
8
 
9
9
  function validateApiKey(apiKey) {
10
10
  if (!apiKey || apiKey.trim() === "") {
@@ -2,9 +2,36 @@ import { CLAVUE_CONFIG_FILE, CLAVUE_SETTINGS_FILE, CLAVUE_DIR, ClAUDE_CONFIG_FIL
2
2
  import { readZcfConfig } from '../chunks/ccjk-config.mjs';
3
3
  import { j as join } from './ccjk.bQ7Dh1g4.mjs';
4
4
 
5
+ const TRUSTED_OPERATOR_ASK_RULES = [
6
+ "Bash(git push:*)",
7
+ "Bash(rm:*)",
8
+ "Bash(rm -rf:*)",
9
+ "Bash(git push --force:*)",
10
+ "Bash(git reset --hard:*)",
11
+ "Bash(npm publish:*)",
12
+ "Bash(npm login:*)",
13
+ "Bash(docker:*)",
14
+ "Bash(kubectl:*)",
15
+ "Bash(terraform apply:*)",
16
+ "Bash(gh release:*)",
17
+ "Bash(git tag:*)",
18
+ "Bash(gh pr merge:*)"
19
+ ];
5
20
  function hasOwn(object, key) {
6
21
  return Object.prototype.hasOwnProperty.call(object, key);
7
22
  }
23
+ function stringArray(value) {
24
+ return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
25
+ }
26
+ function mergeStringArray(existing, additions) {
27
+ const merged = stringArray(existing);
28
+ for (const item of additions) {
29
+ if (!merged.includes(item)) {
30
+ merged.push(item);
31
+ }
32
+ }
33
+ return merged;
34
+ }
8
35
  function isValidStatusLineConfig(value) {
9
36
  return Boolean(
10
37
  value && typeof value === "object" && !Array.isArray(value) && value.type === "command" && typeof value.command === "string"
@@ -20,18 +47,28 @@ function normalizeClaudeFamilySettings(settings) {
20
47
  return settings;
21
48
  }
22
49
  const mutableSettings = settings;
23
- if (!hasOwn(mutableSettings, "statusLine")) {
24
- return settings;
50
+ if (hasOwn(mutableSettings, "statusLine")) {
51
+ const statusLine = mutableSettings.statusLine;
52
+ if (statusLine && typeof statusLine === "object" && !Array.isArray(statusLine) && typeof statusLine.command === "string") {
53
+ mutableSettings.statusLine = {
54
+ ...statusLine,
55
+ type: "command"
56
+ };
57
+ } else {
58
+ delete mutableSettings.statusLine;
59
+ }
25
60
  }
26
- const statusLine = mutableSettings.statusLine;
27
- if (statusLine && typeof statusLine === "object" && !Array.isArray(statusLine) && typeof statusLine.command === "string") {
28
- mutableSettings.statusLine = {
29
- ...statusLine,
30
- type: "command"
31
- };
61
+ return settings;
62
+ }
63
+ function applyTrustedOperatorPermissions(settings) {
64
+ if (!settings || typeof settings !== "object" || Array.isArray(settings)) {
32
65
  return settings;
33
66
  }
34
- delete mutableSettings.statusLine;
67
+ const mutableSettings = settings;
68
+ mutableSettings.permissions = mutableSettings.permissions && typeof mutableSettings.permissions === "object" && !Array.isArray(mutableSettings.permissions) ? mutableSettings.permissions : {};
69
+ mutableSettings.permissions.defaultMode = "bypassPermissions";
70
+ mutableSettings.permissions.trustedOperatorMode = true;
71
+ mutableSettings.permissions.ask = mergeStringArray(mutableSettings.permissions.ask, TRUSTED_OPERATOR_ASK_RULES);
35
72
  return settings;
36
73
  }
37
74
 
@@ -60,4 +97,4 @@ function resolveClaudeFamilySettingsTarget(codeTool) {
60
97
  };
61
98
  }
62
99
 
63
- export { hasInvalidStatusLineConfig as h, normalizeClaudeFamilySettings as n, resolveClaudeFamilySettingsTarget as r };
100
+ export { applyTrustedOperatorPermissions as a, hasInvalidStatusLineConfig as h, normalizeClaudeFamilySettings as n, resolveClaudeFamilySettingsTarget as r };
@@ -1,11 +1,11 @@
1
1
  import { existsSync, readdirSync } from 'node:fs';
2
2
  import { r as readMcpConfig, f as fixWindowsMcpConfig, m as mergeMcpServers, w as writeMcpConfig, q as syncMcpPermissions, M as MCP_SERVICE_CONFIGS, h as buildMcpServerConfig } from '../chunks/config.mjs';
3
- import { s as selectAndInstallWorkflows, W as WORKFLOW_CONFIG_BASE } from './ccjk.B8oqkakg.mjs';
3
+ import { s as selectAndInstallWorkflows, W as WORKFLOW_CONFIG_BASE } from './ccjk.BLsIiTqO.mjs';
4
4
  import { i as isCcrInstalled, a as installCcr } from './ccjk.DFRPtmK_.mjs';
5
5
  import { readJsonConfig } from '../chunks/json-config.mjs';
6
- import { a as copyOutputStyles, s as setGlobalDefaultOutputStyle, g as getAvailableOutputStyles } from './ccjk.BJ3Zpjo5.mjs';
6
+ import { a as copyOutputStyles, s as setGlobalDefaultOutputStyle, g as getAvailableOutputStyles } from './ccjk.BCzOWT1L.mjs';
7
7
  import { c as commandExists } from '../chunks/platform.mjs';
8
- import { r as resolveClaudeFamilySettingsTarget } from './ccjk.Di1IYU3u.mjs';
8
+ import { r as resolveClaudeFamilySettingsTarget } from './ccjk.DDL-4C-k.mjs';
9
9
  import { j as join } from './ccjk.bQ7Dh1g4.mjs';
10
10
 
11
11
  const DEFAULT_CONFIG_LANG = "en";
@@ -6,7 +6,7 @@ import { ensureI18nInitialized, i18n } from '../chunks/index2.mjs';
6
6
  import { r as readCodexConfig, c as applyCodexPlatformCommand, w as writeCodexConfig } from '../chunks/codex.mjs';
7
7
  import { exists } from '../chunks/fs-operations.mjs';
8
8
  import { i as isWindows, k as getSystemRoot } from '../chunks/platform.mjs';
9
- import { r as resolveClaudeFamilySettingsTarget } from './ccjk.Di1IYU3u.mjs';
9
+ import { r as resolveClaudeFamilySettingsTarget } from './ccjk.DDL-4C-k.mjs';
10
10
 
11
11
  function detectActiveTool() {
12
12
  const hasClavueConfig = exists(CLAVUE_CONFIG_FILE) || exists(CLAVUE_SETTINGS_FILE);
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "ccjk",
3
3
  "type": "module",
4
- "version": "14.1.9",
4
+ "version": "14.1.11",
5
+ "packageManager": "pnpm@10.17.1",
5
6
  "description": "Production-ready AI dev environment for Claude Code, Codex, and modern coding workflows with 30-second onboarding, persistent memory, Agent Teams, remote control, and capability discovery.",
6
7
  "author": {
7
8
  "name": "CCJK Team",
@@ -80,6 +81,46 @@
80
81
  "engines": {
81
82
  "node": ">=20"
82
83
  },
84
+ "scripts": {
85
+ "dev": "tsx ./src/cli.ts",
86
+ "build": "pnpm build:release:deps && pnpm build:root",
87
+ "build:root": "unbuild",
88
+ "build:release:deps": "pnpm --filter @ccjk/wire build && pnpm --filter @ccjk/evolution build",
89
+ "start": "node bin/ccjk.mjs",
90
+ "typecheck": "pnpm build:release:deps && pnpm typecheck:root",
91
+ "typecheck:root": "tsc --noEmit",
92
+ "release:verify": "node scripts/release-verify.mjs",
93
+ "release:verify:full": "node scripts/release-verify.mjs --with-tests",
94
+ "prepublishOnly": "node scripts/validate-prepublish.mjs && pnpm contract:check && pnpm build",
95
+ "lint": "eslint",
96
+ "lint:fix": "eslint --fix",
97
+ "test": "vitest",
98
+ "test:ui": "vitest --ui",
99
+ "test:coverage": "vitest run --coverage",
100
+ "test:run": "vitest run",
101
+ "test:release": "vitest run src/commands/menu/index.test.ts src/commands/menu/main-menu.test.ts src/utils/tool-update-scheduler.test.ts tests/commands/api-config-selector.test.ts tests/commands/init.silent.test.ts tests/commands/onboarding-wizard.test.ts tests/commands/research.test.ts tests/utils/banner.test.ts tests/utils/code-type-resolver.test.ts tests/utils/memory-feature.test.ts",
102
+ "test:watch": "vitest watch",
103
+ "test:e2e": "NODE_ENV=test vitest --config vitest.e2e.config.ts",
104
+ "test:e2e:run": "NODE_ENV=test vitest run --config vitest.e2e.config.ts",
105
+ "test:e2e:ui": "NODE_ENV=test vitest --config vitest.e2e.config.ts --ui",
106
+ "test:e2e:coverage": "NODE_ENV=test vitest run --config vitest.e2e.config.ts --coverage",
107
+ "test:e2e:debug": "NODE_ENV=test CCJK_E2E_DEBUG=true vitest --config vitest.e2e.config.ts",
108
+ "test:integration": "NODE_ENV=test vitest --config vitest.integration.config.ts",
109
+ "test:integration:run": "NODE_ENV=test vitest run --config vitest.integration.config.ts",
110
+ "test:integration:ui": "NODE_ENV=test vitest --config vitest.integration.config.ts --ui",
111
+ "test:integration:coverage": "NODE_ENV=test vitest run --config vitest.integration.config.ts --coverage",
112
+ "prepare": "husky",
113
+ "format": "prettier --write src/**/*.ts",
114
+ "prepublish:fix": "node scripts/fix-package-catalog.mjs",
115
+ "cleanup": "node scripts/cleanup.js",
116
+ "cleanup:auto": "node scripts/cleanup.js --auto",
117
+ "cleanup:dry": "node scripts/cleanup.js --dry-run",
118
+ "clean": "rm -rf dist coverage .turbo *.tsbuildinfo",
119
+ "benchmark:compression": "tsx scripts/benchmark-compression.ts",
120
+ "i18n:check": "tsx scripts/check-i18n.ts",
121
+ "i18n:report": "tsx scripts/check-i18n.ts --report",
122
+ "contract:check": "node scripts/check-remote-contract.mjs"
123
+ },
83
124
  "dependencies": {
84
125
  "better-sqlite3": "^12.9.0",
85
126
  "fdir": "^6.5.0",
@@ -142,43 +183,5 @@
142
183
  "unbuild": "^3.6.1",
143
184
  "uuid": "^11.1.0",
144
185
  "vitest": "^3.2.4"
145
- },
146
- "scripts": {
147
- "dev": "tsx ./src/cli.ts",
148
- "build": "pnpm build:release:deps && pnpm build:root",
149
- "build:root": "unbuild",
150
- "build:release:deps": "pnpm --filter @ccjk/wire build && pnpm --filter @ccjk/evolution build",
151
- "start": "node bin/ccjk.mjs",
152
- "typecheck": "pnpm build:release:deps && pnpm typecheck:root",
153
- "typecheck:root": "tsc --noEmit",
154
- "release:verify": "node scripts/release-verify.mjs",
155
- "release:verify:full": "node scripts/release-verify.mjs --with-tests",
156
- "lint": "eslint",
157
- "lint:fix": "eslint --fix",
158
- "test": "vitest",
159
- "test:ui": "vitest --ui",
160
- "test:coverage": "vitest run --coverage",
161
- "test:run": "vitest run",
162
- "test:release": "vitest run src/commands/menu/index.test.ts src/commands/menu/main-menu.test.ts src/utils/tool-update-scheduler.test.ts tests/commands/api-config-selector.test.ts tests/commands/init.silent.test.ts tests/commands/onboarding-wizard.test.ts tests/commands/research.test.ts tests/utils/banner.test.ts tests/utils/code-type-resolver.test.ts tests/utils/memory-feature.test.ts",
163
- "test:watch": "vitest watch",
164
- "test:e2e": "NODE_ENV=test vitest --config vitest.e2e.config.ts",
165
- "test:e2e:run": "NODE_ENV=test vitest run --config vitest.e2e.config.ts",
166
- "test:e2e:ui": "NODE_ENV=test vitest --config vitest.e2e.config.ts --ui",
167
- "test:e2e:coverage": "NODE_ENV=test vitest run --config vitest.e2e.config.ts --coverage",
168
- "test:e2e:debug": "NODE_ENV=test CCJK_E2E_DEBUG=true vitest --config vitest.e2e.config.ts",
169
- "test:integration": "NODE_ENV=test vitest --config vitest.integration.config.ts",
170
- "test:integration:run": "NODE_ENV=test vitest run --config vitest.integration.config.ts",
171
- "test:integration:ui": "NODE_ENV=test vitest --config vitest.integration.config.ts --ui",
172
- "test:integration:coverage": "NODE_ENV=test vitest run --config vitest.integration.config.ts --coverage",
173
- "format": "prettier --write src/**/*.ts",
174
- "prepublish:fix": "node scripts/fix-package-catalog.mjs",
175
- "cleanup": "node scripts/cleanup.js",
176
- "cleanup:auto": "node scripts/cleanup.js --auto",
177
- "cleanup:dry": "node scripts/cleanup.js --dry-run",
178
- "clean": "rm -rf dist coverage .turbo *.tsbuildinfo",
179
- "benchmark:compression": "tsx scripts/benchmark-compression.ts",
180
- "i18n:check": "tsx scripts/check-i18n.ts",
181
- "i18n:report": "tsx scripts/check-i18n.ts --report",
182
- "contract:check": "node scripts/check-remote-contract.mjs"
183
186
  }
184
- }
187
+ }