@kevisual/cli 0.1.15 → 0.1.17

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.
@@ -51818,8 +51818,10 @@ class RemoteApp {
51818
51818
  mainApp;
51819
51819
  url;
51820
51820
  id;
51821
+ username;
51821
51822
  emitter;
51822
51823
  isConnected;
51824
+ isVerified;
51823
51825
  ws;
51824
51826
  remoteIsConnected;
51825
51827
  isError = false;
@@ -51836,12 +51838,17 @@ class RemoteApp {
51836
51838
  const token = opts.token;
51837
51839
  const url4 = opts.url;
51838
51840
  const id = opts.id;
51841
+ const username = opts.username;
51842
+ this.username = username;
51839
51843
  this.emitter = opts?.emitter || new import__2.default;
51840
51844
  const _url2 = new URL(url4);
51841
51845
  if (token) {
51842
51846
  _url2.searchParams.set("token", token);
51843
51847
  }
51844
51848
  _url2.searchParams.set("id", id);
51849
+ if (!token && !username) {
51850
+ console.error(`[remote-app] 不存在用户名和token ${id}. 权限认证会失败。`);
51851
+ }
51845
51852
  this.url = _url2.toString();
51846
51853
  this.id = id;
51847
51854
  this.autoReconnect = opts?.autoReconnect ?? true;
@@ -51873,6 +51880,18 @@ class RemoteApp {
51873
51880
  that.emitter.once("open", listenOnce);
51874
51881
  });
51875
51882
  }
