@kevisual/cli 0.0.80 → 0.0.83

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/dist/envision.js CHANGED
@@ -22327,8 +22327,8 @@ InitEnv.init();
22327
22327
  var version = useContextKey("version", () => {
22328
22328
  let version2 = "0.0.64";
22329
22329
  try {
22330
- if ("0.0.80")
22331
- version2 = "0.0.80";
22330
+ if ("0.0.83")
22331
+ version2 = "0.0.83";
22332
22332
  } catch (e) {}
22333
22333
  return version2;
22334
22334
  });
@@ -22378,14 +22378,14 @@ var getEnvToken = () => {
22378
22378
  return process.env.KEVISUAL_TOKEN || "";
22379
22379
  };
22380
22380
 
22381
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/key.js
22381
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/key.js
22382
22382
  var isUpKey = (key, keybindings = []) => key.name === "up" || keybindings.includes("vim") && key.name === "k" || keybindings.includes("emacs") && key.ctrl && key.name === "p";
22383
22383
  var isDownKey = (key, keybindings = []) => key.name === "down" || keybindings.includes("vim") && key.name === "j" || keybindings.includes("emacs") && key.ctrl && key.name === "n";
22384
22384
  var isBackspaceKey = (key) => key.name === "backspace";
22385
22385
  var isTabKey = (key) => key.name === "tab";
22386
22386
  var isNumberKey = (key) => "1234567890".includes(key.name);
22387
22387
  var isEnterKey = (key) => key.name === "enter" || key.name === "return";
