@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/bun.config.mjs +2 -2
- package/dist/assistant-server.js +83874 -58471
- package/dist/assistant.js +1995 -14738
- package/dist/envision.js +788 -115
- package/package.json +7 -5
- package/readme.md +1 -8
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.
|
|
22331
|
-
version2 = "0.0.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 =
|
|
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.
|
|
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
|
-
|
|
33950
|
-
|
|
33951
|
-
|
|
33952
|
-
var
|
|
33953
|
-
var
|
|
33954
|
-
|
|
33955
|
-
|
|
33956
|
-
|
|
33957
|
-
|
|
33958
|
-
|
|
33959
|
-
|
|
33960
|
-
|
|
33961
|
-
|
|
33962
|
-
|
|
33963
|
-
|
|
33964
|
-
|
|
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
|
-
|
|
33969
|
-
|
|
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
|
-
|
|
33982
|
-
|
|
33983
|
-
|
|
33984
|
-
|
|
33985
|
-
|
|
33986
|
-
|
|
33987
|
-
|
|
33988
|
-
|
|
33989
|
-
|
|
33990
|
-
|
|
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
|
-
|
|
33994
|
-
|
|
33995
|
-
|
|
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
|
-
|
|
34013
|
-
|
|
34014
|
-
|
|
34015
|
-
|
|
34016
|
-
|
|
34017
|
-
|
|
34018
|
-
|
|
34019
|
-
|
|
34020
|
-
|
|
34021
|
-
|
|
34022
|
-
|
|
34023
|
-
|
|
34024
|
-
|
|
34025
|
-
|
|
34026
|
-
|
|
34027
|
-
}
|
|
34028
|
-
|
|
34029
|
-
|
|
34030
|
-
|
|
34031
|
-
|
|
34032
|
-
|
|
34033
|
-
|
|
34034
|
-
|
|
34035
|
-
|
|
34036
|
-
|
|
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) => {
|