51883
+ async waitVerify() {
51884
+ if (this.isVerified) {
51885
+ return true;
51886
+ }
51887
+ return new Promise((resolve) => {
51888
+ const listenOnce = () => {
51889
+ this.isVerified = true;
51890
+ resolve(true);
51891
+ };
51892
+ this.emitter.once("verified", listenOnce);
51893
+ });
51894
+ }
51876
51895
  getWsURL(url4) {
51877
51896
  const { protocol } = new URL(url4);
51878
51897
  if (protocol.startsWith("ws")) {
@@ -51999,6 +52018,7 @@ class RemoteApp {
51999
52018
  listenProxy() {
52000
52019
  const remoteApp = this;
52001
52020
  const app = this.mainApp;
52021
+ const username = this.username;
52002
52022
  const listenFn = async (event) => {
52003
52023
  try {
52004
52024
  const data = event.toString();
@@ -52006,11 +52026,16 @@ class RemoteApp {
52006
52026
  const bodyData = body?.data;
52007
52027
  const message = bodyData?.message || {};
52008
52028
  const context = bodyData?.context || {};
52029
+ console.log("[remote-app] 远程应用收到消息:", body);
52009
52030
  if (body?.code === 401) {
52010
- console.error("远程应用认证失败,请检查 token 是否正确");
52031
+ console.error("[remote-app] 远程应用认证失败,请检查 token 是否正确");
52011
52032
  this.isError = true;
52012
52033
  return;
52013
52034
  }
52035
+ if (body?.type === "verified") {
52036
+ remoteApp.emitter.emit("verified");
52037
+ return;
52038
+ }
52014
52039
  if (body?.type !== "proxy")
52015
52040
  return;
52016
52041
  if (!body.id) {
@@ -52033,13 +52058,15 @@ class RemoteApp {
52033
52058
  }
52034
52059
  });
52035
52060
  } catch (error49) {
52036
- console.error("处理远程代理请求出错:", error49);
52061
+ console.error("[remote-app] 处理远程代理请求出错:", error49);
52037
52062
  }
52038
52063
  };
52039
52064
  remoteApp.json({
52040
52065
  id: this.id,
52041
- type: "registryClient"
52066
+ type: "registryClient",
52067
+ username
52042
52068
  });
52069
+ console.log(`[remote-app] 远程应用 ${this.id} (${username}) 已注册到主应用,等待消息...`);
52043
52070
  remoteApp.emitter.on("message", listenFn);
52044
52071
  const closeMessage = () => {
52045
52072
  remoteApp.emitter.off("message", listenFn);
@@ -80981,10 +81008,11 @@ class AssistantApp extends Manager2 {
80981
81008
  }
80982
81009
  const url4 = new URL(shareUrl);
80983
81010
  const id = config4?.app?.id;
80984
- if (token && url4 && id) {
81011
+ if (url4 && id) {
80985
81012
  const remoteApp = new RemoteApp({
80986
81013
  url: url4.toString(),
80987
81014
  token,
81015
+ username: config4?.auth?.username || "",
80988
81016
  id,
80989
81017
  app: this.mainApp,
80990
81018
  autoReconnect: true,
@@ -91433,8 +91433,10 @@ class RemoteApp {
91433
91433
  mainApp;
91434
91434
  url;
91435
91435
  id;
91436
+ username;
91436
91437
  emitter;
91437
91438
  isConnected;
91439
+ isVerified;
91438
91440
  ws;
91439
91441
  remoteIsConnected;
91440
91442
  isError = false;
@@ -91451,12 +91453,17 @@ class RemoteApp {
91451
91453
  const token = opts.token;
91452
91454
  const url4 = opts.url;
91453
91455
  const id = opts.id;
91456
+ const username = opts.username;
91457
+ this.username = username;
91454
91458
  this.emitter = opts?.emitter || new import__2.default;
91455
91459
  const _url2 = new URL(url4);
91456
91460
  if (token) {
91457
91461
  _url2.searchParams.set("token", token);
91458
91462
  }
91459
91463
  _url2.searchParams.set("id", id);
91464
+ if (!token && !username) {
91465
+ console.error(`[remote-app] 不存在用户名和token ${id}. 权限认证会失败。`);
91466
+ }
91460
91467
  this.url = _url2.toString();
91461
91468
  this.id = id;
91462
91469
  this.autoReconnect = opts?.autoReconnect ?? true;
@@ -91488,6 +91495,18 @@ class RemoteApp {
91488
91495
  that.emitter.once("open", listenOnce);
91489
91496
  });
91490
91497
  }
91498
+ async waitVerify() {
91499
+ if (this.isVerified) {
91500
+ return true;
91501
+ }
91502
+ return new Promise((resolve) => {
91503
+ const listenOnce = () => {
91504
+ this.isVerified = true;
91505
+ resolve(true);
91506
+ };
91507
+ this.emitter.once("verified", listenOnce);
91508
+ });
91509
+ }
91491
91510
  getWsURL(url4) {
91492
91511
  const { protocol } = new URL(url4);
91493
91512
  if (protocol.startsWith("ws")) {
@@ -91614,6 +91633,7 @@ class RemoteApp {
91614
91633
  listenProxy() {
91615
91634
  const remoteApp = this;
91616
91635
  const app = this.mainApp;
91636
+ const username = this.username;
91617
91637
  const listenFn = async (event) => {
91618
91638
  try {
91619
91639
  const data = event.toString();
@@ -91621,11 +91641,16 @@ class RemoteApp {
91621
91641
  const bodyData = body?.data;
91622
91642
  const message = bodyData?.message || {};
91623
91643
  const context = bodyData?.context || {};
91644
+ console.log("[remote-app] 远程应用收到消息:", body);
91624
91645
  if (body?.code === 401) {
91625
- console.error("远程应用认证失败,请检查 token 是否正确");
91646
+ console.error("[remote-app] 远程应用认证失败,请检查 token 是否正确");
91626
91647
  this.isError = true;
91627
91648
  return;
91628
91649
  }
91650
+ if (body?.type === "verified") {
91651
+ remoteApp.emitter.emit("verified");
91652
+ return;
91653
+ }
91629
91654
  if (body?.type !== "proxy")
91630
91655
  return;
91631
91656
  if (!body.id) {
@@ -91648,13 +91673,15 @@ class RemoteApp {
91648
91673
  }
91649
91674
  });
91650
91675
  } catch (error49) {
91651
- console.error("处理远程代理请求出错:", error49);
91676
+ console.error("[remote-app] 处理远程代理请求出错:", error49);
91652
91677
  }
91653
91678
  };
91654
91679
  remoteApp.json({
91655
91680
  id: this.id,
91656
- type: "registryClient"
91681
+ type: "registryClient",
91682
+ username
91657
91683
  });
91684
+ console.log(`[remote-app] 远程应用 ${this.id} (${username}) 已注册到主应用,等待消息...`);
91658
91685
  remoteApp.emitter.on("message", listenFn);
91659
91686
  const closeMessage = () => {
91660
91687
  remoteApp.emitter.off("message", listenFn);
@@ -120014,10 +120041,11 @@ class AssistantApp extends Manager2 {
120014
120041
  }
120015
120042
  const url4 = new URL(shareUrl);
120016
120043
  const id = config4?.app?.id;
120017
- if (token && url4 && id) {
120044
+ if (url4 && id) {
120018
120045
  const remoteApp = new RemoteApp({
120019
120046
  url: url4.toString(),
120020
120047
  token,
120048
+ username: config4?.auth?.username || "",
120021
120049
  id,
120022
120050
  app: this.mainApp,
120023
120051
  autoReconnect: true,
package/dist/assistant.js CHANGED
@@ -36603,8 +36603,10 @@ class RemoteApp {
36603
36603
  mainApp;
36604
36604
  url;
36605
36605
  id;
36606
+ username;
36606
36607
  emitter;
36607
36608
  isConnected;
36609
+ isVerified;
36608
36610
  ws;
36609
36611
  remoteIsConnected;
36610
36612
  isError = false;
@@ -36621,12 +36623,17 @@ class RemoteApp {
36621
36623
  const token = opts.token;
36622
36624
  const url = opts.url;
36623
36625
  const id = opts.id;
36626
+ const username = opts.username;
36627
+ this.username = username;
36624
36628
  this.emitter = opts?.emitter || new import__2.default;
36625
36629
  const _url = new URL(url);
36626
36630
  if (token) {
36627
36631
  _url.searchParams.set("token", token);
36628
36632
  }
36629
36633
  _url.searchParams.set("id", id);
36634
+ if (!token && !username) {
36635
+ console.error(`[remote-app] 不存在用户名和token ${id}. 权限认证会失败。`);
36636
+ }
36630
36637
  this.url = _url.toString();
36631
36638
  this.id = id;
36632
36639
  this.autoReconnect = opts?.autoReconnect ?? true;
@@ -36658,6 +36665,18 @@ class RemoteApp {
36658
36665
  that.emitter.once("open", listenOnce);
36659
36666
  });
36660
36667
  }
36668
+ async waitVerify() {
36669
+ if (this.isVerified) {
36670
+ return true;
36671
+ }
36672
+ return new Promise((resolve) => {
36673
+ const listenOnce = () => {
36674
+ this.isVerified = true;
36675
+ resolve(true);
36676
+ };
36677
+ this.emitter.once("verified", listenOnce);
36678
+ });
36679
+ }
36661
36680
  getWsURL(url) {
36662
36681
  const { protocol } = new URL(url);
36663
36682
  if (protocol.startsWith("ws")) {
@@ -36784,6 +36803,7 @@ class RemoteApp {
36784
36803
  listenProxy() {
36785
36804
  const remoteApp = this;
36786
36805
  const app = this.mainApp;
36806
+ const username = this.username;
36787
36807
  const listenFn = async (event) => {
36788
36808
  try {
36789
36809
  const data = event.toString();
@@ -36791,11 +36811,16 @@ class RemoteApp {
36791
36811
  const bodyData = body?.data;
36792
36812
  const message = bodyData?.message || {};
36793
36813
  const context = bodyData?.context || {};
36814
+ console.log("[remote-app] 远程应用收到消息:", body);
36794
36815
  if (body?.code === 401) {
36795
- console.error("远程应用认证失败,请检查 token 是否正确");
36816
+ console.error("[remote-app] 远程应用认证失败,请检查 token 是否正确");
36796
36817
  this.isError = true;
36797
36818
  return;
36798
36819
  }
36820
+ if (body?.type === "verified") {
36821
+ remoteApp.emitter.emit("verified");
36822
+ return;
36823
+ }
36799
36824
  if (body?.type !== "proxy")
36800
36825
  return;
36801
36826
  if (!body.id) {
@@ -36818,13 +36843,15 @@ class RemoteApp {
36818
36843
  }
36819
36844
  });
36820
36845
  } catch (error2) {
36821
- console.error("处理远程代理请求出错:", error2);
36846
+ console.error("[remote-app] 处理远程代理请求出错:", error2);
36822
36847
  }
36823
36848
  };
36824
36849
  remoteApp.json({
36825
36850
  id: this.id,
36826
- type: "registryClient"
36851
+ type: "registryClient",
36852
+ username
36827
36853
  });
36854
+ console.log(`[remote-app] 远程应用 ${this.id} (${username}) 已注册到主应用,等待消息...`);
36828
36855
  remoteApp.emitter.on("message", listenFn);
36829
36856
  const closeMessage = () => {
36830
36857
  remoteApp.emitter.off("message", listenFn);
@@ -87240,10 +87267,11 @@ class AssistantApp extends Manager2 {
87240
87267
  }
87241
87268
  const url4 = new URL(shareUrl);
87242
87269
  const id = config5?.app?.id;
87243
- if (token && url4 && id) {
87270
+ if (url4 && id) {
87244
87271
  const remoteApp = new RemoteApp({
87245
87272
  url: url4.toString(),
87246
87273
  token,
87274
+ username: config5?.auth?.username || "",
87247
87275
  id,
87248
87276
  app: this.mainApp,
87249
87277
  autoReconnect: true,
package/dist/envision.js CHANGED
@@ -6388,6 +6388,184 @@ var require_jsonwebtoken = __commonJS((exports, module) => {
6388
6388
  };
6389
6389
  });
6390
6390
 
6391
+ // node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.js
6392
+ var require_eventemitter3 = __commonJS((exports, module) => {
6393
+ var has = Object.prototype.hasOwnProperty;
6394
+ var prefix = "~";
6395
+ function Events() {}
6396
+ if (Object.create) {
6397
+ Events.prototype = Object.create(null);
6398
+ if (!new Events().__proto__)
6399
+ prefix = false;
6400
+ }
6401
+ function EE(fn, context, once) {
6402
+ this.fn = fn;
6403
+ this.context = context;
6404
+ this.once = once || false;
6405
+ }
6406
+ function addListener(emitter, event, fn, context, once) {
6407
+ if (typeof fn !== "function") {
6408
+ throw new TypeError("The listener must be a function");
6409
+ }
6410
+ var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
6411
+ if (!emitter._events[evt])
6412
+ emitter._events[evt] = listener, emitter._eventsCount++;
6413
+ else if (!emitter._events[evt].fn)
6414
+ emitter._events[evt].push(listener);
6415
+ else
6416
+ emitter._events[evt] = [emitter._events[evt], listener];
6417
+ return emitter;
6418
+ }
6419
+ function clearEvent(emitter, evt) {
6420
+ if (--emitter._eventsCount === 0)
6421
+ emitter._events = new Events;
6422
+ else
6423
+ delete emitter._events[evt];
6424
+ }
6425
+ function EventEmitter4() {
6426
+ this._events = new Events;
6427
+ this._eventsCount = 0;
6428
+ }
6429
+ EventEmitter4.prototype.eventNames = function eventNames() {
6430
+ var names = [], events, name;
6431
+ if (this._eventsCount === 0)
6432
+ return names;
6433
+ for (name in events = this._events) {
6434
+ if (has.call(events, name))
6435
+ names.push(prefix ? name.slice(1) : name);
6436
+ }
6437
+ if (Object.getOwnPropertySymbols) {
6438
+ return names.concat(Object.getOwnPropertySymbols(events));
6439
+ }
6440
+ return names;
6441
+ };
6442
+ EventEmitter4.prototype.listeners = function listeners(event) {
6443
+ var evt = prefix ? prefix + event : event, handlers = this._events[evt];
6444
+ if (!handlers)
6445
+ return [];
6446
+ if (handlers.fn)
6447
+ return [handlers.fn];
6448
+ for (var i = 0, l = handlers.length, ee = new Array(l);i < l; i++) {
6449
+ ee[i] = handlers[i].fn;
6450
+ }
6451
+ return ee;
6452
+ };
6453
+ EventEmitter4.prototype.listenerCount = function listenerCount(event) {
6454
+ var evt = prefix ? prefix + event : event, listeners = this._events[evt];
6455
+ if (!listeners)
6456
+ return 0;
6457
+ if (listeners.fn)
6458
+ return 1;
6459
+ return listeners.length;
6460
+ };
6461
+ EventEmitter4.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
6462
+ var evt = prefix ? prefix + event : event;
6463
+ if (!this._events[evt])
6464
+ return false;
6465
+ var listeners = this._events[evt], len = arguments.length, args, i;
6466
+ if (listeners.fn) {
6467
+ if (listeners.once)
6468
+ this.removeListener(event, listeners.fn, undefined, true);
6469
+ switch (len) {
6470
+ case 1:
6471
+ return listeners.fn.call(listeners.context), true;
6472
+ case 2:
6473
+ return listeners.fn.call(listeners.context, a1), true;
6474
+ case 3:
6475
+ return listeners.fn.call(listeners.context, a1, a2), true;
6476
+ case 4:
6477
+ return listeners.fn.call(listeners.context, a1, a2, a3), true;
6478
+ case 5:
6479
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
6480
+ case 6:
6481
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
6482
+ }
6483
+ for (i = 1, args = new Array(len - 1);i < len; i++) {
6484
+ args[i - 1] = arguments[i];
6485
+ }
6486
+ listeners.fn.apply(listeners.context, args);
6487
+ } else {
6488
+ var length = listeners.length, j;
6489
+ for (i = 0;i < length; i++) {
6490
+ if (listeners[i].once)
6491
+ this.removeListener(event, listeners[i].fn, undefined, true);
6492
+ switch (len) {
6493
+ case 1:
6494
+ listeners[i].fn.call(listeners[i].context);
6495
+ break;
6496
+ case 2:
6497
+ listeners[i].fn.call(listeners[i].context, a1);
6498
+ break;
6499
+ case 3:
6500
+ listeners[i].fn.call(listeners[i].context, a1, a2);
6501
+ break;
6502
+ case 4:
6503
+ listeners[i].fn.call(listeners[i].context, a1, a2, a3);
6504
+ break;
6505
+ default:
6506
+ if (!args)
6507
+ for (j = 1, args = new Array(len - 1);j < len; j++) {
6508
+ args[j - 1] = arguments[j];
6509
+ }
6510
+ listeners[i].fn.apply(listeners[i].context, args);
6511
+ }
6512
+ }
6513
+ }
6514
+ return true;
6515
+ };
6516
+ EventEmitter4.prototype.on = function on(event, fn, context) {
6517
+ return addListener(this, event, fn, context, false);
6518
+ };
6519
+ EventEmitter4.prototype.once = function once(event, fn, context) {
6520
+ return addListener(this, event, fn, context, true);
6521
+ };
6522
+ EventEmitter4.prototype.removeListener = function removeListener(event, fn, context, once) {
6523
+ var evt = prefix ? prefix + event : event;
6524
+ if (!this._events[evt])
6525
+ return this;
6526
+ if (!fn) {
6527
+ clearEvent(this, evt);
6528
+ return this;
6529
+ }
6530
+ var listeners = this._events[evt];
6531
+ if (listeners.fn) {
6532
+ if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
6533
+ clearEvent(this, evt);
6534
+ }
6535
+ } else {
6536
+ for (var i = 0, events = [], length = listeners.length;i < length; i++) {
6537
+ if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {
6538
+ events.push(listeners[i]);
6539
+ }
6540
+ }
6541
+ if (events.length)
6542
+ this._events[evt] = events.length === 1 ? events[0] : events;
6543
+ else
6544
+ clearEvent(this, evt);
6545
+ }
6546
+ return this;
6547
+ };
6548
+ EventEmitter4.prototype.removeAllListeners = function removeAllListeners(event) {
6549
+ var evt;
6550
+ if (event) {
6551
+ evt = prefix ? prefix + event : event;
6552
+ if (this._events[evt])
6553
+ clearEvent(this, evt);
6554
+ } else {
6555
+ this._events = new Events;
6556
+ this._eventsCount = 0;
6557
+ }
6558
+ return this;
6559
+ };
6560
+ EventEmitter4.prototype.off = EventEmitter4.prototype.removeListener;
6561
+ EventEmitter4.prototype.addListener = EventEmitter4.prototype.on;
6562
+ EventEmitter4.prefixed = prefix;
6563
+ EventEmitter4.EventEmitter = EventEmitter4;
6564
+ if (typeof module !== "undefined") {
6565
+ module.exports = EventEmitter4;
6566
+ }
6567
+ });
6568
+
6391
6569
  // node_modules/.pnpm/fast-glob@3.3.3/node_modules/fast-glob/out/utils/array.js
6392
6570
  var require_array = __commonJS((exports) => {
6393
6571
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -22312,8 +22490,8 @@ InitEnv.init();
22312
22490
  var version = useContextKey("version", () => {
22313
22491
  let version2 = "0.0.64";
22314
22492
  try {
22315
- if ("0.1.15")
22316
- version2 = "0.1.15";
22493
+ if ("0.1.17")
22494
+ version2 = "0.1.17";
22317
22495
  } catch (e) {}
22318
22496
  return version2;
22319
22497
  });
@@ -23430,14 +23608,14 @@ var getEnvToken = () => {
23430
23608
  return envTokne;
23431
23609
  };
23432
23610
 
23433
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/key.js
23611
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/key.js
23434
23612
  var isUpKey = (key, keybindings = []) => key.name === "up" || keybindings.includes("vim") && key.name === "k" || keybindings.includes("emacs") && key.ctrl && key.name === "p";
23435
23613
  var isDownKey = (key, keybindings = []) => key.name === "down" || keybindings.includes("vim") && key.name === "j" || keybindings.includes("emacs") && key.ctrl && key.name === "n";
23436
23614
  var isBackspaceKey = (key) => key.name === "backspace";
23437
23615
  var isTabKey = (key) => key.name === "tab";
23438
23616
  var isNumberKey = (key) => "1234567890".includes(key.name);
23439
23617
  var isEnterKey = (key) => key.name === "enter" || key.name === "return";
23440
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/errors.js
23618
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/errors.js
23441
23619
  class AbortPromptError extends Error {
23442
23620
  name = "AbortPromptError";
23443
23621
  message = "Prompt was aborted";
@@ -23463,10 +23641,10 @@ class HookError extends Error {
23463
23641
  class ValidationError extends Error {
23464
23642
  name = "ValidationError";
23465
23643
  }
23466
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/use-state.js
23644
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/use-state.js
23467
23645
  import { AsyncResource as AsyncResource2 } from "node:async_hooks";
23468
23646
 
23469
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/hook-engine.js
23647
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/hook-engine.js
23470
23648
  import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
23471
23649
  var hookStorage = new AsyncLocalStorage;
23472
23650
  function createStore(rl) {
@@ -23571,7 +23749,7 @@ var effectScheduler = {
23571
23749
  }
23572
23750
  };
23573
23751
 
23574
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/use-state.js
23752
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/use-state.js
23575
23753
  function useState(defaultValue) {
23576
23754
  return withPointer((pointer) => {
23577
23755
  const setState = AsyncResource2.bind(function setState2(newValue) {
@@ -23589,7 +23767,7 @@ function useState(defaultValue) {
23589
23767
  });
23590
23768
  }
23591
23769
 
23592
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/use-effect.js
23770
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/use-effect.js
23593
23771
  function useEffect(cb, depArray) {
23594
23772
  withPointer((pointer) => {
23595
23773
  const oldDeps = pointer.get();
@@ -23601,7 +23779,7 @@ function useEffect(cb, depArray) {
23601
23779
  });
23602
23780
  }
23603
23781
 
23604
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/theme.js
23782
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/theme.js
23605
23783
  import { styleText } from "node:util";
23606
23784
 
23607
23785
  // node_modules/.pnpm/@inquirer+figures@2.0.3/node_modules/@inquirer/figures/dist/index.js
@@ -23893,7 +24071,7 @@ var figures = shouldUseMain ? mainSymbols : fallbackSymbols;
23893
24071
  var dist_default = figures;
23894
24072
  var replacements = Object.entries(specialMainSymbols);
23895
24073
 
23896
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/theme.js
24074
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/theme.js
23897
24075
  var defaultTheme = {
23898
24076
  prefix: {
23899
24077
  idle: styleText("blue", "?"),
@@ -23914,7 +24092,7 @@ var defaultTheme = {
23914
24092
  }
23915
24093
  };
23916
24094
 
23917
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/make-theme.js
24095
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/make-theme.js
23918
24096
  function isPlainObject(value) {
23919
24097
  if (typeof value !== "object" || value === null)
23920
24098
  return false;
@@ -23942,7 +24120,7 @@ function makeTheme(...themes) {
23942
24120
  return deepMerge(...themesToMerge);
23943
24121
  }
23944
24122
 
23945
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/use-prefix.js
24123
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/use-prefix.js
23946
24124
  function usePrefix({ status = "idle", theme }) {
23947
24125
  const [showLoader, setShowLoader] = useState(false);
23948
24126
  const [tick, setTick] = useState(0);
@@ -23972,7 +24150,7 @@ function usePrefix({ status = "idle", theme }) {
23972
24150
  const iconName = status === "loading" ? "idle" : status;
23973
24151
  return typeof prefix === "string" ? prefix : prefix[iconName] ?? prefix["idle"];
23974
24152
  }
23975
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/use-memo.js
24153
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/use-memo.js
23976
24154
  function useMemo(fn, dependencies) {
23977
24155
  return withPointer((pointer) => {
23978
24156
  const prev = pointer.get();
@@ -23984,11 +24162,11 @@ function useMemo(fn, dependencies) {
23984
24162
  return prev.value;
23985
24163
  });
23986
24164
  }
23987
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/use-ref.js
24165
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/use-ref.js
23988
24166
  function useRef(val) {
23989
24167
  return useState({ current: val })[0];
23990
24168
  }
23991
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/use-keypress.js
24169
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/use-keypress.js
23992
24170
  function useKeypress(userHandler) {
23993
24171
  const signal = useRef(userHandler);
23994
24172
  signal.current = userHandler;
@@ -24006,7 +24184,7 @@ function useKeypress(userHandler) {
24006
24184
  };
24007
24185
  }, []);
24008
24186
  }
24009
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/utils.js
24187
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/utils.js
24010
24188
  var import_cli_width = __toESM(require_cli_width(), 1);
24011
24189
 
24012
24190
  // node_modules/.pnpm/fast-string-truncated-width@3.0.3/node_modules/fast-string-truncated-width/dist/utils.js
@@ -24350,7 +24528,7 @@ function wrapAnsi(string, columns, options) {
24350
24528
  `);
24351
24529
  }
24352
24530
 
24353
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/utils.js
24531
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/utils.js
24354
24532
  function breakLines(content, width) {
24355
24533
  return content.split(`
24356
24534
  `).flatMap((line) => wrapAnsi(line, width, { trim: false, hard: true }).split(`
@@ -24361,7 +24539,7 @@ function readlineWidth() {
24361
24539
  return import_cli_width.default({ defaultWidth: 80, output: readline().output });
24362
24540
  }
24363
24541
 
24364
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
24542
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/pagination/use-pagination.js
24365
24543
  function usePointerPosition({ active, renderedItems, pageSize, loop }) {
24366
24544
  const state = useRef({
24367
24545
  lastPointer: active,
@@ -24427,7 +24605,7 @@ function usePagination({ items, active, renderItem, pageSize, loop = true }) {
24427
24605
  return pageBuffer.filter((line) => typeof line === "string").join(`
24428
24606
  `);
24429
24607
  }
24430
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/create-prompt.js
24608
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/create-prompt.js
24431
24609
  var import_mute_stream = __toESM(require_lib(), 1);
24432
24610
  import * as readline2 from "node:readline";
24433
24611
  import { AsyncResource as AsyncResource3 } from "node:async_hooks";
@@ -24640,7 +24818,7 @@ var {
24640
24818
  unload
24641
24819
  } = signalExitWrap(processOk(process3) ? new SignalExit(process3) : new SignalExitFallback);
24642
24820
 
24643
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/screen-manager.js
24821
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/screen-manager.js
24644
24822
  import { stripVTControlCharacters } from "node:util";
24645
24823
 
24646
24824
  // node_modules/.pnpm/@inquirer+ansi@2.0.3/node_modules/@inquirer/ansi/dist/index.js
@@ -24659,7 +24837,7 @@ var cursorTo = (x, y) => {
24659
24837
  var eraseLine = ESC2 + "2K";
24660
24838
  var eraseLines = (lines) => lines > 0 ? (eraseLine + cursorUp(1)).repeat(lines - 1) + eraseLine + cursorLeft : "";
24661
24839
 
24662
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/screen-manager.js
24840
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/screen-manager.js
24663
24841
  var height = (content) => content.split(`
24664
24842
  `).length;
24665
24843
  var lastLine = (content) => content.split(`
@@ -24724,7 +24902,7 @@ class ScreenManager {
24724
24902
  }
24725
24903
  }
24726
24904
 
24727
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/promise-polyfill.js
24905
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/promise-polyfill.js
24728
24906
  class PromisePolyfill extends Promise {
24729
24907
  static withResolver() {
24730
24908
  let resolve;
@@ -24737,7 +24915,7 @@ class PromisePolyfill extends Promise {
24737
24915
  }
24738
24916
  }
24739
24917
 
24740
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/create-prompt.js
24918
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/create-prompt.js
24741
24919
  var nativeSetImmediate = globalThis.setImmediate;
24742
24920
  function getCallSites() {
24743
24921
  const _prepareStackTrace = Error.prepareStackTrace;
@@ -24832,7 +25010,7 @@ function createPrompt(view) {
24832
25010
  };
24833
25011
  return prompt;
24834
25012
  }
24835
- // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.0/node_modules/@inquirer/core/dist/lib/Separator.js
25013
+ // node_modules/.pnpm/@inquirer+core@11.1.5_@types+node@25.3.3/node_modules/@inquirer/core/dist/lib/Separator.js
24836
25014
  import { styleText as styleText2 } from "node:util";
24837
25015
  class Separator {
24838
25016
  separator = styleText2("dim", Array.from({ length: 15 }).join(dist_default.line));
@@ -24846,7 +25024,7 @@ class Separator {
24846
25024
  return Boolean(choice && typeof choice === "object" && "type" in choice && choice.type === "separator");
24847
25025
  }
24848
25026
  }
24849
- // node_modules/.pnpm/@inquirer+confirm@6.0.8_@types+node@25.3.0/node_modules/@inquirer/confirm/dist/index.js
25027
+ // node_modules/.pnpm/@inquirer+confirm@6.0.8_@types+node@25.3.3/node_modules/@inquirer/confirm/dist/index.js
24850
25028
  function getBooleanValue(value, defaultValue) {
24851
25029
  let answer = defaultValue !== false;
24852
25030
  if (/^(y|yes)/i.test(value))
@@ -24891,7 +25069,7 @@ var dist_default4 = createPrompt((config, done) => {
24891
25069
  const message = theme.style.message(config.message, status);
24892
25070
  return `${prefix} ${message}${defaultValue} ${formattedValue}`;
24893
25071
  });
24894
- // node_modules/.pnpm/@inquirer+input@5.0.8_@types+node@25.3.0/node_modules/@inquirer/input/dist/index.js
25072
+ // node_modules/.pnpm/@inquirer+input@5.0.8_@types+node@25.3.3/node_modules/@inquirer/input/dist/index.js
24895
25073
  var inputTheme = {
24896
25074
  validationFailureMode: "keep"
24897
25075
  };
@@ -24975,7 +25153,7 @@ var dist_default5 = createPrompt((config, done) => {
24975
25153
  error
24976
25154
  ];
24977
25155
  });
24978
- // node_modules/.pnpm/@inquirer+select@5.1.0_@types+node@25.3.0/node_modules/@inquirer/select/dist/index.js
25156
+ // node_modules/.pnpm/@inquirer+select@5.1.0_@types+node@25.3.3/node_modules/@inquirer/select/dist/index.js
24979
25157
  import { styleText as styleText3 } from "node:util";
24980
25158
  var selectTheme = {
24981
25159
  icon: { cursor: dist_default.pointer },
@@ -25750,7 +25928,7 @@ class BaseQuery {
25750
25928
  }
25751
25929
  }
25752
25930
 
25753
- // node_modules/.pnpm/@kevisual+api@0.0.60_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/login-cache.ts
25931
+ // node_modules/.pnpm/@kevisual+api@0.0.62_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/login-cache.ts
25754
25932
  var defaultCacheData = {
25755
25933
  loginUsers: [],
25756
25934
  user: undefined,
@@ -25787,17 +25965,19 @@ class LoginCacheStore {
25787
25965
  }
25788
25966
  async init() {
25789
25967
  const defaultData = { ...this.cacheData };
25790
- if (this.cache.init) {
25791
- try {
25792
- const cacheData = await this.cache.init();
25793
- this.cacheData = cacheData || defaultData;
25794
- } catch (error) {
25795
- console.log("cacheInit error", error);
25968
+ return new Promise(async (resolve) => {
25969
+ if (this.cache.init) {
25970
+ try {
25971
+ const cacheData = await this.cache.init();
25972
+ this.cacheData = cacheData || defaultData;
25973
+ } catch (error) {
25974
+ console.log("cacheInit error", error);
25975
+ }
25976
+ } else {
25977
+ this.cacheData = await this.getValue() || defaultData;
25796
25978
  }
25797
- } else {
25798
- this.cacheData = await this.getValue() || defaultData;
25799
- }
25800
- return this.cacheData;
25979
+ resolve(this.cacheData);
25980
+ });
25801
25981
  }
25802
25982
  async setLoginUser(loginUser) {
25803
25983
  const has = this.cacheData.loginUsers.find((u) => u.id === loginUser.id);
@@ -26316,13 +26496,18 @@ class BaseLoad3 {
26316
26496
  }
26317
26497
  }
26318
26498
 
26319
- // node_modules/.pnpm/@kevisual+api@0.0.60_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login.ts
26499
+ // node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.mjs
26500
+ var import__2 = __toESM(require_eventemitter3(), 1);
26501
+
26502
+ // node_modules/.pnpm/@kevisual+api@0.0.62_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login.ts
26320
26503
  class QueryLogin extends BaseQuery {
26321
26504
  cacheStore;
26322
26505
  isBrowser;
26323
- load;
26324
26506
  storage;
26507
+ load = false;
26508
+ status = "init";
26325
26509
  onLoad;
26510
+ emitter = new import__2.default;
26326
26511
  constructor(opts) {
26327
26512
  super({
26328
26513
  query: opts?.query || new Query2
@@ -26335,14 +26520,29 @@ class QueryLogin extends BaseQuery {
26335
26520
  if (!this.storage) {
26336
26521
  throw new Error("storage is required");
26337
26522
  }
26523
+ this.cacheStore.init().then(() => {
26524
+ this.onLoad?.();
26525
+ this.load = true;
26526
+ this.emitter.emit("load");
26527
+ });
26338
26528
  }
26339
26529
  setQuery(query) {
26340
26530
  this.query = query;
26341
26531
  }
26342
26532
  async init() {
26343
- await this.cacheStore.init();
26344
- this.load = true;
26345
- this.onLoad?.();
26533
+ if (this.load) {
26534
+ return this.cacheStore.cacheData;
26535
+ }
26536
+ return new Promise(async (resolve) => {
26537
+ const timer = setTimeout(() => {
26538
+ resolve(this.cacheStore.cacheData);
26539
+ }, 1000 * 20);
26540
+ const listener = () => {
26541
+ clearTimeout(timer);
26542
+ resolve(this.cacheStore.cacheData);
26543
+ };
26544
+ this.emitter.once("load", listener);
26545
+ });
26346
26546
  }
26347
26547
  async post(data, opts) {
26348
26548
  try {
@@ -26708,7 +26908,7 @@ class QueryLogin extends BaseQuery {
26708
26908
  }
26709
26909
  }
26710
26910
 
26711
- // node_modules/.pnpm/@kevisual+api@0.0.60_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/login-node-cache.ts
26911
+ // node_modules/.pnpm/@kevisual+api@0.0.62_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/login-node-cache.ts
26712
26912
  import { homedir } from "node:os";
26713
26913
  import { join, dirname } from "node:path";
26714
26914
  import fs4 from "node:fs";
@@ -26852,7 +27052,7 @@ class LoginNodeCache {
26852
27052
  }
26853
27053
  }
26854
27054
 
26855
- // node_modules/.pnpm/@kevisual+api@0.0.60_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login-node.ts
27055
+ // node_modules/.pnpm/@kevisual+api@0.0.62_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login-node.ts
26856
27056
  var cache = new LoginNodeCache;
26857
27057
 
26858
27058
  class QueryLoginNode extends QueryLogin {
@@ -27598,6 +27798,24 @@ var logoutCommand = new Command("logout").description("退出登陆").action(asy
27598
27798
  }
27599
27799
  });
27600
27800
  program.addCommand(logoutCommand);
27801
+ // src/module/kevisual.ts
27802
+ class Kevisual {
27803
+ query;
27804
+ constructor() {
27805
+ this.query = query;
27806
+ }
27807
+ getAdminToken() {
27808
+ const res = this.query.post({
27809
+ path: "user",
27810
+ key: "token-create",
27811
+ payload: {
27812
+ loginType: "jwks"
27813
+ }
27814
+ });
27815
+ return res;
27816
+ }
27817
+ }
27818
+
27601
27819
  // src/command/ls-token.ts
27602
27820
  function isNumeric(str) {
27603
27821
  return /^-?\d+\.?\d*$/.test(str);
@@ -27628,6 +27846,18 @@ var tokenList = new Command("list").description("show token list").action(async
27628
27846
  console.log(queryLogin.cacheStore.cacheData);
27629
27847
  });
27630
27848
  token.addCommand(tokenList);
27849
+ var createToken = new Command("create").description("create jwks token").action(async (opts) => {
27850
+ const kevisual = new Kevisual;
27851
+ const res = await kevisual.getAdminToken();
27852
+ if (res.code === 200) {
27853
+ const jwtToken = res.data?.accessToken;
27854
+ console.log(`============jwt token============
27855
+
27856
+ `);
27857
+ console.log(jwtToken);
27858
+ }
27859
+ });
27860
+ token.addCommand(createToken);
27631
27861
  program.addCommand(token);
27632
27862
  var baseURL2 = new Command("baseURL").alias("base").description("show baseURL").option("-a, --add <baseURL>", "add baseURL").option("-r, --remove <number>", "remove baseURL number").option("-s, --set <number|string>", "set current baseURL, use number to set from list or string to set").option("-l, --list", "list baseURL").option("-c, --clear", "clear baseURL").action(async (opts) => {
27633
27863
  let config2 = getConfig2();
@@ -30007,7 +30237,10 @@ class SyncBase {
30007
30237
  const syncList = syncKeys.map((key) => {
30008
30238
  const value = sync[key];
30009
30239
  const filepath = path9.join(this.#dir, key);
30010
- if (filepath.includes("node_modules") || filepath.includes(".git")) {
30240
+ const dirs = path9.dirname(filepath).split(path9.sep);
30241
+ const hasGit = dirs.includes(".git");
30242
+ const hasNodeModules = dirs.includes("node_modules");
30243
+ if (hasGit || hasNodeModules) {
30011
30244
  return null;
30012
30245
  }
30013
30246
  if (typeof value === "string") {
@@ -30573,7 +30806,7 @@ var download = new Command("download").option("-d --dir <dir>", "配置目录").
30573
30806
  command8.addCommand(download);
30574
30807
  program.addCommand(command8);
30575
30808
 
30576
- // node_modules/.pnpm/@kevisual+api@0.0.60_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/dist/query-config.js
30809
+ // node_modules/.pnpm/@kevisual+api@0.0.62_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/dist/query-config.js
30577
30810
  var isTextForContentType3 = (contentType) => {
30578
30811
  if (!contentType)
30579
30812
  return false;
@@ -31009,7 +31242,7 @@ command9.addCommand(updateCommand);
31009
31242
  command9.addCommand(deleteCommand);
31010
31243
  program.addCommand(command9);
31011
31244
 
31012
- // node_modules/.pnpm/@kevisual+api@0.0.60_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/dist/query-secret.js
31245
+ // node_modules/.pnpm/@kevisual+api@0.0.62_@types+react@19.2.10_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/dist/query-secret.js
31013
31246
  var isTextForContentType4 = (contentType) => {
31014
31247
  if (!contentType)
31015
31248
  return false;
@@ -34326,7 +34559,7 @@ var getJWKS = new Command("get").description("获取 JWKS 内容").option("-d ,
34326
34559
  jwksCmd.addCommand(getJWKS);
34327
34560
  program.addCommand(jwksCmd);
34328
34561
 
34329
- // node_modules/.pnpm/@kevisual+cnb@0.0.32_dotenv@17.3.1_idb-keyval@6.2.2_ioredis@5.9.3/node_modules/@kevisual/cnb/dist/keep.js
34562
+ // node_modules/.pnpm/@kevisual+cnb@0.0.33_dotenv@17.3.1_idb-keyval@6.2.2_ioredis@5.9.3/node_modules/@kevisual/cnb/dist/keep.js
34330
34563
  import { createRequire as createRequire3 } from "node:module";
34331
34564
  var __create3 = Object.create;
34332
34565
  var __getProtoOf3 = Object.getPrototypeOf;
@@ -35947,7 +36180,7 @@ var require_extension = __commonJS3((exports, module) => {
35947
36180
  module.exports = { format, parse };
35948
36181
  });
35949
36182
  var require_websocket = __commonJS3((exports, module) => {
35950
- var EventEmitter4 = __require3("events");
36183
+ var EventEmitter5 = __require3("events");
35951
36184
  var https = __require3("https");
35952
36185
  var http = __require3("http");
35953
36186
  var net = __require3("net");
@@ -35980,7 +36213,7 @@ var require_websocket = __commonJS3((exports, module) => {
35980
36213
  var readyStates = ["CONNECTING", "OPEN", "CLOSING", "CLOSED"];
35981
36214
  var subprotocolRegex = /^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/;
35982
36215
 
35983
- class WebSocket2 extends EventEmitter4 {
36216
+ class WebSocket2 extends EventEmitter5 {
35984
36217
  constructor(address, protocols, options) {
35985
36218
  super();
35986
36219
  this._binaryType = BINARY_TYPES[0];
@@ -36851,7 +37084,7 @@ var require_subprotocol = __commonJS3((exports, module) => {
36851
37084
  module.exports = { parse };
36852
37085
  });
36853
37086
  var require_websocket_server = __commonJS3((exports, module) => {
36854
- var EventEmitter4 = __require3("events");
37087
+ var EventEmitter5 = __require3("events");
36855
37088
  var http = __require3("http");
36856
37089
  var { Duplex } = __require3("stream");
36857
37090
  var { createHash } = __require3("crypto");
@@ -36865,7 +37098,7 @@ var require_websocket_server = __commonJS3((exports, module) => {
36865
37098
  var CLOSING = 1;
36866
37099
  var CLOSED = 2;
36867
37100
 
36868
- class WebSocketServer extends EventEmitter4 {
37101
+ class WebSocketServer extends EventEmitter5 {
36869
37102
  constructor(options, callback) {
36870
37103
  super();
36871
37104
  options = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevisual/cli",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "envision 命令行工具",
5
5
  "type": "module",
6
6
  "basename": "/root/cli",
@@ -46,11 +46,11 @@
46
46
  "@kevisual/auth": "^2.0.3",
47
47
  "@kevisual/context": "^0.0.8",
48
48
  "@kevisual/use-config": "^1.0.30",
49
- "@opencode-ai/sdk": "^1.2.14",
49
+ "@opencode-ai/sdk": "^1.2.17",
50
50
  "@types/busboy": "^1.5.4",
51
51
  "busboy": "^1.6.0",
52
52
  "eventemitter3": "^5.0.4",
53
- "jose": "^6.1.3",
53
+ "jose": "^6.2.0",
54
54
  "lowdb": "^7.0.1",
55
55
  "lru-cache": "^11.2.6",
56
56
  "micromatch": "^4.0.8",
@@ -59,17 +59,17 @@
59
59
  "unstorage": "^1.17.4"
60
60
  },
61
61
  "devDependencies": {
62
- "@kevisual/api": "^0.0.60",
63
- "@kevisual/cnb": "^0.0.32",
62
+ "@kevisual/api": "^0.0.62",
63
+ "@kevisual/cnb": "^0.0.33",
64
64
  "@kevisual/dts": "^0.0.4",
65
65
  "@kevisual/load": "^0.0.6",
66
66
  "@kevisual/logger": "^0.0.4",
67
67
  "@kevisual/query": "0.0.52",
68
- "@types/bun": "^1.3.9",
68
+ "@types/bun": "^1.3.10",
69
69
  "@types/crypto-js": "^4.2.2",
70
70
  "@types/jsonwebtoken": "^9.0.10",
71
71
  "@types/micromatch": "^4.0.10",
72
- "@types/node": "^25.3.0",
72
+ "@types/node": "^25.3.3",
73
73
  "@types/semver": "^7.7.1",
74
74
  "chalk": "^5.6.2",
75
75
  "commander": "^14.0.3",
@@ -80,7 +80,7 @@
80
80
  "ignore": "^7.0.5",
81
81
  "jsonwebtoken": "^9.0.3",
82
82
  "pm2": "^6.0.14",
83
- "tar": "^7.5.9",
83
+ "tar": "^7.5.10",
84
84
  "zustand": "^5.0.11"
85
85
  },
86
86
  "engines": {