22388
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/errors.js
22388
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/errors.js
22389
22389
  class AbortPromptError extends Error {
22390
22390
  name = "AbortPromptError";
22391
22391
  message = "Prompt was aborted";
@@ -22411,10 +22411,10 @@ class HookError extends Error {
22411
22411
  class ValidationError extends Error {
22412
22412
  name = "ValidationError";
22413
22413
  }
22414
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/use-state.js
22414
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/use-state.js
22415
22415
  import { AsyncResource as AsyncResource2 } from "node:async_hooks";
22416
22416
 
22417
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/hook-engine.js
22417
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/hook-engine.js
22418
22418
  import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
22419
22419
  var hookStorage = new AsyncLocalStorage;
22420
22420
  function createStore(rl) {
@@ -22519,7 +22519,7 @@ var effectScheduler = {
22519
22519
  }
22520
22520
  };
22521
22521
 
22522
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/use-state.js
22522
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/use-state.js
22523
22523
  function useState(defaultValue) {
22524
22524
  return withPointer((pointer) => {
22525
22525
  const setState = AsyncResource2.bind(function setState(newValue) {
@@ -22537,7 +22537,7 @@ function useState(defaultValue) {
22537
22537
  });
22538
22538
  }
22539
22539
 
22540
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/use-effect.js
22540
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/use-effect.js
22541
22541
  function useEffect(cb, depArray) {
22542
22542
  withPointer((pointer) => {
22543
22543
  const oldDeps = pointer.get();
@@ -22549,7 +22549,7 @@ function useEffect(cb, depArray) {
22549
22549
  });
22550
22550
  }
22551
22551
 
22552
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/theme.js
22552
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/theme.js
22553
22553
  import { styleText } from "node:util";
22554
22554
 
22555
22555
  // node_modules/.pnpm/@inquirer+figures@2.0.3/node_modules/@inquirer/figures/dist/index.js
@@ -22841,7 +22841,7 @@ var figures = shouldUseMain ? mainSymbols : fallbackSymbols;
22841
22841
  var dist_default = figures;
22842
22842
  var replacements = Object.entries(specialMainSymbols);
22843
22843
 
22844
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/theme.js
22844
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/theme.js
22845
22845
  var defaultTheme = {
22846
22846
  prefix: {
22847
22847
  idle: styleText("blue", "?"),
@@ -22862,7 +22862,7 @@ var defaultTheme = {
22862
22862
  }
22863
22863
  };
22864
22864
 
22865
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/make-theme.js
22865
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/make-theme.js
22866
22866
  function isPlainObject(value) {
22867
22867
  if (typeof value !== "object" || value === null)
22868
22868
  return false;
@@ -22890,7 +22890,7 @@ function makeTheme(...themes) {
22890
22890
  return deepMerge(...themesToMerge);
22891
22891
  }
22892
22892
 
22893
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/use-prefix.js
22893
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/use-prefix.js
22894
22894
  function usePrefix({ status = "idle", theme }) {
22895
22895
  const [showLoader, setShowLoader] = useState(false);
22896
22896
  const [tick, setTick] = useState(0);
@@ -22920,7 +22920,7 @@ function usePrefix({ status = "idle", theme }) {
22920
22920
  const iconName = status === "loading" ? "idle" : status;
22921
22921
  return typeof prefix === "string" ? prefix : prefix[iconName] ?? prefix["idle"];
22922
22922
  }
22923
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/use-memo.js
22923
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/use-memo.js
22924
22924
  function useMemo(fn, dependencies) {
22925
22925
  return withPointer((pointer) => {
22926
22926
  const prev = pointer.get();
@@ -22932,11 +22932,11 @@ function useMemo(fn, dependencies) {
22932
22932
  return prev.value;
22933
22933
  });
22934
22934
  }
22935
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/use-ref.js
22935
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/use-ref.js
22936
22936
  function useRef(val) {
22937
22937
  return useState({ current: val })[0];
22938
22938
  }
22939
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/use-keypress.js
22939
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/use-keypress.js
22940
22940
  function useKeypress(userHandler) {
22941
22941
  const signal = useRef(userHandler);
22942
22942
  signal.current = userHandler;
@@ -22954,7 +22954,7 @@ function useKeypress(userHandler) {
22954
22954
  };
22955
22955
  }, []);
22956
22956
  }
22957
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/utils.js
22957
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/utils.js
22958
22958
  var import_cli_width = __toESM(require_cli_width(), 1);
22959
22959
 
22960
22960
  // node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
@@ -23388,7 +23388,7 @@ function wrapAnsi(string, columns, options) {
23388
23388
  `);
23389
23389
  }
23390
23390
 
23391
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/utils.js
23391
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/utils.js
23392
23392
  function breakLines(content, width) {
23393
23393
  return content.split(`
23394
23394
  `).flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true }).split(`
@@ -23399,7 +23399,7 @@ function readlineWidth() {
23399
23399
  return import_cli_width.default({ defaultWidth: 80, output: readline().output });
23400
23400
  }
23401
23401
 
23402
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
23402
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
23403
23403
  function usePointerPosition({ active, renderedItems, pageSize, loop }) {
23404
23404
  const state = useRef({
23405
23405
  lastPointer: active,
@@ -23465,7 +23465,7 @@ function usePagination({ items, active, renderItem, pageSize, loop = true }) {
23465
23465
  return pageBuffer.filter((line) => typeof line === "string").join(`
23466
23466
  `);
23467
23467
  }
23468
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/create-prompt.js
23468
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/create-prompt.js
23469
23469
  var import_mute_stream = __toESM(require_lib(), 1);
23470
23470
  import * as readline2 from "node:readline";
23471
23471
  import { AsyncResource as AsyncResource3 } from "node:async_hooks";
@@ -23678,7 +23678,7 @@ var {
23678
23678
  unload
23679
23679
  } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback);
23680
23680
 
23681
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/screen-manager.js
23681
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/screen-manager.js
23682
23682
  import { stripVTControlCharacters } from "node:util";
23683
23683
 
23684
23684
  // node_modules/.pnpm/@inquirer+ansi@2.0.3/node_modules/@inquirer/ansi/dist/index.js
@@ -23697,7 +23697,7 @@ var cursorTo = (x, y) => {
23697
23697
  var eraseLine = ESC + "2K";
23698
23698
  var eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : "";
23699
23699
 
23700
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/screen-manager.js
23700
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/screen-manager.js
23701
23701
  var height = (content) => content.split(`
23702
23702
  `).length;
23703
23703
  var lastLine = (content) => content.split(`
@@ -23762,7 +23762,7 @@ class ScreenManager {
23762
23762
  }
23763
23763
  }
23764
23764
 
23765
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/promise-polyfill.js
23765
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/promise-polyfill.js
23766
23766
  class PromisePolyfill extends Promise {
23767
23767
  static withResolver() {
23768
23768
  let resolve;
@@ -23775,7 +23775,7 @@ class PromisePolyfill extends Promise {
23775
23775
  }
23776
23776
  }
23777
23777
 
23778
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/create-prompt.js
23778
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/create-prompt.js
23779
23779
  function getCallSites() {
23780
23780
  const _prepareStackTrace = Error.prepareStackTrace;
23781
23781
  let result = [];
@@ -23861,7 +23861,7 @@ function createPrompt(view) {
23861
23861
  };
23862
23862
  return prompt;
23863
23863
  }
23864
- // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.8/node_modules/@inquirer/core/dist/lib/Separator.js
23864
+ // node_modules/.pnpm/@inquirer+core@11.1.1_@types+node@25.0.9/node_modules/@inquirer/core/dist/lib/Separator.js
23865
23865
  import { styleText as styleText2 } from "node:util";
23866
23866
  class Separator {
23867
23867
  separator = styleText2("dim", Array.from({ length: 15 }).join(dist_default.line));
@@ -23875,7 +23875,7 @@ class Separator {
23875
23875
  return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator");
23876
23876
  }
23877
23877
  }
23878
- // node_modules/.pnpm/@inquirer+confirm@6.0.4_@types+node@25.0.8/node_modules/@inquirer/confirm/dist/index.js
23878
+ // node_modules/.pnpm/@inquirer+confirm@6.0.4_@types+node@25.0.9/node_modules/@inquirer/confirm/dist/index.js
23879
23879
  function getBooleanValue(value, defaultValue) {
23880
23880
  let answer = defaultValue !== false;
23881
23881
  if (/^(y|yes)/i.test(value))
@@ -23920,7 +23920,7 @@ var dist_default2 = createPrompt((config, done) => {
23920
23920
  const message = theme.style.message(config.message, status);
23921
23921
  return `${prefix} ${message}${defaultValue} ${formattedValue}`;
23922
23922
  });
23923
- // node_modules/.pnpm/@inquirer+input@5.0.4_@types+node@25.0.8/node_modules/@inquirer/input/dist/index.js
23923
+ // node_modules/.pnpm/@inquirer+input@5.0.4_@types+node@25.0.9/node_modules/@inquirer/input/dist/index.js
23924
23924
  var inputTheme = {
23925
23925
  validationFailureMode: "keep"
23926
23926
  };
@@ -24004,7 +24004,7 @@ var dist_default3 = createPrompt((config, done) => {
24004
24004
  error
24005
24005
  ];
24006
24006
  });
24007
- // node_modules/.pnpm/@inquirer+select@5.0.4_@types+node@25.0.8/node_modules/@inquirer/select/dist/index.js
24007
+ // node_modules/.pnpm/@inquirer+select@5.0.4_@types+node@25.0.9/node_modules/@inquirer/select/dist/index.js
24008
24008
  import { styleText as styleText3 } from "node:util";
24009
24009
  var selectTheme = {
24010
24010
  icon: { cursor: dist_default.pointer },
@@ -26226,12 +26226,26 @@ var pick = (obj, keys) => {
26226
26226
  return acc;
26227
26227
  }, {});
26228
26228
  };
26229
- var loginCommand = new Command("login").description("Login to the application").option("-u, --username <username>", "Specify username").option("-p, --password <password>", "Specify password").option("-f, --force", "Force login").option("-w, --web", "Login on the web").action(async (options) => {
26229
+ var loginCommand = new Command("login").description("Login to the application").option("-u, --username <username>", "Specify username").option("-p, --password <password>", "Specify password").option("-f, --force", "Force login").option("-w, --web", "Login on the web").option("-e, --env", "Login from KEVISUAL_TOKEN environment variable").action(async (options) => {
26230
26230
  let { username, password: password2 } = options;
26231
26231
  if (options.web) {
26232
26232
  await loginInCommand();
26233
26233
  return;
26234
26234
  }
26235
+ if (options.env) {
26236
+ const envToken = getEnvToken();
26237
+ if (!envToken) {
26238
+ console.log("环境变量 KEVISUAL_TOKEN 未设置");
26239
+ return;
26240
+ }
26241
+ const res2 = await showMe(false);
26242
+ if (res2.code === 200) {
26243
+ console.log("Login success:", res2.data?.username || res2.data?.email);
26244
+ } else {
26245
+ console.log("Login failed:", res2.message || "Invalid token");
26246
+ }
26247
+ return;
26248
+ }
26235
26249
  if (!username) {
26236
26250
  username = await dist_default3({
26237
26251
  message: "Enter your username:"
@@ -27743,6 +27757,10 @@ var publish = new Command("publish").argument("[registry]").option("-p --proxy",
27743
27757
  {
27744
27758
  name: "npm",
27745
27759
  value: "npm"
27760
+ },
27761
+ {
27762
+ name: "cnb",
27763
+ value: "cnb"
27746
27764
  }
27747
27765
  ]
27748
27766
  });
@@ -27771,6 +27789,9 @@ var publish = new Command("publish").argument("[registry]").option("-p --proxy",
27771
27789
  case "npm":
27772
27790
  cmd = "npm publish --registry https://registry.npmjs.org";
27773
27791
  break;
27792
+ case "cnb":
27793
+ cmd = "npm publish --registry https://npm.cnb.cool/kevisual/registry/-/packages/";
27794
+ break;
27774
27795
  default:
27775
27796
  cmd = "npm publish --registry https://npm.xiongxiao.me";
27776
27797
  break;
@@ -27834,6 +27855,7 @@ command5.addCommand(getnpmrc);
27834
27855
  var npmrc = new Command("set").description("set .npmrc").option("-f <force>").action(async (options) => {
27835
27856
  const config2 = getConfig();
27836
27857
  const npmrcContent = config2?.npmrc || `//npm.xiongxiao.me/:_authToken=\${ME_NPM_TOKEN}
27858
+ //npm.cnb.cool/kevisual/registry/-/packages/:_authToken=\${CNB_API_KEY}
27837
27859
  //registry.npmjs.org/:_authToken=\${NPM_TOKEN}
27838
27860
  `;
27839
27861
  const execPath = process.cwd();
@@ -28645,13 +28667,14 @@ var checkAuth = (value = "", baseURL3 = "") => {
28645
28667
  }
28646
28668
  return false;
28647
28669
  };
28670
+ var DEFAULT_IGNORE = ["node_modules/**", ".git/**", ".next/**", ".astro/**", ".pack-dist/**"];
28648
28671
 
28649
28672
  class SyncBase {
28650
28673
  config;
28651
28674
  #filename;
28652
28675
  #dir;
28653
28676
  baseURL;
28654
- defaultIgnore = ["node_modules/**", ".git/**"];
28677
+ defaultIgnore = DEFAULT_IGNORE;
28655
28678
  constructor(opts) {
28656
28679
  const filename = opts?.configFilename || "kevisual.json";
28657
28680
  const dir = opts?.dir || process.cwd();
@@ -28901,6 +28924,18 @@ var syncUpload = new Command("upload").option("-d --dir <dir>", "配置目录").
28901
28924
  };
28902
28925
  const filepath = sync.getRelativePath(opts.file);
28903
28926
  const newInfos = [];
28927
+ const uploadLength = syncList.length;
28928
+ logger.info(`开始上传文件,总计 ${uploadLength} 个文件`);
28929
+ if (uploadLength > 100) {
28930
+ const shouldContinue = await dist_default2({
28931
+ message: `即将上传 ${uploadLength} 个文件,是否继续?`,
28932
+ default: false
28933
+ });
28934
+ if (!shouldContinue) {
28935
+ logger.info("已取消上传");
28936
+ return;
28937
+ }
28938
+ }
28904
28939
  for (const item of syncList) {
28905
28940
  if (!item.auth || !item.exist) {
28906
28941
  nodonwArr.push(item);
@@ -33432,7 +33467,7 @@ program.addCommand(aiCmd);
33432
33467
  // src/command/cc.ts
33433
33468
  import path14 from "node:path";
33434
33469
 
33435
- // node_modules/.pnpm/@kevisual+use-config@1.0.26_dotenv@17.2.3/node_modules/@kevisual/use-config/dist/app.js
33470
+ // node_modules/.pnpm/@kevisual+use-config@1.0.28_dotenv@17.2.3/node_modules/@kevisual/use-config/dist/app.js
33436
33471
  import { createRequire as createRequire3 } from "node:module";
33437
33472
  import fs17 from "node:fs";
33438
33473
  import path13 from "node:path";
@@ -33945,95 +33980,733 @@ var useKey = (key, opts) => {
33945
33980
  }
33946
33981
  return v;
33947
33982
  };
33948
-
33949
- // src/command/cc.ts
33950
- import os4 from "node:os";
33951
- import fs18 from "node:fs";
33952
- var MODELS = ["minimax", "glm"];
33953
- var changeMinimax = (token2) => {
33954
- const auth_token = token2 || useKey("MINIMAX_API_KEY");
33955
- return {
33956
- env: {
33957
- ANTHROPIC_AUTH_TOKEN: auth_token,
33958
- ANTHROPIC_BASE_URL: "https://api.minimaxi.com/anthropic",
33959
- ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMax-M2.1",
33960
- ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMax-M2.1",
33961
- ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMax-M2.1",
33962
- ANTHROPIC_MODEL: "MiniMax-M2.1",
33963
- API_TIMEOUT_MS: "3000000",
33964
- CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1
33983
+ var isBrowser3 = typeof window !== "undefined" && typeof window.document !== "undefined";
33984
+ function getDefaultExportFromCjs3(x) {
33985
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
33986
+ }
33987
+ var eventemitter33 = { exports: {} };
33988
+ var hasRequiredEventemitter33;
33989
+ function requireEventemitter33() {
33990
+ if (hasRequiredEventemitter33)
33991
+ return eventemitter33.exports;
33992
+ hasRequiredEventemitter33 = 1;
33993
+ (function(module) {
33994
+ var has = Object.prototype.hasOwnProperty, prefix = "~";
33995
+ function Events() {}
33996
+ if (Object.create) {
33997
+ Events.prototype = Object.create(null);
33998
+ if (!new Events().__proto__)
33999
+ prefix = false;
33965
34000
  }
33966
- };
33967
- };
33968
- var changeGLM = (token2) => {
33969
- const auth_token = token2 || useKey("ZHIPU_API_KEY");
33970
- return {
33971
- env: {
33972
- ANTHROPIC_AUTH_TOKEN: auth_token,
33973
- ANTHROPIC_BASE_URL: "https://open.bigmodel.cn/api/anthropic",
33974
- ANTHROPIC_DEFAULT_HAIKU_MODEL: "glm-4.7",
33975
- ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-4.7",
33976
- ANTHROPIC_DEFAULT_SONNET_MODEL: "glm-4.7",
33977
- ANTHROPIC_MODEL: "glm-4.7"
34001
+ function EE(fn, context, once) {
34002
+ this.fn = fn;
34003
+ this.context = context;
34004
+ this.once = once || false;
33978
34005
  }
33979
- };
33980
- };
33981
- var changeNoCheck = () => {
33982
- const homeDir = os4.homedir();
33983
- const claudeConfigPath = path14.join(homeDir, ".claude.json");
33984
- let claudeConfig = {};
33985
- if (fs18.existsSync(claudeConfigPath)) {
33986
- const content = fs18.readFileSync(claudeConfigPath, "utf-8");
33987
- try {
33988
- claudeConfig = JSON.parse(content);
33989
- } catch {
33990
- claudeConfig = {};
34006
+ function addListener(emitter, event, fn, context, once) {
34007
+ if (typeof fn !== "function") {
34008
+ throw new TypeError("The listener must be a function");
34009
+ }
34010
+ var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
34011
+ if (!emitter._events[evt])
34012
+ emitter._events[evt] = listener, emitter._eventsCount++;
34013
+ else if (!emitter._events[evt].fn)
34014
+ emitter._events[evt].push(listener);
34015
+ else
34016
+ emitter._events[evt] = [emitter._events[evt], listener];
34017
+ return emitter;
33991
34018
  }
33992
- }
33993
- claudeConfig = {
33994
- ...claudeConfig,
33995
- hasCompletedOnboarding: true
33996
- };
33997
- fs18.writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2));
33998
- };
33999
- var modelConfig = {
34000
- minimax: changeMinimax,
34001
- glm: changeGLM
34002
- };
34003
- var readOrCreateConfig = (configPath2) => {
34004
- if (fs18.existsSync(configPath2)) {
34005
- const content = fs18.readFileSync(configPath2, "utf-8");
34006
- try {
34007
- return JSON.parse(content);
34008
- } catch {
34009
- return {};
34019
+ function clearEvent(emitter, evt) {
34020
+ if (--emitter._eventsCount === 0)
34021
+ emitter._events = new Events;
34022
+ else
34023
+ delete emitter._events[evt];
34010
34024
  }
34011
- }
34012
- return {};
34013
- };
34014
- var saveConfig = (configPath2, config2) => {
34015
- fs18.writeFileSync(configPath2, JSON.stringify(config2, null, 2));
34016
- };
34017
- var command11 = new Command("cc").description("切换claude code模型,支持GLM4.7和Minimax").option("-m, --models <model:string>", `选择模型: ${MODELS.join(" | ")}`).action(async (options) => {
34018
- const configPath2 = path14.join(os4.homedir(), ".claude/settings.json");
34019
- const config2 = readOrCreateConfig(configPath2);
34020
- let selectedModel;
34021
- if (options.models && MODELS.includes(options.models)) {
34022
- selectedModel = options.models;
34023
- } else {
34024
- selectedModel = await dist_default4({
34025
- message: "请选择模型:",
34026
- choices: MODELS
34027
- });
34028
- }
34029
- const updateConfig = modelConfig[selectedModel]();
34030
- Object.assign(config2, updateConfig);
34031
- saveConfig(configPath2, config2);
34032
- changeNoCheck();
34033
- console.log(`已切换到模型: ${chalk2.green(selectedModel)}`);
34034
- console.log(`配置已保存到: ${configPath2}`);
34035
- });
34036
- program.addCommand(command11);
34025
+ function EventEmitter3() {
34026
+ this._events = new Events;
34027
+ this._eventsCount = 0;
34028
+ }
34029
+ EventEmitter3.prototype.eventNames = function eventNames() {
34030
+ var names = [], events, name;
34031
+ if (this._eventsCount === 0)
34032
+ return names;
34033
+ for (name in events = this._events) {
34034
+ if (has.call(events, name))
34035
+ names.push(prefix ? name.slice(1) : name);
34036
+ }
34037
+ if (Object.getOwnPropertySymbols) {
34038
+ return names.concat(Object.getOwnPropertySymbols(events));
34039
+ }
34040
+ return names;
34041
+ };
34042
+ EventEmitter3.prototype.listeners = function listeners(event) {
34043
+ var evt = prefix ? prefix + event : event, handlers = this._events[evt];
34044
+ if (!handlers)
34045
+ return [];
34046
+ if (handlers.fn)
34047
+ return [handlers.fn];
34048
+ for (var i = 0, l = handlers.length, ee = new Array(l);i < l; i++) {
34049
+ ee[i] = handlers[i].fn;
34050
+ }
34051
+ return ee;
34052
+ };
34053
+ EventEmitter3.prototype.listenerCount = function listenerCount(event) {
34054
+ var evt = prefix ? prefix + event : event, listeners = this._events[evt];
34055
+ if (!listeners)
34056
+ return 0;
34057
+ if (listeners.fn)
34058
+ return 1;
34059
+ return listeners.length;
34060
+ };
34061
+ EventEmitter3.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
34062
+ var evt = prefix ? prefix + event : event;
34063
+ if (!this._events[evt])
34064
+ return false;
34065
+ var listeners = this._events[evt], len = arguments.length, args, i;
34066
+ if (listeners.fn) {
34067
+ if (listeners.once)
34068
+ this.removeListener(event, listeners.fn, undefined, true);
34069
+ switch (len) {
34070
+ case 1:
34071
+ return listeners.fn.call(listeners.context), true;
34072
+ case 2:
34073
+ return listeners.fn.call(listeners.context, a1), true;
34074
+ case 3:
34075
+ return listeners.fn.call(listeners.context, a1, a2), true;
34076
+ case 4:
34077
+ return listeners.fn.call(listeners.context, a1, a2, a3), true;
34078
+ case 5:
34079
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
34080
+ case 6:
34081
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
34082
+ }
34083
+ for (i = 1, args = new Array(len - 1);i < len; i++) {
34084
+ args[i - 1] = arguments[i];
34085
+ }
34086
+ listeners.fn.apply(listeners.context, args);
34087
+ } else {
34088
+ var length = listeners.length, j;
34089
+ for (i = 0;i < length; i++) {
34090
+ if (listeners[i].once)
34091
+ this.removeListener(event, listeners[i].fn, undefined, true);
34092
+ switch (len) {
34093
+ case 1:
34094
+ listeners[i].fn.call(listeners[i].context);
34095
+ break;
34096
+ case 2:
34097
+ listeners[i].fn.call(listeners[i].context, a1);
34098
+ break;
34099
+ case 3:
34100
+ listeners[i].fn.call(listeners[i].context, a1, a2);
34101
+ break;
34102
+ case 4:
34103
+ listeners[i].fn.call(listeners[i].context, a1, a2, a3);
34104
+ break;
34105
+ default:
34106
+ if (!args)
34107
+ for (j = 1, args = new Array(len - 1);j < len; j++) {
34108
+ args[j - 1] = arguments[j];
34109
+ }
34110
+ listeners[i].fn.apply(listeners[i].context, args);
34111
+ }
34112
+ }
34113
+ }
34114
+ return true;
34115
+ };
34116
+ EventEmitter3.prototype.on = function on(event, fn, context) {
34117
+ return addListener(this, event, fn, context, false);
34118
+ };
34119
+ EventEmitter3.prototype.once = function once(event, fn, context) {
34120
+ return addListener(this, event, fn, context, true);
34121
+ };
34122
+ EventEmitter3.prototype.removeListener = function removeListener(event, fn, context, once) {
34123
+ var evt = prefix ? prefix + event : event;
34124
+ if (!this._events[evt])
34125
+ return this;
34126
+ if (!fn) {
34127
+ clearEvent(this, evt);
34128
+ return this;
34129
+ }
34130
+ var listeners = this._events[evt];
34131
+ if (listeners.fn) {
34132
+ if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
34133
+ clearEvent(this, evt);
34134
+ }
34135
+ } else {
34136
+ for (var i = 0, events = [], length = listeners.length;i < length; i++) {
34137
+ if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {
34138
+ events.push(listeners[i]);
34139
+ }
34140
+ }
34141
+ if (events.length)
34142
+ this._events[evt] = events.length === 1 ? events[0] : events;
34143
+ else
34144
+ clearEvent(this, evt);
34145
+ }
34146
+ return this;
34147
+ };
34148
+ EventEmitter3.prototype.removeAllListeners = function removeAllListeners(event) {
34149
+ var evt;
34150
+ if (event) {
34151
+ evt = prefix ? prefix + event : event;
34152
+ if (this._events[evt])
34153
+ clearEvent(this, evt);
34154
+ } else {
34155
+ this._events = new Events;
34156
+ this._eventsCount = 0;
34157
+ }
34158
+ return this;
34159
+ };
34160
+ EventEmitter3.prototype.off = EventEmitter3.prototype.removeListener;
34161
+ EventEmitter3.prototype.addListener = EventEmitter3.prototype.on;
34162
+ EventEmitter3.prefixed = prefix;
34163
+ EventEmitter3.EventEmitter = EventEmitter3;
34164
+ {
34165
+ module.exports = EventEmitter3;
34166
+ }
34167
+ })(eventemitter33);
34168
+ return eventemitter33.exports;
34169
+ }
34170
+ var eventemitter3Exports3 = requireEventemitter33();
34171
+ var EventEmitter3 = /* @__PURE__ */ getDefaultExportFromCjs3(eventemitter3Exports3);
34172
+ var reRunFn3 = (promiseOpts) => {
34173
+ const timeout = promiseOpts.timeout || 5 * 60 * 1000;
34174
+ const interval = promiseOpts.interval || 1000;
34175
+ const checkSuccess = promiseOpts?.checkSuccess || (() => true);
34176
+ const signal = promiseOpts.signal;
34177
+ return new Promise(async (resolve, reject) => {
34178
+ let intervalId;
34179
+ let timeoutId = setTimeout(() => {
34180
+ clearTimeout(intervalId);
34181
+ resolve({
34182
+ code: 500,
34183
+ message: "timeout"
34184
+ });
34185
+ }, timeout);
34186
+ const fn = promiseOpts.fn || (() => true);
34187
+ const runFn = async () => {
34188
+ if (signal?.aborted) {
34189
+ clearInterval(intervalId);
34190
+ clearTimeout(timeoutId);
34191
+ return resolve({
34192
+ code: 499,
34193
+ message: "operation cancelled"
34194
+ });
34195
+ }
34196
+ const res = await fn();
34197
+ if (!!checkSuccess(res)) {
34198
+ clearInterval(intervalId);
34199
+ clearTimeout(timeoutId);
34200
+ resolve({
34201
+ code: 200,
34202
+ data: res
34203
+ });
34204
+ } else {
34205
+ setTimeout(() => {
34206
+ runFn();
34207
+ }, interval);
34208
+ }
34209
+ };
34210
+ if (signal) {
34211
+ signal.addEventListener("abort", () => {
34212
+ clearInterval(intervalId);
34213
+ clearTimeout(timeoutId);
34214
+ resolve({
34215
+ code: 499,
34216
+ message: "operation cancelled"
34217
+ });
34218
+ });
34219
+ }
34220
+ runFn();
34221
+ });
34222
+ };
34223
+
34224
+ class BaseLoad3 {
34225
+ modules = new Map;
34226
+ event;
34227
+ loading;
34228
+ static reRunFn = reRunFn3;
34229
+ timeout = 5 * 60 * 1000;
34230
+ constructor() {
34231
+ this.event = new EventEmitter3;
34232
+ this.loading = false;
34233
+ }
34234
+ listenKey(key, listenOpts) {
34235
+ const timeout = listenOpts?.timeout ?? this.timeout;
34236
+ return new Promise((resolve) => {
34237
+ const timeoutId = setTimeout(() => {
34238
+ this.event.removeListener(key, onEvent);
34239
+ resolve({
34240
+ code: 500,
34241
+ message: "timeout"
34242
+ });
34243
+ }, timeout);
34244
+ const onEvent = (error) => {
34245
+ clearTimeout(timeoutId);
34246
+ if (error) {
34247
+ return resolve({
34248
+ code: 500,
34249
+ message: error
34250
+ });
34251
+ }
34252
+ const data = this.modules.get(key);
34253
+ if (data?.loadSuccessClear) {
34254
+ this.remove(key);
34255
+ }
34256
+ resolve({
34257
+ code: 200,
34258
+ data: data?.modules
34259
+ });
34260
+ };
34261
+ this.event.once(key, onEvent);
34262
+ });
34263
+ }
34264
+ async hasLoaded(key, hasLoadOpts) {
34265
+ if (!key) {
34266
+ return {
34267
+ code: 404,
34268
+ message: "key is required"
34269
+ };
34270
+ }
34271
+ const has = this.modules.has(key);
34272
+ if (!has) {
34273
+ const isExist = hasLoadOpts?.isExist ?? true;
34274
+ const timeout = hasLoadOpts?.timeout ?? this.timeout;
34275
+ if (isExist) {
34276
+ return await this.listenKey(key, { timeout });
34277
+ }
34278
+ return {
34279
+ code: 404
34280
+ };
34281
+ }
34282
+ const data = this.modules.get(key);
34283
+ if (data?.status === "loaded") {
34284
+ return {
34285
+ code: 200,
34286
+ data: data.modules
34287
+ };
34288
+ }
34289
+ if (data?.status === "loading") {
34290
+ return await this.listenKey(key, { timeout: hasLoadOpts?.timeout ?? this.timeout });
34291
+ }
34292
+ if (data?.status === "error") {
34293
+ return {
34294
+ code: 500,
34295
+ message: "load error"
34296
+ };
34297
+ }
34298
+ if (data?.status === "cancel") {
34299
+ return {
34300
+ code: 499,
34301
+ message: "operation cancelled"
34302
+ };
34303
+ }
34304
+ return {
34305
+ code: 404
34306
+ };
34307
+ }
34308
+ async loadFn(loadContent, opts) {
34309
+ const key = opts.key;
34310
+ if (!key) {
34311
+ return {
34312
+ code: 404,
34313
+ message: "key is required"
34314
+ };
34315
+ }
34316
+ const newModule = {
34317
+ key: opts.key,
34318
+ status: "loading",
34319
+ loading: true,
34320
+ loadSuccessClear: opts.loadSuccessClear ?? true
34321
+ };
34322
+ let errorMessage = "";
34323
+ try {
34324
+ const isReRun = opts.isReRun ?? false;
34325
+ let res;
34326
+ if (!isReRun) {
34327
+ this.modules.set(key, newModule);
34328
+ res = await loadContent();
34329
+ } else {
34330
+ newModule.controller = new AbortController;
34331
+ const signal = newModule.controller.signal;
34332
+ this.modules.set(key, newModule);
34333
+ const data = await reRunFn3({
34334
+ timeout: opts.timeout,
34335
+ interval: opts.interval,
34336
+ checkSuccess: opts.checkSuccess,
34337
+ fn: loadContent,
34338
+ signal
34339
+ });
34340
+ newModule.controller = null;
34341
+ if (data.code === 499) {
34342
+ newModule.status = "cancel";
34343
+ return {
34344
+ code: 499,
34345
+ message: "operation cancelled"
34346
+ };
34347
+ }
34348
+ if (data.code !== 200) {
34349
+ throw new Error(data.message);
34350
+ }
34351
+ res = data.data;
34352
+ }
34353
+ newModule.modules = res;
34354
+ newModule.status = "loaded";
34355
+ return {
34356
+ code: 200,
34357
+ data: res
34358
+ };
34359
+ } catch (error) {
34360
+ errorMessage = error.message;
34361
+ newModule.status = "error";
34362
+ return {
34363
+ code: 500,
34364
+ message: error
34365
+ };
34366
+ } finally {
34367
+ newModule.loading = false;
34368
+ this.modules.set(opts.key, newModule);
34369
+ if (!errorMessage) {
34370
+ this.event.emit(opts.key);
34371
+ } else {
34372
+ this.event.emit(opts.key, errorMessage);
34373
+ }
34374
+ }
34375
+ }
34376
+ async load(loadContent, opts) {
34377
+ this.loading = true;
34378
+ const key = opts.key;
34379
+ if (!key) {
34380
+ return {
34381
+ code: 404,
34382
+ message: "key is required"
34383
+ };
34384
+ }
34385
+ if (opts?.force) {
34386
+ this.remove(key);
34387
+ }
34388
+ const has = this.modules.has(key);
34389
+ if (has) {
34390
+ return await this.hasLoaded(key);
34391
+ }
34392
+ if (typeof loadContent === "function") {
34393
+ return this.loadFn(loadContent, opts);
34394
+ }
34395
+ console.error("loadContent is not a function and not has loaded");
34396
+ }
34397
+ remove(key) {
34398
+ const has = this.modules.has(key);
34399
+ if (has) {
34400
+ this.checkRemoveController(key);
34401
+ this.modules.delete(key);
34402
+ }
34403
+ }
34404
+ emitLoaded(key) {
34405
+ this.checkRemoveController(key);
34406
+ this.event.emit(key);
34407
+ }
34408
+ setModule(key, data, loadData) {
34409
+ const newModule = {
34410
+ key,
34411
+ status: "loaded",
34412
+ loading: false,
34413
+ modules: data || {},
34414
+ ...loadData
34415
+ };
34416
+ this.modules.set(key, newModule);
34417
+ this.emitLoaded(key);
34418
+ return newModule;
34419
+ }
34420
+ cancel(key) {
34421
+ this.checkRemoveController(key);
34422
+ }
34423
+ checkRemoveController(key) {
34424
+ const data = this.modules.get(key);
34425
+ if (data?.controller) {
34426
+ data.controller?.abort?.();
34427
+ delete data.controller;
34428
+ this.modules.set(key, data);
34429
+ }
34430
+ }
34431
+ }
34432
+ var gt2 = globalThis || window || self;
34433
+ var useEnv2 = (initEnv, initKey = "config", isOverwrite) => {
34434
+ const env3 = gt2[initKey];
34435
+ const _env = env3 || initEnv;
34436
+ if (!env3) {
34437
+ if (_env) {
34438
+ gt2[initKey] = _env;
34439
+ } else {
34440
+ gt2[initKey] = {};
34441
+ }
34442
+ } else if (isOverwrite) {
34443
+ gt2[initKey] = { ...env3, ...initEnv };
34444
+ }
34445
+ return gt2[initKey];
34446
+ };
34447
+ var useEnvKey2 = (key, init, initKey = "config") => {
34448
+ const _env = useEnv2({}, initKey);
34449
+ if (key && typeof _env[key] !== "undefined") {
34450
+ return _env[key];
34451
+ }
34452
+ if (key && init) {
34453
+ if (typeof init !== "function") {
34454
+ _env[key] = init;
34455
+ }
34456
+ if (typeof init === "function") {
34457
+ const result = init();
34458
+ if (result instanceof Promise) {
34459
+ return result.then((res) => {
34460
+ _env[key] = res;
34461
+ return res;
34462
+ });
34463
+ }
34464
+ _env[key] = result;
34465
+ }
34466
+ return _env[key];
34467
+ }
34468
+ if (key) {
34469
+ const baseLoad = new BaseLoad3;
34470
+ const voidFn = async () => {
34471
+ return _env[key];
34472
+ };
34473
+ const checkFn = async () => {
34474
+ const loadRes = await baseLoad.load(voidFn, {
34475
+ key,
34476
+ isReRun: true,
34477
+ checkSuccess: () => _env[key],
34478
+ timeout: 5 * 60 * 1000,
34479
+ interval: 1000
34480
+ });
34481
+ if (loadRes.code !== 200) {
34482
+ console.error("load key error");
34483
+ return null;
34484
+ }
34485
+ return _env[key];
34486
+ };
34487
+ return checkFn();
34488
+ }
34489
+ console.error("key is empty ");
34490
+ return null;
34491
+ };
34492
+ var useEnvKeyNew2 = (key, initKey = "config", opts) => {
34493
+ const _env = useEnv2({}, initKey);
34494
+ if (key) {
34495
+ delete _env[key];
34496
+ }
34497
+ if (opts?.getNew && opts.init) {
34498
+ return useEnvKey2(key, opts.init, initKey);
34499
+ } else if (opts?.getNew) {
34500
+ return useEnvKey2(key, null, initKey);
34501
+ }
34502
+ };
34503
+ var useContextKey2 = (key, init, isNew) => {
34504
+ if (isNew) {
34505
+ return useEnvKeyNew2(key, "context", { getNew: true, init });
34506
+ }
34507
+ return useEnvKey2(key, init, "context");
34508
+ };
34509
+ var use2 = useContextKey2;
34510
+ var useConfigKey2 = (key, init, isNew) => {
34511
+ if (isNew) {
34512
+ return useEnvKeyNew2(key, "config", { getNew: true, init });
34513
+ }
34514
+ return useEnvKey2(key, init, "config");
34515
+ };
34516
+
34517
+ class InitEnv2 {
34518
+ static isInit = false;
34519
+ static init(opts) {
34520
+ if (InitEnv2.isInit) {
34521
+ return;
34522
+ }
34523
+ const { load: load2 = true, page = false } = opts || {};
34524
+ InitEnv2.isInit = true;
34525
+ gt2.useConfigKey = useConfigKey2;
34526
+ gt2.useContextKey = useContextKey2;
34527
+ gt2.use = use2;
34528
+ gt2.webEnv = { useConfigKey: useConfigKey2, useContextKey: useContextKey2, use: use2 };
34529
+ load2 && (gt2.Load = BaseLoad3);
34530
+ }
34531
+ }
34532
+ InitEnv2.init();
34533
+
34534
+ // src/command/cc.ts
34535
+ import os4 from "node:os";
34536
+ import fs18 from "node:fs";
34537
+ var MODELS = ["minimax", "glm", "volcengine"];
34538
+ var changeMinimax = (token2) => {
34539
+ const auth_token = token2 || useKey("MINIMAX_API_KEY");
34540
+ return {
34541
+ env: {
34542
+ ANTHROPIC_AUTH_TOKEN: auth_token,
34543
+ ANTHROPIC_BASE_URL: "https://api.minimaxi.com/anthropic",
34544
+ ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMax-M2.1",
34545
+ ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMax-M2.1",
34546
+ ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMax-M2.1",
34547
+ ANTHROPIC_MODEL: "MiniMax-M2.1",
34548
+ API_TIMEOUT_MS: "3000000",
34549
+ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1
34550
+ }
34551
+ };
34552
+ };
34553
+ var changeGLM = (token2) => {
34554
+ const auth_token = token2 || useKey("ZHIPU_API_KEY");
34555
+ return {
34556
+ env: {
34557
+ ANTHROPIC_AUTH_TOKEN: auth_token,
34558
+ ANTHROPIC_BASE_URL: "https://open.bigmodel.cn/api/anthropic",
34559
+ ANTHROPIC_DEFAULT_HAIKU_MODEL: "glm-4.7",
34560
+ ANTHROPIC_DEFAULT_OPUS_MODEL: "glm-4.7",
34561
+ ANTHROPIC_DEFAULT_SONNET_MODEL: "glm-4.7",
34562
+ ANTHROPIC_MODEL: "glm-4.7"
34563
+ }
34564
+ };
34565
+ };
34566
+ var changeVolcengine = (token2) => {
34567
+ const auth_token = token2 || useKey("VOLCENGINE_API_KEY");
34568
+ return {
34569
+ env: {
34570
+ ANTHROPIC_AUTH_TOKEN: auth_token,
34571
+ ANTHROPIC_BASE_URL: "https://ark.cn-beijing.volces.com/api/coding",
34572
+ ANTHROPIC_DEFAULT_HAIKU_MODEL: "ark-code-latest",
34573
+ ANTHROPIC_DEFAULT_OPUS_MODEL: "ark-code-latest",
34574
+ ANTHROPIC_DEFAULT_SONNET_MODEL: "ark-code-latest",
34575
+ ANTHROPIC_MODEL: "ark-code-latest",
34576
+ API_TIMEOUT_MS: "3000000"
34577
+ }
34578
+ };
34579
+ };
34580
+ var changeNoCheck = () => {
34581
+ const homeDir = os4.homedir();
34582
+ const claudeConfigPath = path14.join(homeDir, ".claude.json");
34583
+ let claudeConfig = {};
34584
+ if (fs18.existsSync(claudeConfigPath)) {
34585
+ const content = fs18.readFileSync(claudeConfigPath, "utf-8");
34586
+ try {
34587
+ claudeConfig = JSON.parse(content);
34588
+ } catch {
34589
+ claudeConfig = {};
34590
+ }
34591
+ }
34592
+ claudeConfig = {
34593
+ ...claudeConfig,
34594
+ hasCompletedOnboarding: true
34595
+ };
34596
+ fs18.writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2));
34597
+ };
34598
+ var modelConfig = {
34599
+ minimax: changeMinimax,
34600
+ glm: changeGLM,
34601
+ volcengine: changeVolcengine
34602
+ };
34603
+ var readOrCreateConfig = (configPath2) => {
34604
+ if (fs18.existsSync(configPath2)) {
34605
+ const content = fs18.readFileSync(configPath2, "utf-8");
34606
+ try {
34607
+ return JSON.parse(content);
34608
+ } catch {
34609
+ return {};
34610
+ }
34611
+ }
34612
+ return {};
34613
+ };
34614
+ var saveConfig = (configPath2, config2) => {
34615
+ fs18.writeFileSync(configPath2, JSON.stringify(config2, null, 2));
34616
+ };
34617
+ var command11 = new Command("cc").description("切换claude code模型,支持GLM4.7、Minimax和豆包").option("-m, --models <model:string>", `选择模型: ${MODELS.join(" | ")}`).action(async (options) => {
34618
+ const configPath2 = path14.join(os4.homedir(), ".claude/settings.json");
34619
+ const config2 = readOrCreateConfig(configPath2);
34620
+ let selectedModel;
34621
+ if (options.models && MODELS.includes(options.models)) {
34622
+ selectedModel = options.models;
34623
+ } else {
34624
+ selectedModel = await dist_default4({
34625
+ message: "请选择模型:",
34626
+ choices: MODELS
34627
+ });
34628
+ }
34629
+ const updateConfig = modelConfig[selectedModel]();
34630
+ Object.assign(config2, updateConfig);
34631
+ saveConfig(configPath2, config2);
34632
+ changeNoCheck();
34633
+ console.log(`已切换到模型: ${chalk2.green(selectedModel)}`);
34634
+ console.log(`配置已保存到: ${configPath2}`);
34635
+ });
34636
+ program.addCommand(command11);
34637
+
34638
+ // src/command/docker.ts
34639
+ import { spawn as spawn4 } from "node:child_process";
34640
+ var dockerCommand = new Command("docker").description("Docker 相关指令").action(async () => {
34641
+ console.log(chalk2.green("Docker command executed"));
34642
+ });
34643
+ var login = new Command("login").description("登录 Docker 镜像仓库").option("-r , --registry <registry>", "Docker 镜像仓库地址", "default").action(async (options) => {
34644
+ const { registry = "default" } = options;
34645
+ let DOCKER_USERNAME = useKey("DOCKER_USERNAME");
34646
+ let DOCKER_PASSWORD = useKey("DOCKER_PASSWORD");
34647
+ let DOCKER_REGISTRY = useKey("DOCKER_REGISTRY");
34648
+ if (registry !== "default") {
34649
+ DOCKER_USERNAME = "cnb";
34650
+ DOCKER_PASSWORD = useKey("CNB_TOKEN");
34651
+ DOCKER_REGISTRY = "docker.cnb.cool";
34652
+ }
34653
+ if (!DOCKER_USERNAME || !DOCKER_PASSWORD) {
34654
+ console.log(chalk2.red("请先配置 DOCKER_USERNAME 和 DOCKER_PASSWORD"));
34655
+ return;
34656
+ }
34657
+ const loginProcess = spawn4("docker", [
34658
+ "login",
34659
+ "--username",
34660
+ DOCKER_USERNAME,
34661
+ DOCKER_REGISTRY,
34662
+ "--password-stdin"
34663
+ ], {
34664
+ stdio: ["pipe", "inherit", "inherit"]
34665
+ });
34666
+ loginProcess.stdin.write(DOCKER_PASSWORD + `
34667
+ `);
34668
+ loginProcess.stdin.end();
34669
+ loginProcess.on("close", (code) => {
34670
+ if (code === 0) {
34671
+ console.log(chalk2.green("登录成功"));
34672
+ } else {
34673
+ console.log(chalk2.red(`登录失败,退出码:${code}`));
34674
+ }
34675
+ });
34676
+ });
34677
+ dockerCommand.addCommand(login);
34678
+ var helmLogin = new Command("helm").description("Helm 登录镜像仓库").action(async () => {});
34679
+ var helmLoginCommand = new Command("login").description("登录 Helm 镜像仓库").action(async () => {
34680
+ let DOCKER_USERNAME = "cnb";
34681
+ let DOCKER_PASSWORD = useKey("CNB_TOKEN");
34682
+ if (!DOCKER_PASSWORD) {
34683
+ console.log(chalk2.red("请先配置 CNB_TOKEN"));
34684
+ return;
34685
+ }
34686
+ const helmLoginProcess = spawn4("helm", [
34687
+ "registry",
34688
+ "login",
34689
+ "--username",
34690
+ DOCKER_USERNAME,
34691
+ "--password-stdin",
34692
+ "helm.cnb.cool"
34693
+ ], {
34694
+ stdio: ["pipe", "inherit", "inherit"]
34695
+ });
34696
+ helmLoginProcess.stdin.write(DOCKER_PASSWORD + `
34697
+ `);
34698
+ helmLoginProcess.stdin.end();
34699
+ helmLoginProcess.on("close", (code) => {
34700
+ if (code === 0) {
34701
+ console.log(chalk2.green("Helm 登录成功"));
34702
+ } else {
34703
+ console.log(chalk2.red(`Helm 登录失败,退出码:${code}`));
34704
+ }
34705
+ });
34706
+ });
34707
+ helmLogin.addCommand(helmLoginCommand);
34708
+ program.addCommand(dockerCommand);
34709
+ program.addCommand(helmLogin);
34037
34710
 
34038
34711
  // src/index.ts
34039
34712
  var runParser = async (argv) => {