@qwen-code/qwen-code 0.14.0-preview.2 → 0.14.0-preview.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/cli.js +279 -248
  2. package/package.json +2 -2
package/cli.js CHANGED
@@ -3962,11 +3962,11 @@ var require_util2 = __commonJS({
3962
3962
  var { isUint8Array } = __require("node:util/types");
3963
3963
  var { webidl } = require_webidl();
3964
3964
  var supportedHashes = [];
3965
- var crypto17;
3965
+ var crypto18;
3966
3966
  try {
3967
- crypto17 = __require("node:crypto");
3967
+ crypto18 = __require("node:crypto");
3968
3968
  const possibleRelevantHashes = ["sha256", "sha384", "sha512"];
3969
- supportedHashes = crypto17.getHashes().filter((hash) => possibleRelevantHashes.includes(hash));
3969
+ supportedHashes = crypto18.getHashes().filter((hash) => possibleRelevantHashes.includes(hash));
3970
3970
  } catch {
3971
3971
  }
3972
3972
  function responseURL(response) {
@@ -4264,7 +4264,7 @@ var require_util2 = __commonJS({
4264
4264
  }
4265
4265
  __name(isURLPotentiallyTrustworthy, "isURLPotentiallyTrustworthy");
4266
4266
  function bytesMatch(bytes, metadataList) {
4267
- if (crypto17 === void 0) {
4267
+ if (crypto18 === void 0) {
4268
4268
  return true;
4269
4269
  }
4270
4270
  const parsedMetadata = parseMetadata(metadataList);
@@ -4279,7 +4279,7 @@ var require_util2 = __commonJS({
4279
4279
  for (const item of metadata2) {
4280
4280
  const algorithm = item.algo;
4281
4281
  const expectedValue = item.hash;
4282
- let actualValue = crypto17.createHash(algorithm).update(bytes).digest("base64");
4282
+ let actualValue = crypto18.createHash(algorithm).update(bytes).digest("base64");
4283
4283
  if (actualValue[actualValue.length - 1] === "=") {
4284
4284
  if (actualValue[actualValue.length - 2] === "=") {
4285
4285
  actualValue = actualValue.slice(0, -2);
@@ -5405,8 +5405,8 @@ var require_body = __commonJS({
5405
5405
  var { multipartFormDataParser } = require_formdata_parser();
5406
5406
  var random2;
5407
5407
  try {
5408
- const crypto17 = __require("node:crypto");
5409
- random2 = /* @__PURE__ */ __name((max) => crypto17.randomInt(0, max), "random");
5408
+ const crypto18 = __require("node:crypto");
5409
+ random2 = /* @__PURE__ */ __name((max) => crypto18.randomInt(0, max), "random");
5410
5410
  } catch {
5411
5411
  random2 = /* @__PURE__ */ __name((max) => Math.floor(Math.random(max)), "random");
5412
5412
  }
@@ -17197,13 +17197,13 @@ var require_frame = __commonJS({
17197
17197
  init_esbuild_shims();
17198
17198
  var { maxUnsigned16Bit } = require_constants5();
17199
17199
  var BUFFER_SIZE = 16386;
17200
- var crypto17;
17200
+ var crypto18;
17201
17201
  var buffer = null;
17202
17202
  var bufIdx = BUFFER_SIZE;
17203
17203
  try {
17204
- crypto17 = __require("node:crypto");
17204
+ crypto18 = __require("node:crypto");
17205
17205
  } catch {
17206
- crypto17 = {
17206
+ crypto18 = {
17207
17207
  // not full compatibility, but minimum.
17208
17208
  randomFillSync: /* @__PURE__ */ __name(function randomFillSync(buffer2, _offset, _size3) {
17209
17209
  for (let i4 = 0; i4 < buffer2.length; ++i4) {
@@ -17216,7 +17216,7 @@ var require_frame = __commonJS({
17216
17216
  function generateMask() {
17217
17217
  if (bufIdx === BUFFER_SIZE) {
17218
17218
  bufIdx = 0;
17219
- crypto17.randomFillSync(buffer ??= Buffer.allocUnsafe(BUFFER_SIZE), 0, BUFFER_SIZE);
17219
+ crypto18.randomFillSync(buffer ??= Buffer.allocUnsafe(BUFFER_SIZE), 0, BUFFER_SIZE);
17220
17220
  }
17221
17221
  return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]];
17222
17222
  }
@@ -17293,9 +17293,9 @@ var require_connection = __commonJS({
17293
17293
  var { Headers: Headers6, getHeadersList } = require_headers();
17294
17294
  var { getDecodeSplit } = require_util2();
17295
17295
  var { WebsocketFrameSend } = require_frame();
17296
- var crypto17;
17296
+ var crypto18;
17297
17297
  try {
17298
- crypto17 = __require("node:crypto");
17298
+ crypto18 = __require("node:crypto");
17299
17299
  } catch {
17300
17300
  }
17301
17301
  function establishWebSocketConnection(url3, protocols, client, ws2, onEstablish, options2) {
@@ -17315,7 +17315,7 @@ var require_connection = __commonJS({
17315
17315
  const headersList = getHeadersList(new Headers6(options2.headers));
17316
17316
  request4.headersList = headersList;
17317
17317
  }
17318
- const keyValue = crypto17.randomBytes(16).toString("base64");
17318
+ const keyValue = crypto18.randomBytes(16).toString("base64");
17319
17319
  request4.headersList.append("sec-websocket-key", keyValue);
17320
17320
  request4.headersList.append("sec-websocket-version", "13");
17321
17321
  for (const protocol of protocols) {
@@ -17345,7 +17345,7 @@ var require_connection = __commonJS({
17345
17345
  return;
17346
17346
  }
17347
17347
  const secWSAccept = response.headersList.get("Sec-WebSocket-Accept");
17348
- const digest = crypto17.createHash("sha1").update(keyValue + uid).digest("base64");
17348
+ const digest = crypto18.createHash("sha1").update(keyValue + uid).digest("base64");
17349
17349
  if (secWSAccept !== digest) {
17350
17350
  failWebsocketConnection(ws2, "Incorrect hash received in Sec-WebSocket-Accept header.");
17351
17351
  return;
@@ -43802,7 +43802,7 @@ var require_gaxios = __commonJS({
43802
43802
  var retry_js_1 = require_retry2();
43803
43803
  var stream_1 = __require("stream");
43804
43804
  var interceptor_js_1 = require_interceptor();
43805
- var randomUUID12 = /* @__PURE__ */ __name(async () => globalThis.crypto?.randomUUID() || (await import("crypto")).randomUUID(), "randomUUID");
43805
+ var randomUUID15 = /* @__PURE__ */ __name(async () => globalThis.crypto?.randomUUID() || (await import("crypto")).randomUUID(), "randomUUID");
43806
43806
  var HTTP_STATUS_NO_CONTENT = 204;
43807
43807
  var Gaxios = class {
43808
43808
  static {
@@ -44078,7 +44078,7 @@ var require_gaxios = __commonJS({
44078
44078
  */
44079
44079
  ["Blob", "File", "FormData"].includes(opts.data?.constructor?.name || "");
44080
44080
  if (opts.multipart?.length) {
44081
- const boundary = await randomUUID12();
44081
+ const boundary = await randomUUID15();
44082
44082
  preparedHeaders.set("content-type", `multipart/related; boundary=${boundary}`);
44083
44083
  opts.body = stream_1.Readable.from(this.getMultipartRequest(opts.multipart, boundary));
44084
44084
  } else if (shouldDirectlyPassData) {
@@ -47055,25 +47055,25 @@ var require_crypto2 = __commonJS({
47055
47055
  init_esbuild_shims();
47056
47056
  Object.defineProperty(exports2, "__esModule", { value: true });
47057
47057
  exports2.NodeCrypto = void 0;
47058
- var crypto17 = __require("crypto");
47058
+ var crypto18 = __require("crypto");
47059
47059
  var NodeCrypto = class {
47060
47060
  static {
47061
47061
  __name(this, "NodeCrypto");
47062
47062
  }
47063
47063
  async sha256DigestBase64(str2) {
47064
- return crypto17.createHash("sha256").update(str2).digest("base64");
47064
+ return crypto18.createHash("sha256").update(str2).digest("base64");
47065
47065
  }
47066
47066
  randomBytesBase64(count) {
47067
- return crypto17.randomBytes(count).toString("base64");
47067
+ return crypto18.randomBytes(count).toString("base64");
47068
47068
  }
47069
47069
  async verify(pubkey, data, signature) {
47070
- const verifier = crypto17.createVerify("RSA-SHA256");
47070
+ const verifier = crypto18.createVerify("RSA-SHA256");
47071
47071
  verifier.update(data);
47072
47072
  verifier.end();
47073
47073
  return verifier.verify(pubkey, signature, "base64");
47074
47074
  }
47075
47075
  async sign(privateKey, data) {
47076
- const signer = crypto17.createSign("RSA-SHA256");
47076
+ const signer = crypto18.createSign("RSA-SHA256");
47077
47077
  signer.update(data);
47078
47078
  signer.end();
47079
47079
  return signer.sign(privateKey, "base64");
@@ -47091,7 +47091,7 @@ var require_crypto2 = __commonJS({
47091
47091
  * string in hexadecimal encoding.
47092
47092
  */
47093
47093
  async sha256DigestHex(str2) {
47094
- return crypto17.createHash("sha256").update(str2).digest("hex");
47094
+ return crypto18.createHash("sha256").update(str2).digest("hex");
47095
47095
  }
47096
47096
  /**
47097
47097
  * Computes the HMAC hash of a message using the provided crypto key and the
@@ -47103,7 +47103,7 @@ var require_crypto2 = __commonJS({
47103
47103
  */
47104
47104
  async signWithHmacSha256(key, msg) {
47105
47105
  const cryptoKey = typeof key === "string" ? key : toBuffer(key);
47106
- return toArrayBuffer(crypto17.createHmac("sha256", cryptoKey).update(msg).digest());
47106
+ return toArrayBuffer(crypto18.createHmac("sha256", cryptoKey).update(msg).digest());
47107
47107
  }
47108
47108
  };
47109
47109
  exports2.NodeCrypto = NodeCrypto;
@@ -48050,10 +48050,10 @@ var require_oauth2client = __commonJS({
48050
48050
  * https://github.com/googleapis/google-auth-library-nodejs/blob/main/samples/oauth2-codeVerifier.js
48051
48051
  */
48052
48052
  async generateCodeVerifierAsync() {
48053
- const crypto17 = (0, crypto_1.createCrypto)();
48054
- const randomString2 = crypto17.randomBytesBase64(96);
48053
+ const crypto18 = (0, crypto_1.createCrypto)();
48054
+ const randomString2 = crypto18.randomBytesBase64(96);
48055
48055
  const codeVerifier = randomString2.replace(/\+/g, "~").replace(/=/g, "_").replace(/\//g, "-");
48056
- const unencodedCodeChallenge = await crypto17.sha256DigestBase64(codeVerifier);
48056
+ const unencodedCodeChallenge = await crypto18.sha256DigestBase64(codeVerifier);
48057
48057
  const codeChallenge = unencodedCodeChallenge.split("=")[0].replace(/\+/g, "-").replace(/\//g, "_");
48058
48058
  return { codeVerifier, codeChallenge };
48059
48059
  }
@@ -48494,7 +48494,7 @@ var require_oauth2client = __commonJS({
48494
48494
  * @return Returns a promise resolving to LoginTicket on verification.
48495
48495
  */
48496
48496
  async verifySignedJwtWithCertsAsync(jwt2, certs, requiredAudience, issuers, maxExpiry) {
48497
- const crypto17 = (0, crypto_1.createCrypto)();
48497
+ const crypto18 = (0, crypto_1.createCrypto)();
48498
48498
  if (!maxExpiry) {
48499
48499
  maxExpiry = _OAuth2Client.DEFAULT_MAX_TOKEN_LIFETIME_SECS_;
48500
48500
  }
@@ -48507,7 +48507,7 @@ var require_oauth2client = __commonJS({
48507
48507
  let envelope;
48508
48508
  let payload;
48509
48509
  try {
48510
- envelope = JSON.parse(crypto17.decodeBase64StringUtf8(segments[0]));
48510
+ envelope = JSON.parse(crypto18.decodeBase64StringUtf8(segments[0]));
48511
48511
  } catch (err2) {
48512
48512
  if (err2 instanceof Error) {
48513
48513
  err2.message = `Can't parse token envelope: ${segments[0]}': ${err2.message}`;
@@ -48518,7 +48518,7 @@ var require_oauth2client = __commonJS({
48518
48518
  throw new Error("Can't parse token envelope: " + segments[0]);
48519
48519
  }
48520
48520
  try {
48521
- payload = JSON.parse(crypto17.decodeBase64StringUtf8(segments[1]));
48521
+ payload = JSON.parse(crypto18.decodeBase64StringUtf8(segments[1]));
48522
48522
  } catch (err2) {
48523
48523
  if (err2 instanceof Error) {
48524
48524
  err2.message = `Can't parse token payload '${segments[0]}`;
@@ -48535,7 +48535,7 @@ var require_oauth2client = __commonJS({
48535
48535
  if (envelope.alg === "ES256") {
48536
48536
  signature = formatEcdsa.joseToDer(signature, "ES256").toString("base64");
48537
48537
  }
48538
- const verified = await crypto17.verify(cert, signed, signature);
48538
+ const verified = await crypto18.verify(cert, signed, signature);
48539
48539
  if (!verified) {
48540
48540
  throw new Error("Invalid token signature: " + jwt2);
48541
48541
  }
@@ -48933,14 +48933,14 @@ var require_jwa = __commonJS({
48933
48933
  "node_modules/jwa/index.js"(exports2, module2) {
48934
48934
  init_esbuild_shims();
48935
48935
  var Buffer9 = require_safe_buffer().Buffer;
48936
- var crypto17 = __require("crypto");
48936
+ var crypto18 = __require("crypto");
48937
48937
  var formatEcdsa = require_ecdsa_sig_formatter();
48938
48938
  var util5 = __require("util");
48939
48939
  var MSG_INVALID_ALGORITHM = '"%s" is not a valid algorithm.\n Supported algorithms are:\n "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512" and "none".';
48940
48940
  var MSG_INVALID_SECRET = "secret must be a string or buffer";
48941
48941
  var MSG_INVALID_VERIFIER_KEY = "key must be a string or a buffer";
48942
48942
  var MSG_INVALID_SIGNER_KEY = "key must be a string, a buffer or an object";
48943
- var supportsKeyObjects = typeof crypto17.createPublicKey === "function";
48943
+ var supportsKeyObjects = typeof crypto18.createPublicKey === "function";
48944
48944
  if (supportsKeyObjects) {
48945
48945
  MSG_INVALID_VERIFIER_KEY += " or a KeyObject";
48946
48946
  MSG_INVALID_SECRET += "or a KeyObject";
@@ -49038,18 +49038,18 @@ var require_jwa = __commonJS({
49038
49038
  return /* @__PURE__ */ __name(function sign(thing, secret) {
49039
49039
  checkIsSecretKey(secret);
49040
49040
  thing = normalizeInput(thing);
49041
- var hmac = crypto17.createHmac("sha" + bits, secret);
49041
+ var hmac = crypto18.createHmac("sha" + bits, secret);
49042
49042
  var sig = (hmac.update(thing), hmac.digest("base64"));
49043
49043
  return fromBase64(sig);
49044
49044
  }, "sign");
49045
49045
  }
49046
49046
  __name(createHmacSigner, "createHmacSigner");
49047
49047
  var bufferEqual;
49048
- var timingSafeEqual = "timingSafeEqual" in crypto17 ? /* @__PURE__ */ __name(function timingSafeEqual2(a2, b2) {
49048
+ var timingSafeEqual = "timingSafeEqual" in crypto18 ? /* @__PURE__ */ __name(function timingSafeEqual2(a2, b2) {
49049
49049
  if (a2.byteLength !== b2.byteLength) {
49050
49050
  return false;
49051
49051
  }
49052
- return crypto17.timingSafeEqual(a2, b2);
49052
+ return crypto18.timingSafeEqual(a2, b2);
49053
49053
  }, "timingSafeEqual") : /* @__PURE__ */ __name(function timingSafeEqual2(a2, b2) {
49054
49054
  if (!bufferEqual) {
49055
49055
  bufferEqual = require_buffer_equal_constant_time();
@@ -49067,7 +49067,7 @@ var require_jwa = __commonJS({
49067
49067
  return /* @__PURE__ */ __name(function sign(thing, privateKey) {
49068
49068
  checkIsPrivateKey(privateKey);
49069
49069
  thing = normalizeInput(thing);
49070
- var signer = crypto17.createSign("RSA-SHA" + bits);
49070
+ var signer = crypto18.createSign("RSA-SHA" + bits);
49071
49071
  var sig = (signer.update(thing), signer.sign(privateKey, "base64"));
49072
49072
  return fromBase64(sig);
49073
49073
  }, "sign");
@@ -49078,7 +49078,7 @@ var require_jwa = __commonJS({
49078
49078
  checkIsPublicKey(publicKey);
49079
49079
  thing = normalizeInput(thing);
49080
49080
  signature = toBase64(signature);
49081
- var verifier = crypto17.createVerify("RSA-SHA" + bits);
49081
+ var verifier = crypto18.createVerify("RSA-SHA" + bits);
49082
49082
  verifier.update(thing);
49083
49083
  return verifier.verify(publicKey, signature, "base64");
49084
49084
  }, "verify");
@@ -49088,11 +49088,11 @@ var require_jwa = __commonJS({
49088
49088
  return /* @__PURE__ */ __name(function sign(thing, privateKey) {
49089
49089
  checkIsPrivateKey(privateKey);
49090
49090
  thing = normalizeInput(thing);
49091
- var signer = crypto17.createSign("RSA-SHA" + bits);
49091
+ var signer = crypto18.createSign("RSA-SHA" + bits);
49092
49092
  var sig = (signer.update(thing), signer.sign({
49093
49093
  key: privateKey,
49094
- padding: crypto17.constants.RSA_PKCS1_PSS_PADDING,
49095
- saltLength: crypto17.constants.RSA_PSS_SALTLEN_DIGEST
49094
+ padding: crypto18.constants.RSA_PKCS1_PSS_PADDING,
49095
+ saltLength: crypto18.constants.RSA_PSS_SALTLEN_DIGEST
49096
49096
  }, "base64"));
49097
49097
  return fromBase64(sig);
49098
49098
  }, "sign");
@@ -49103,12 +49103,12 @@ var require_jwa = __commonJS({
49103
49103
  checkIsPublicKey(publicKey);
49104
49104
  thing = normalizeInput(thing);
49105
49105
  signature = toBase64(signature);
49106
- var verifier = crypto17.createVerify("RSA-SHA" + bits);
49106
+ var verifier = crypto18.createVerify("RSA-SHA" + bits);
49107
49107
  verifier.update(thing);
49108
49108
  return verifier.verify({
49109
49109
  key: publicKey,
49110
- padding: crypto17.constants.RSA_PKCS1_PSS_PADDING,
49111
- saltLength: crypto17.constants.RSA_PSS_SALTLEN_DIGEST
49110
+ padding: crypto18.constants.RSA_PKCS1_PSS_PADDING,
49111
+ saltLength: crypto18.constants.RSA_PSS_SALTLEN_DIGEST
49112
49112
  }, signature, "base64");
49113
49113
  }, "verify");
49114
49114
  }
@@ -52035,15 +52035,15 @@ var require_awsrequestsigner = __commonJS({
52035
52035
  }
52036
52036
  };
52037
52037
  exports2.AwsRequestSigner = AwsRequestSigner;
52038
- async function sign(crypto17, key, msg) {
52039
- return await crypto17.signWithHmacSha256(key, msg);
52038
+ async function sign(crypto18, key, msg) {
52039
+ return await crypto18.signWithHmacSha256(key, msg);
52040
52040
  }
52041
52041
  __name(sign, "sign");
52042
- async function getSigningKey(crypto17, key, dateStamp, region, serviceName) {
52043
- const kDate = await sign(crypto17, `AWS4${key}`, dateStamp);
52044
- const kRegion = await sign(crypto17, kDate, region);
52045
- const kService = await sign(crypto17, kRegion, serviceName);
52046
- const kSigning = await sign(crypto17, kService, "aws4_request");
52042
+ async function getSigningKey(crypto18, key, dateStamp, region, serviceName) {
52043
+ const kDate = await sign(crypto18, `AWS4${key}`, dateStamp);
52044
+ const kRegion = await sign(crypto18, kDate, region);
52045
+ const kService = await sign(crypto18, kRegion, serviceName);
52046
+ const kSigning = await sign(crypto18, kService, "aws4_request");
52047
52047
  return kSigning;
52048
52048
  }
52049
52049
  __name(getSigningKey, "getSigningKey");
@@ -53821,24 +53821,24 @@ var require_googleauth = __commonJS({
53821
53821
  const signed = await client.sign(data);
53822
53822
  return signed.signedBlob;
53823
53823
  }
53824
- const crypto17 = (0, crypto_1.createCrypto)();
53824
+ const crypto18 = (0, crypto_1.createCrypto)();
53825
53825
  if (client instanceof jwtclient_1.JWT && client.key) {
53826
- const sign = await crypto17.sign(client.key, data);
53826
+ const sign = await crypto18.sign(client.key, data);
53827
53827
  return sign;
53828
53828
  }
53829
53829
  const creds = await this.getCredentials();
53830
53830
  if (!creds.client_email) {
53831
53831
  throw new Error("Cannot sign data without `client_email`.");
53832
53832
  }
53833
- return this.signBlob(crypto17, creds.client_email, data, endpoint);
53833
+ return this.signBlob(crypto18, creds.client_email, data, endpoint);
53834
53834
  }
53835
- async signBlob(crypto17, emailOrUniqueId, data, endpoint) {
53835
+ async signBlob(crypto18, emailOrUniqueId, data, endpoint) {
53836
53836
  const url3 = new URL(endpoint + `${emailOrUniqueId}:signBlob`);
53837
53837
  const res = await this.request({
53838
53838
  method: "POST",
53839
53839
  url: url3.href,
53840
53840
  data: {
53841
- payload: crypto17.encodeBase64StringUtf8(data)
53841
+ payload: crypto18.encodeBase64StringUtf8(data)
53842
53842
  },
53843
53843
  retry: true,
53844
53844
  retryConfig: {
@@ -90499,8 +90499,8 @@ function sanitizeHookName(hookName) {
90499
90499
  }
90500
90500
  if (command2.includes("/") || command2.includes("\\")) {
90501
90501
  const pathParts = command2.split(/[/\\]/);
90502
- const basename29 = pathParts[pathParts.length - 1];
90503
- return basename29 || "unknown-command";
90502
+ const basename32 = pathParts[pathParts.length - 1];
90503
+ return basename32 || "unknown-command";
90504
90504
  }
90505
90505
  return command2;
90506
90506
  }
@@ -148625,13 +148625,13 @@ var init_uuid = __esm({
148625
148625
  "node_modules/openai/internal/utils/uuid.mjs"() {
148626
148626
  init_esbuild_shims();
148627
148627
  uuid4 = /* @__PURE__ */ __name(function() {
148628
- const { crypto: crypto17 } = globalThis;
148629
- if (crypto17?.randomUUID) {
148630
- uuid4 = crypto17.randomUUID.bind(crypto17);
148631
- return crypto17.randomUUID();
148628
+ const { crypto: crypto18 } = globalThis;
148629
+ if (crypto18?.randomUUID) {
148630
+ uuid4 = crypto18.randomUUID.bind(crypto18);
148631
+ return crypto18.randomUUID();
148632
148632
  }
148633
148633
  const u8 = new Uint8Array(1);
148634
- const randomByte = crypto17 ? () => crypto17.getRandomValues(u8)[0] : () => Math.random() * 255 & 255;
148634
+ const randomByte = crypto18 ? () => crypto18.getRandomValues(u8)[0] : () => Math.random() * 255 & 255;
148635
148635
  return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (c4) => (+c4 ^ randomByte() & 15 >> +c4 / 4).toString(16));
148636
148636
  }, "uuid4");
148637
148637
  }
@@ -171295,7 +171295,7 @@ __export(geminiContentGenerator_exports, {
171295
171295
  createGeminiContentGenerator: () => createGeminiContentGenerator
171296
171296
  });
171297
171297
  function createGeminiContentGenerator(config2, gcConfig) {
171298
- const version2 = "0.14.0-preview.2";
171298
+ const version2 = "0.14.0-preview.3";
171299
171299
  const userAgent2 = config2.userAgent || `QwenCode/${version2} (${process.platform}; ${process.arch})`;
171300
171300
  const baseHeaders = {
171301
171301
  "User-Agent": userAgent2
@@ -242869,10 +242869,10 @@ var init_esm20 = __esm({
242869
242869
  }
242870
242870
  async _formatEntry(dirent, path140) {
242871
242871
  let entry;
242872
- const basename29 = this._isDirent ? dirent.name : dirent;
242872
+ const basename32 = this._isDirent ? dirent.name : dirent;
242873
242873
  try {
242874
- const fullPath = presolve(pjoin(path140, basename29));
242875
- entry = { path: prelative(this._root, fullPath), fullPath, basename: basename29 };
242874
+ const fullPath = presolve(pjoin(path140, basename32));
242875
+ entry = { path: prelative(this._root, fullPath), fullPath, basename: basename32 };
242876
242876
  entry[this._statsProp] = this._isDirent ? dirent : await this._stat(fullPath);
242877
242877
  } catch (err2) {
242878
242878
  this._onError(err2);
@@ -243406,9 +243406,9 @@ var init_handler = __esm({
243406
243406
  _watchWithNodeFs(path140, listener) {
243407
243407
  const opts = this.fsw.options;
243408
243408
  const directory = sysPath.dirname(path140);
243409
- const basename29 = sysPath.basename(path140);
243409
+ const basename32 = sysPath.basename(path140);
243410
243410
  const parent = this.fsw._getWatchedDir(directory);
243411
- parent.add(basename29);
243411
+ parent.add(basename32);
243412
243412
  const absolutePath = sysPath.resolve(path140);
243413
243413
  const options2 = {
243414
243414
  persistent: opts.persistent
@@ -243418,7 +243418,7 @@ var init_handler = __esm({
243418
243418
  let closer;
243419
243419
  if (opts.usePolling) {
243420
243420
  const enableBin = opts.interval !== opts.binaryInterval;
243421
- options2.interval = enableBin && isBinaryPath(basename29) ? opts.binaryInterval : opts.interval;
243421
+ options2.interval = enableBin && isBinaryPath(basename32) ? opts.binaryInterval : opts.interval;
243422
243422
  closer = setFsWatchFileListener(path140, absolutePath, options2, {
243423
243423
  listener,
243424
243424
  rawEmitter: this.fsw._emitRaw
@@ -243441,10 +243441,10 @@ var init_handler = __esm({
243441
243441
  return;
243442
243442
  }
243443
243443
  const dirname33 = sysPath.dirname(file2);
243444
- const basename29 = sysPath.basename(file2);
243444
+ const basename32 = sysPath.basename(file2);
243445
243445
  const parent = this.fsw._getWatchedDir(dirname33);
243446
243446
  let prevStats = stats;
243447
- if (parent.has(basename29))
243447
+ if (parent.has(basename32))
243448
243448
  return;
243449
243449
  const listener = /* @__PURE__ */ __name(async (path140, newStats) => {
243450
243450
  if (!this.fsw._throttle(THROTTLE_MODE_WATCH, file2, 5))
@@ -243469,9 +243469,9 @@ var init_handler = __esm({
243469
243469
  prevStats = newStats2;
243470
243470
  }
243471
243471
  } catch (error40) {
243472
- this.fsw._remove(dirname33, basename29);
243472
+ this.fsw._remove(dirname33, basename32);
243473
243473
  }
243474
- } else if (parent.has(basename29)) {
243474
+ } else if (parent.has(basename32)) {
243475
243475
  const at2 = newStats.atimeMs;
243476
243476
  const mt2 = newStats.mtimeMs;
243477
243477
  if (!at2 || at2 <= mt2 || mt2 !== prevStats.mtimeMs) {
@@ -258348,7 +258348,7 @@ var require_main = __commonJS({
258348
258348
  var fs126 = __require("fs");
258349
258349
  var path140 = __require("path");
258350
258350
  var os55 = __require("os");
258351
- var crypto17 = __require("crypto");
258351
+ var crypto18 = __require("crypto");
258352
258352
  var packageJson4 = require_package5();
258353
258353
  var version2 = packageJson4.version;
258354
258354
  var TIPS = [
@@ -258603,7 +258603,7 @@ var require_main = __commonJS({
258603
258603
  const authTag = ciphertext.subarray(-16);
258604
258604
  ciphertext = ciphertext.subarray(12, -16);
258605
258605
  try {
258606
- const aesgcm = crypto17.createDecipheriv("aes-256-gcm", key, nonce);
258606
+ const aesgcm = crypto18.createDecipheriv("aes-256-gcm", key, nonce);
258607
258607
  aesgcm.setAuthTag(authTag);
258608
258608
  return `${aesgcm.update(ciphertext)}${aesgcm.final()}`;
258609
258609
  } catch (error40) {
@@ -341800,8 +341800,8 @@ var require_command_exists = __commonJS({
341800
341800
  var isPathName = /[\\]/.test(s5);
341801
341801
  if (isPathName) {
341802
341802
  var dirname33 = '"' + path140.dirname(s5) + '"';
341803
- var basename29 = '"' + path140.basename(s5) + '"';
341804
- return dirname33 + ":" + basename29;
341803
+ var basename32 = '"' + path140.basename(s5) + '"';
341804
+ return dirname33 + ":" + basename32;
341805
341805
  }
341806
341806
  return '"' + s5 + '"';
341807
341807
  }, "cleanInput");
@@ -350597,7 +350597,7 @@ var require_client3 = __commonJS({
350597
350597
  return mod2 && mod2.__esModule ? mod2 : { "default": mod2 };
350598
350598
  };
350599
350599
  Object.defineProperty(exports2, "__esModule", { value: true });
350600
- var crypto17 = __importStar(__require("crypto"));
350600
+ var crypto18 = __importStar(__require("crypto"));
350601
350601
  var fs126 = __importStar(__require("fs"));
350602
350602
  var promises_1 = __require("fs/promises");
350603
350603
  var https8 = __importStar(__require("https"));
@@ -350676,7 +350676,7 @@ var require_client3 = __commonJS({
350676
350676
  payload[field] = JSON.stringify(payload[field]);
350677
350677
  }
350678
350678
  }
350679
- const boundary = crypto17.randomBytes(32).toString("hex");
350679
+ const boundary = crypto18.randomBytes(32).toString("hex");
350680
350680
  const formData = new multipart_stream_1.default(boundary);
350681
350681
  await Promise.all(Object.keys(payload).map((key) => (
350682
350682
  // @ts-expect-error payload[key] can obviously index payload, but TS doesn't trust us
@@ -350705,7 +350705,7 @@ var require_client3 = __commonJS({
350705
350705
  return;
350706
350706
  }
350707
350707
  if (id === "thumb" || id === "thumbnail") {
350708
- const attachmentId = crypto17.randomBytes(16).toString("hex");
350708
+ const attachmentId = crypto18.randomBytes(16).toString("hex");
350709
350709
  await attachFormMedia(form, value, attachmentId, agent);
350710
350710
  return form.addPart({
350711
350711
  headers: { "content-disposition": `form-data; name="${id}"` },
@@ -350718,11 +350718,11 @@ var require_client3 = __commonJS({
350718
350718
  if (typeof item.media !== "object") {
350719
350719
  return await Promise.resolve(item);
350720
350720
  }
350721
- const attachmentId = crypto17.randomBytes(16).toString("hex");
350721
+ const attachmentId = crypto18.randomBytes(16).toString("hex");
350722
350722
  await attachFormMedia(form, item.media, attachmentId, agent);
350723
350723
  const thumb = (_a7 = item.thumb) !== null && _a7 !== void 0 ? _a7 : item.thumbnail;
350724
350724
  if (typeof thumb === "object") {
350725
- const thumbAttachmentId = crypto17.randomBytes(16).toString("hex");
350725
+ const thumbAttachmentId = crypto18.randomBytes(16).toString("hex");
350726
350726
  await attachFormMedia(form, thumb, thumbAttachmentId, agent);
350727
350727
  return {
350728
350728
  ...item,
@@ -350738,7 +350738,7 @@ var require_client3 = __commonJS({
350738
350738
  });
350739
350739
  }
350740
350740
  if (value && typeof value === "object" && (0, check_1.hasProp)(value, "media") && (0, check_1.hasProp)(value, "type") && typeof value.media !== "undefined" && typeof value.type !== "undefined") {
350741
- const attachmentId = crypto17.randomBytes(16).toString("hex");
350741
+ const attachmentId = crypto18.randomBytes(16).toString("hex");
350742
350742
  await attachFormMedia(form, value.media, attachmentId, agent);
350743
350743
  return form.addPart({
350744
350744
  headers: { "content-disposition": `form-data; name="${id}"` },
@@ -352405,7 +352405,7 @@ var require_safe_compare = __commonJS({
352405
352405
  "node_modules/safe-compare/index.js"(exports2, module2) {
352406
352406
  "use strict";
352407
352407
  init_esbuild_shims();
352408
- var crypto17 = __require("crypto");
352408
+ var crypto18 = __require("crypto");
352409
352409
  var bufferAlloc = require_buffer_alloc();
352410
352410
  var safeCompare = /* @__PURE__ */ __name(function safeCompare2(a2, b2) {
352411
352411
  var strA = String(a2);
@@ -352430,9 +352430,9 @@ var require_safe_compare = __commonJS({
352430
352430
  bufA.write(strA);
352431
352431
  var bufB = bufferAlloc(aLen, 0, "utf8");
352432
352432
  bufB.write(strB);
352433
- return crypto17.timingSafeEqual(bufA, bufB) && aLen === bLen;
352433
+ return crypto18.timingSafeEqual(bufA, bufB) && aLen === bLen;
352434
352434
  }, "nativeTimingSafeEqual");
352435
- module2.exports = typeof crypto17.timingSafeEqual !== "undefined" ? nativeTimingSafeEqual : safeCompare;
352435
+ module2.exports = typeof crypto18.timingSafeEqual !== "undefined" ? nativeTimingSafeEqual : safeCompare;
352436
352436
  }
352437
352437
  });
352438
352438
 
@@ -352473,7 +352473,7 @@ var require_telegraf = __commonJS({
352473
352473
  };
352474
352474
  Object.defineProperty(exports2, "__esModule", { value: true });
352475
352475
  exports2.Telegraf = void 0;
352476
- var crypto17 = __importStar(__require("crypto"));
352476
+ var crypto18 = __importStar(__require("crypto"));
352477
352477
  var http8 = __importStar(__require("http"));
352478
352478
  var https8 = __importStar(__require("https"));
352479
352479
  var composer_1 = require_composer();
@@ -352601,7 +352601,7 @@ var require_telegraf = __commonJS({
352601
352601
  return this;
352602
352602
  }
352603
352603
  secretPathComponent() {
352604
- return crypto17.createHash("sha3-256").update(this.token).update(process.version).digest("hex");
352604
+ return crypto18.createHash("sha3-256").update(this.token).update(process.version).digest("hex");
352605
352605
  }
352606
352606
  /**
352607
352607
  * @see https://github.com/telegraf/telegraf/discussions/1344#discussioncomment-335700
@@ -364358,7 +364358,7 @@ var require_form_data = __commonJS({
364358
364358
  var parseUrl = __require("url").parse;
364359
364359
  var fs126 = __require("fs");
364360
364360
  var Stream9 = __require("stream").Stream;
364361
- var crypto17 = __require("crypto");
364361
+ var crypto18 = __require("crypto");
364362
364362
  var mime = require_mime_types();
364363
364363
  var asynckit = require_asynckit();
364364
364364
  var setToStringTag = require_es_set_tostringtag();
@@ -364565,7 +364565,7 @@ var require_form_data = __commonJS({
364565
364565
  return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]);
364566
364566
  };
364567
364567
  FormData7.prototype._generateBoundary = function() {
364568
- this._boundary = "--------------------------" + crypto17.randomBytes(12).toString("hex");
364568
+ this._boundary = "--------------------------" + crypto18.randomBytes(12).toString("hex");
364569
364569
  };
364570
364570
  FormData7.prototype.getLengthSync = function() {
364571
364571
  var knownLength = this._overheadLength + this._valueLength;
@@ -369177,11 +369177,11 @@ var require_util24 = __commonJS({
369177
369177
  var { isUint8Array } = __require("node:util/types");
369178
369178
  var { webidl } = require_webidl2();
369179
369179
  var supportedHashes = [];
369180
- var crypto17;
369180
+ var crypto18;
369181
369181
  try {
369182
- crypto17 = __require("node:crypto");
369182
+ crypto18 = __require("node:crypto");
369183
369183
  const possibleRelevantHashes = ["sha256", "sha384", "sha512"];
369184
- supportedHashes = crypto17.getHashes().filter((hash) => possibleRelevantHashes.includes(hash));
369184
+ supportedHashes = crypto18.getHashes().filter((hash) => possibleRelevantHashes.includes(hash));
369185
369185
  } catch {
369186
369186
  }
369187
369187
  function responseURL(response) {
@@ -369479,7 +369479,7 @@ var require_util24 = __commonJS({
369479
369479
  }
369480
369480
  __name(isURLPotentiallyTrustworthy, "isURLPotentiallyTrustworthy");
369481
369481
  function bytesMatch(bytes, metadataList) {
369482
- if (crypto17 === void 0) {
369482
+ if (crypto18 === void 0) {
369483
369483
  return true;
369484
369484
  }
369485
369485
  const parsedMetadata = parseMetadata(metadataList);
@@ -369494,7 +369494,7 @@ var require_util24 = __commonJS({
369494
369494
  for (const item of metadata2) {
369495
369495
  const algorithm = item.algo;
369496
369496
  const expectedValue = item.hash;
369497
- let actualValue = crypto17.createHash(algorithm).update(bytes).digest("base64");
369497
+ let actualValue = crypto18.createHash(algorithm).update(bytes).digest("base64");
369498
369498
  if (actualValue[actualValue.length - 1] === "=") {
369499
369499
  if (actualValue[actualValue.length - 2] === "=") {
369500
369500
  actualValue = actualValue.slice(0, -2);
@@ -370620,8 +370620,8 @@ var require_body2 = __commonJS({
370620
370620
  var { multipartFormDataParser } = require_formdata_parser2();
370621
370621
  var random2;
370622
370622
  try {
370623
- const crypto17 = __require("node:crypto");
370624
- random2 = /* @__PURE__ */ __name((max) => crypto17.randomInt(0, max), "random");
370623
+ const crypto18 = __require("node:crypto");
370624
+ random2 = /* @__PURE__ */ __name((max) => crypto18.randomInt(0, max), "random");
370625
370625
  } catch {
370626
370626
  random2 = /* @__PURE__ */ __name((max) => Math.floor(Math.random(max)), "random");
370627
370627
  }
@@ -382412,13 +382412,13 @@ var require_frame2 = __commonJS({
382412
382412
  init_esbuild_shims();
382413
382413
  var { maxUnsigned16Bit } = require_constants18();
382414
382414
  var BUFFER_SIZE = 16386;
382415
- var crypto17;
382415
+ var crypto18;
382416
382416
  var buffer = null;
382417
382417
  var bufIdx = BUFFER_SIZE;
382418
382418
  try {
382419
- crypto17 = __require("node:crypto");
382419
+ crypto18 = __require("node:crypto");
382420
382420
  } catch {
382421
- crypto17 = {
382421
+ crypto18 = {
382422
382422
  // not full compatibility, but minimum.
382423
382423
  randomFillSync: /* @__PURE__ */ __name(function randomFillSync(buffer2, _offset, _size3) {
382424
382424
  for (let i4 = 0; i4 < buffer2.length; ++i4) {
@@ -382431,7 +382431,7 @@ var require_frame2 = __commonJS({
382431
382431
  function generateMask() {
382432
382432
  if (bufIdx === BUFFER_SIZE) {
382433
382433
  bufIdx = 0;
382434
- crypto17.randomFillSync(buffer ??= Buffer.allocUnsafe(BUFFER_SIZE), 0, BUFFER_SIZE);
382434
+ crypto18.randomFillSync(buffer ??= Buffer.allocUnsafe(BUFFER_SIZE), 0, BUFFER_SIZE);
382435
382435
  }
382436
382436
  return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]];
382437
382437
  }
@@ -382508,9 +382508,9 @@ var require_connection2 = __commonJS({
382508
382508
  var { Headers: Headers6, getHeadersList } = require_headers2();
382509
382509
  var { getDecodeSplit } = require_util24();
382510
382510
  var { WebsocketFrameSend } = require_frame2();
382511
- var crypto17;
382511
+ var crypto18;
382512
382512
  try {
382513
- crypto17 = __require("node:crypto");
382513
+ crypto18 = __require("node:crypto");
382514
382514
  } catch {
382515
382515
  }
382516
382516
  function establishWebSocketConnection(url3, protocols, client, ws2, onEstablish, options2) {
@@ -382530,7 +382530,7 @@ var require_connection2 = __commonJS({
382530
382530
  const headersList = getHeadersList(new Headers6(options2.headers));
382531
382531
  request4.headersList = headersList;
382532
382532
  }
382533
- const keyValue = crypto17.randomBytes(16).toString("base64");
382533
+ const keyValue = crypto18.randomBytes(16).toString("base64");
382534
382534
  request4.headersList.append("sec-websocket-key", keyValue);
382535
382535
  request4.headersList.append("sec-websocket-version", "13");
382536
382536
  for (const protocol of protocols) {
@@ -382560,7 +382560,7 @@ var require_connection2 = __commonJS({
382560
382560
  return;
382561
382561
  }
382562
382562
  const secWSAccept = response.headersList.get("Sec-WebSocket-Accept");
382563
- const digest = crypto17.createHash("sha1").update(keyValue + uid).digest("base64");
382563
+ const digest = crypto18.createHash("sha1").update(keyValue + uid).digest("base64");
382564
382564
  if (secWSAccept !== digest) {
382565
382565
  failWebsocketConnection(ws2, "Incorrect hash received in Sec-WebSocket-Accept header.");
382566
382566
  return;
@@ -392713,7 +392713,7 @@ var require_gaxios2 = __commonJS({
392713
392713
  var retry_js_1 = require_retry4();
392714
392714
  var stream_1 = __require("stream");
392715
392715
  var interceptor_js_1 = require_interceptor2();
392716
- var randomUUID12 = /* @__PURE__ */ __name(async () => globalThis.crypto?.randomUUID() || (await import("crypto")).randomUUID(), "randomUUID");
392716
+ var randomUUID15 = /* @__PURE__ */ __name(async () => globalThis.crypto?.randomUUID() || (await import("crypto")).randomUUID(), "randomUUID");
392717
392717
  var HTTP_STATUS_NO_CONTENT = 204;
392718
392718
  var Gaxios = class {
392719
392719
  static {
@@ -392989,7 +392989,7 @@ var require_gaxios2 = __commonJS({
392989
392989
  */
392990
392990
  ["Blob", "File", "FormData"].includes(opts.data?.constructor?.name || "");
392991
392991
  if (opts.multipart?.length) {
392992
- const boundary = await randomUUID12();
392992
+ const boundary = await randomUUID15();
392993
392993
  preparedHeaders.set("content-type", `multipart/related; boundary=${boundary}`);
392994
392994
  opts.body = stream_1.Readable.from(this.getMultipartRequest(opts.multipart, boundary));
392995
392995
  } else if (shouldDirectlyPassData) {
@@ -394072,25 +394072,25 @@ var require_crypto5 = __commonJS({
394072
394072
  init_esbuild_shims();
394073
394073
  Object.defineProperty(exports2, "__esModule", { value: true });
394074
394074
  exports2.NodeCrypto = void 0;
394075
- var crypto17 = __require("crypto");
394075
+ var crypto18 = __require("crypto");
394076
394076
  var NodeCrypto = class {
394077
394077
  static {
394078
394078
  __name(this, "NodeCrypto");
394079
394079
  }
394080
394080
  async sha256DigestBase64(str2) {
394081
- return crypto17.createHash("sha256").update(str2).digest("base64");
394081
+ return crypto18.createHash("sha256").update(str2).digest("base64");
394082
394082
  }
394083
394083
  randomBytesBase64(count) {
394084
- return crypto17.randomBytes(count).toString("base64");
394084
+ return crypto18.randomBytes(count).toString("base64");
394085
394085
  }
394086
394086
  async verify(pubkey, data, signature) {
394087
- const verifier = crypto17.createVerify("RSA-SHA256");
394087
+ const verifier = crypto18.createVerify("RSA-SHA256");
394088
394088
  verifier.update(data);
394089
394089
  verifier.end();
394090
394090
  return verifier.verify(pubkey, signature, "base64");
394091
394091
  }
394092
394092
  async sign(privateKey, data) {
394093
- const signer = crypto17.createSign("RSA-SHA256");
394093
+ const signer = crypto18.createSign("RSA-SHA256");
394094
394094
  signer.update(data);
394095
394095
  signer.end();
394096
394096
  return signer.sign(privateKey, "base64");
@@ -394108,7 +394108,7 @@ var require_crypto5 = __commonJS({
394108
394108
  * string in hexadecimal encoding.
394109
394109
  */
394110
394110
  async sha256DigestHex(str2) {
394111
- return crypto17.createHash("sha256").update(str2).digest("hex");
394111
+ return crypto18.createHash("sha256").update(str2).digest("hex");
394112
394112
  }
394113
394113
  /**
394114
394114
  * Computes the HMAC hash of a message using the provided crypto key and the
@@ -394120,7 +394120,7 @@ var require_crypto5 = __commonJS({
394120
394120
  */
394121
394121
  async signWithHmacSha256(key, msg) {
394122
394122
  const cryptoKey = typeof key === "string" ? key : toBuffer(key);
394123
- return toArrayBuffer(crypto17.createHmac("sha256", cryptoKey).update(msg).digest());
394123
+ return toArrayBuffer(crypto18.createHmac("sha256", cryptoKey).update(msg).digest());
394124
394124
  }
394125
394125
  };
394126
394126
  exports2.NodeCrypto = NodeCrypto;
@@ -394833,10 +394833,10 @@ var require_oauth2client2 = __commonJS({
394833
394833
  * https://github.com/googleapis/google-auth-library-nodejs/blob/main/samples/oauth2-codeVerifier.js
394834
394834
  */
394835
394835
  async generateCodeVerifierAsync() {
394836
- const crypto17 = (0, crypto_1.createCrypto)();
394837
- const randomString2 = crypto17.randomBytesBase64(96);
394836
+ const crypto18 = (0, crypto_1.createCrypto)();
394837
+ const randomString2 = crypto18.randomBytesBase64(96);
394838
394838
  const codeVerifier = randomString2.replace(/\+/g, "~").replace(/=/g, "_").replace(/\//g, "-");
394839
- const unencodedCodeChallenge = await crypto17.sha256DigestBase64(codeVerifier);
394839
+ const unencodedCodeChallenge = await crypto18.sha256DigestBase64(codeVerifier);
394840
394840
  const codeChallenge = unencodedCodeChallenge.split("=")[0].replace(/\+/g, "-").replace(/\//g, "_");
394841
394841
  return { codeVerifier, codeChallenge };
394842
394842
  }
@@ -395277,7 +395277,7 @@ var require_oauth2client2 = __commonJS({
395277
395277
  * @return Returns a promise resolving to LoginTicket on verification.
395278
395278
  */
395279
395279
  async verifySignedJwtWithCertsAsync(jwt2, certs, requiredAudience, issuers, maxExpiry) {
395280
- const crypto17 = (0, crypto_1.createCrypto)();
395280
+ const crypto18 = (0, crypto_1.createCrypto)();
395281
395281
  if (!maxExpiry) {
395282
395282
  maxExpiry = _OAuth2Client.DEFAULT_MAX_TOKEN_LIFETIME_SECS_;
395283
395283
  }
@@ -395290,7 +395290,7 @@ var require_oauth2client2 = __commonJS({
395290
395290
  let envelope;
395291
395291
  let payload;
395292
395292
  try {
395293
- envelope = JSON.parse(crypto17.decodeBase64StringUtf8(segments[0]));
395293
+ envelope = JSON.parse(crypto18.decodeBase64StringUtf8(segments[0]));
395294
395294
  } catch (err2) {
395295
395295
  if (err2 instanceof Error) {
395296
395296
  err2.message = `Can't parse token envelope: ${segments[0]}': ${err2.message}`;
@@ -395301,7 +395301,7 @@ var require_oauth2client2 = __commonJS({
395301
395301
  throw new Error("Can't parse token envelope: " + segments[0]);
395302
395302
  }
395303
395303
  try {
395304
- payload = JSON.parse(crypto17.decodeBase64StringUtf8(segments[1]));
395304
+ payload = JSON.parse(crypto18.decodeBase64StringUtf8(segments[1]));
395305
395305
  } catch (err2) {
395306
395306
  if (err2 instanceof Error) {
395307
395307
  err2.message = `Can't parse token payload '${segments[0]}`;
@@ -395318,7 +395318,7 @@ var require_oauth2client2 = __commonJS({
395318
395318
  if (envelope.alg === "ES256") {
395319
395319
  signature = formatEcdsa.joseToDer(signature, "ES256").toString("base64");
395320
395320
  }
395321
- const verified = await crypto17.verify(cert, signed, signature);
395321
+ const verified = await crypto18.verify(cert, signed, signature);
395322
395322
  if (!verified) {
395323
395323
  throw new Error("Invalid token signature: " + jwt2);
395324
395324
  }
@@ -398234,15 +398234,15 @@ var require_awsrequestsigner2 = __commonJS({
398234
398234
  }
398235
398235
  };
398236
398236
  exports2.AwsRequestSigner = AwsRequestSigner;
398237
- async function sign(crypto17, key, msg) {
398238
- return await crypto17.signWithHmacSha256(key, msg);
398237
+ async function sign(crypto18, key, msg) {
398238
+ return await crypto18.signWithHmacSha256(key, msg);
398239
398239
  }
398240
398240
  __name(sign, "sign");
398241
- async function getSigningKey(crypto17, key, dateStamp, region, serviceName) {
398242
- const kDate = await sign(crypto17, `AWS4${key}`, dateStamp);
398243
- const kRegion = await sign(crypto17, kDate, region);
398244
- const kService = await sign(crypto17, kRegion, serviceName);
398245
- const kSigning = await sign(crypto17, kService, "aws4_request");
398241
+ async function getSigningKey(crypto18, key, dateStamp, region, serviceName) {
398242
+ const kDate = await sign(crypto18, `AWS4${key}`, dateStamp);
398243
+ const kRegion = await sign(crypto18, kDate, region);
398244
+ const kService = await sign(crypto18, kRegion, serviceName);
398245
+ const kSigning = await sign(crypto18, kService, "aws4_request");
398246
398246
  return kSigning;
398247
398247
  }
398248
398248
  __name(getSigningKey, "getSigningKey");
@@ -400020,24 +400020,24 @@ var require_googleauth2 = __commonJS({
400020
400020
  const signed = await client.sign(data);
400021
400021
  return signed.signedBlob;
400022
400022
  }
400023
- const crypto17 = (0, crypto_1.createCrypto)();
400023
+ const crypto18 = (0, crypto_1.createCrypto)();
400024
400024
  if (client instanceof jwtclient_1.JWT && client.key) {
400025
- const sign = await crypto17.sign(client.key, data);
400025
+ const sign = await crypto18.sign(client.key, data);
400026
400026
  return sign;
400027
400027
  }
400028
400028
  const creds = await this.getCredentials();
400029
400029
  if (!creds.client_email) {
400030
400030
  throw new Error("Cannot sign data without `client_email`.");
400031
400031
  }
400032
- return this.signBlob(crypto17, creds.client_email, data, endpoint);
400032
+ return this.signBlob(crypto18, creds.client_email, data, endpoint);
400033
400033
  }
400034
- async signBlob(crypto17, emailOrUniqueId, data, endpoint) {
400034
+ async signBlob(crypto18, emailOrUniqueId, data, endpoint) {
400035
400035
  const url3 = new URL(endpoint + `${emailOrUniqueId}:signBlob`);
400036
400036
  const res = await this.request({
400037
400037
  method: "POST",
400038
400038
  url: url3.href,
400039
400039
  data: {
400040
- payload: crypto17.encodeBase64StringUtf8(data)
400040
+ payload: crypto18.encodeBase64StringUtf8(data)
400041
400041
  },
400042
400042
  retry: true,
400043
400043
  retryConfig: {
@@ -412613,7 +412613,7 @@ var measure_element_default = measureElement;
412613
412613
  var import_react166 = __toESM(require_react(), 1);
412614
412614
  import dns2 from "node:dns";
412615
412615
  import os54 from "node:os";
412616
- import { basename as basename28 } from "node:path";
412616
+ import { basename as basename31 } from "node:path";
412617
412617
  import v8 from "node:v8";
412618
412618
 
412619
412619
  // packages/cli/src/config/auth.ts
@@ -424275,7 +424275,7 @@ __name(getPackageJson, "getPackageJson");
424275
424275
  // packages/cli/src/utils/version.ts
424276
424276
  async function getCliVersion() {
424277
424277
  const pkgJson = await getPackageJson();
424278
- return "0.14.0-preview.2";
424278
+ return "0.14.0-preview.3";
424279
424279
  }
424280
424280
  __name(getCliVersion, "getCliVersion");
424281
424281
 
@@ -430357,6 +430357,7 @@ var SenderGate = class {
430357
430357
 
430358
430358
  // packages/channels/base/dist/PairingStore.js
430359
430359
  init_esbuild_shims();
430360
+ import * as crypto14 from "node:crypto";
430360
430361
  import * as fs93 from "node:fs";
430361
430362
  import * as path99 from "node:path";
430362
430363
  import * as os33 from "node:os";
@@ -430462,7 +430463,7 @@ var PairingStore = class {
430462
430463
  function generateCode() {
430463
430464
  let code2 = "";
430464
430465
  for (let i4 = 0; i4 < CODE_LENGTH; i4++) {
430465
- code2 += SAFE_ALPHABET[Math.floor(Math.random() * SAFE_ALPHABET.length)];
430466
+ code2 += SAFE_ALPHABET[crypto14.randomInt(SAFE_ALPHABET.length)];
430466
430467
  }
430467
430468
  return code2;
430468
430469
  }
@@ -430483,20 +430484,26 @@ var SessionRouter = class {
430483
430484
  // session ID → cwd
430484
430485
  bridge;
430485
430486
  defaultCwd;
430486
- scope;
430487
+ defaultScope;
430488
+ channelScopes = /* @__PURE__ */ new Map();
430487
430489
  persistPath;
430488
430490
  constructor(bridge, defaultCwd, scope = "user", persistPath) {
430489
430491
  this.bridge = bridge;
430490
430492
  this.defaultCwd = defaultCwd;
430491
- this.scope = scope;
430493
+ this.defaultScope = scope;
430492
430494
  this.persistPath = persistPath;
430493
430495
  }
430494
430496
  /** Replace the bridge instance (used after crash recovery restart). */
430495
430497
  setBridge(bridge) {
430496
430498
  this.bridge = bridge;
430497
430499
  }
430500
+ /** Set scope override for a specific channel. */
430501
+ setChannelScope(channelName, scope) {
430502
+ this.channelScopes.set(channelName, scope);
430503
+ }
430498
430504
  routingKey(channelName, senderId, chatId, threadId) {
430499
- switch (this.scope) {
430505
+ const scope = this.channelScopes.get(channelName) || this.defaultScope;
430506
+ switch (scope) {
430500
430507
  case "thread":
430501
430508
  return `${channelName}:${threadId || chatId}`;
430502
430509
  case "single":
@@ -430533,31 +430540,38 @@ var SessionRouter = class {
430533
430540
  }
430534
430541
  return false;
430535
430542
  }
430543
+ /**
430544
+ * Remove session(s) for the given sender. Returns the removed session IDs.
430545
+ */
430536
430546
  removeSession(channelName, senderId, chatId) {
430547
+ const removedIds = [];
430537
430548
  if (chatId) {
430538
430549
  const key = this.routingKey(channelName, senderId, chatId);
430539
- return this.deleteByKey(key);
430540
- }
430541
- let removed = false;
430542
- const prefix = `${channelName}:${senderId}`;
430543
- for (const k2 of [...this.toSession.keys()]) {
430544
- if (k2.startsWith(prefix)) {
430545
- this.deleteByKey(k2);
430546
- removed = true;
430550
+ const sessionId = this.deleteByKey(key);
430551
+ if (sessionId)
430552
+ removedIds.push(sessionId);
430553
+ } else {
430554
+ const prefix = `${channelName}:${senderId}`;
430555
+ for (const k2 of [...this.toSession.keys()]) {
430556
+ if (k2.startsWith(prefix)) {
430557
+ const sessionId = this.deleteByKey(k2);
430558
+ if (sessionId)
430559
+ removedIds.push(sessionId);
430560
+ }
430547
430561
  }
430548
430562
  }
430549
- if (removed)
430563
+ if (removedIds.length > 0)
430550
430564
  this.persist();
430551
- return removed;
430565
+ return removedIds;
430552
430566
  }
430553
430567
  deleteByKey(key) {
430554
430568
  const sessionId = this.toSession.get(key);
430555
430569
  if (!sessionId)
430556
- return false;
430570
+ return null;
430557
430571
  this.toSession.delete(key);
430558
430572
  this.toTarget.delete(sessionId);
430559
430573
  this.toCwd.delete(sessionId);
430560
- return true;
430574
+ return sessionId;
430561
430575
  }
430562
430576
  /** Get all session entries for crash recovery. */
430563
430577
  getAll() {
@@ -430718,9 +430732,11 @@ var ChannelBase = class {
430718
430732
  /** Register shared slash commands. Called from constructor. */
430719
430733
  registerSharedCommands() {
430720
430734
  const clearHandler = /* @__PURE__ */ __name(async (envelope) => {
430721
- const removed = this.router.removeSession(this.name, envelope.senderId, envelope.chatId);
430722
- if (removed) {
430723
- this.instructedSessions.clear();
430735
+ const removedIds = this.router.removeSession(this.name, envelope.senderId, envelope.chatId);
430736
+ if (removedIds.length > 0) {
430737
+ for (const id of removedIds) {
430738
+ this.instructedSessions.delete(id);
430739
+ }
430724
430740
  await this.sendMessage(envelope.chatId, "Session cleared. Your next message will start a fresh conversation.");
430725
430741
  } else {
430726
430742
  await this.sendMessage(envelope.chatId, "No active session to clear.");
@@ -430954,8 +430970,9 @@ init_esbuild_shims();
430954
430970
  // packages/channels/telegram/dist/TelegramAdapter.js
430955
430971
  init_esbuild_shims();
430956
430972
  var import_telegraf = __toESM(require_lib9(), 1);
430957
- import { existsSync as existsSync28, mkdirSync as mkdirSync13, writeFileSync as writeFileSync14 } from "node:fs";
430958
- import { join as join44 } from "node:path";
430973
+ import { mkdirSync as mkdirSync13, writeFileSync as writeFileSync14 } from "node:fs";
430974
+ import { randomUUID as randomUUID7 } from "node:crypto";
430975
+ import { basename as basename21, join as join44 } from "node:path";
430959
430976
  import { tmpdir as tmpdir5 } from "node:os";
430960
430977
 
430961
430978
  // node_modules/telegram-markdown-formatter/dist/index.js
@@ -431267,7 +431284,6 @@ function splitHtmlForTelegram(text) {
431267
431284
  __name(splitHtmlForTelegram, "splitHtmlForTelegram");
431268
431285
 
431269
431286
  // packages/channels/telegram/dist/TelegramAdapter.js
431270
- var TELEGRAF_COMMANDS = /* @__PURE__ */ new Set();
431271
431287
  var TelegramChannel = class extends ChannelBase {
431272
431288
  static {
431273
431289
  __name(this, "TelegramChannel");
@@ -431286,12 +431302,6 @@ var TelegramChannel = class extends ChannelBase {
431286
431302
  this.bot.on("text", async (ctx) => {
431287
431303
  const msg = ctx.message;
431288
431304
  const text = msg.text;
431289
- if (text.startsWith("/")) {
431290
- const command2 = text.slice(1).split(/[\s@]/)[0]?.toLowerCase();
431291
- if (command2 && TELEGRAF_COMMANDS.has(command2)) {
431292
- return;
431293
- }
431294
- }
431295
431305
  const envelope = this.buildEnvelope(msg, text, msg.entities);
431296
431306
  this.handleInbound(envelope).catch((err2) => {
431297
431307
  process.stderr.write(`[Telegram:${this.name}] Error handling message: ${err2}
@@ -431336,10 +431346,9 @@ var TelegramChannel = class extends ChannelBase {
431336
431346
  if (!resp.ok)
431337
431347
  throw new Error(`HTTP ${resp.status}`);
431338
431348
  const buf = Buffer.from(await resp.arrayBuffer());
431339
- const dir = join44(tmpdir5(), "channel-files");
431340
- if (!existsSync28(dir))
431341
- mkdirSync13(dir, { recursive: true });
431342
- const filePath = join44(dir, fileName);
431349
+ const dir = join44(tmpdir5(), "channel-files", randomUUID7());
431350
+ mkdirSync13(dir, { recursive: true });
431351
+ const filePath = join44(dir, basename21(fileName) || `file_${Date.now()}`);
431343
431352
  writeFileSync14(filePath, buf);
431344
431353
  envelope.text = msg.caption || "";
431345
431354
  envelope.attachments = [
@@ -431442,19 +431451,20 @@ init_esbuild_shims();
431442
431451
 
431443
431452
  // packages/channels/weixin/dist/WeixinAdapter.js
431444
431453
  init_esbuild_shims();
431445
- import { existsSync as existsSync31, mkdirSync as mkdirSync15, writeFileSync as writeFileSync17 } from "node:fs";
431446
- import { join as join47 } from "node:path";
431454
+ import { mkdirSync as mkdirSync15, writeFileSync as writeFileSync17 } from "node:fs";
431455
+ import { randomUUID as randomUUID9 } from "node:crypto";
431456
+ import { basename as basename22, join as join47 } from "node:path";
431447
431457
  import { tmpdir as tmpdir6 } from "node:os";
431448
431458
 
431449
431459
  // packages/channels/weixin/dist/accounts.js
431450
431460
  init_esbuild_shims();
431451
- import { existsSync as existsSync29, mkdirSync as mkdirSync14, readFileSync as readFileSync23, writeFileSync as writeFileSync15, unlinkSync as unlinkSync5, chmodSync } from "node:fs";
431461
+ import { existsSync as existsSync28, mkdirSync as mkdirSync14, readFileSync as readFileSync23, writeFileSync as writeFileSync15, unlinkSync as unlinkSync5, chmodSync } from "node:fs";
431452
431462
  import { join as join45 } from "node:path";
431453
431463
  import { homedir as homedir20 } from "node:os";
431454
431464
  var DEFAULT_BASE_URL = "https://ilinkai.weixin.qq.com";
431455
431465
  function getStateDir() {
431456
431466
  const dir = process.env["WEIXIN_STATE_DIR"] || join45(homedir20(), ".qwen", "channels", "weixin");
431457
- if (!existsSync29(dir)) {
431467
+ if (!existsSync28(dir)) {
431458
431468
  mkdirSync14(dir, { recursive: true });
431459
431469
  }
431460
431470
  return dir;
@@ -431466,7 +431476,7 @@ function accountPath() {
431466
431476
  __name(accountPath, "accountPath");
431467
431477
  function loadAccount() {
431468
431478
  const p2 = accountPath();
431469
- if (!existsSync29(p2))
431479
+ if (!existsSync28(p2))
431470
431480
  return null;
431471
431481
  try {
431472
431482
  return JSON.parse(readFileSync23(p2, "utf-8"));
@@ -431483,7 +431493,7 @@ function saveAccount(data) {
431483
431493
  __name(saveAccount, "saveAccount");
431484
431494
  function clearAccount() {
431485
431495
  const p2 = accountPath();
431486
- if (existsSync29(p2)) {
431496
+ if (existsSync28(p2)) {
431487
431497
  unlinkSync5(p2);
431488
431498
  }
431489
431499
  }
@@ -431600,7 +431610,7 @@ var TypingStatus = {
431600
431610
  };
431601
431611
 
431602
431612
  // packages/channels/weixin/dist/monitor.js
431603
- import { existsSync as existsSync30, readFileSync as readFileSync24, writeFileSync as writeFileSync16 } from "node:fs";
431613
+ import { existsSync as existsSync29, readFileSync as readFileSync24, writeFileSync as writeFileSync16 } from "node:fs";
431604
431614
  import { join as join46 } from "node:path";
431605
431615
  var contextTokens = /* @__PURE__ */ new Map();
431606
431616
  function getContextToken(userId) {
@@ -431613,7 +431623,7 @@ function cursorPath() {
431613
431623
  __name(cursorPath, "cursorPath");
431614
431624
  function loadCursor() {
431615
431625
  const p2 = cursorPath();
431616
- if (existsSync30(p2))
431626
+ if (existsSync29(p2))
431617
431627
  return readFileSync24(p2, "utf-8").trim();
431618
431628
  return "";
431619
431629
  }
@@ -431640,10 +431650,6 @@ async function startPollLoop(params) {
431640
431650
  throw new Error(`getUpdates error: ret=${resp.ret} errcode=${resp.errcode} ${resp.errmsg}`);
431641
431651
  }
431642
431652
  consecutiveErrors = 0;
431643
- if (resp.get_updates_buf) {
431644
- cursor = resp.get_updates_buf;
431645
- saveCursor(cursor);
431646
- }
431647
431653
  if (resp.longpolling_timeout_ms && resp.longpolling_timeout_ms > 0) {
431648
431654
  pollTimeoutMs = resp.longpolling_timeout_ms + 5e3;
431649
431655
  }
@@ -431652,6 +431658,10 @@ async function startPollLoop(params) {
431652
431658
  await processMessage(msg, onMessage);
431653
431659
  }
431654
431660
  }
431661
+ if (resp.get_updates_buf) {
431662
+ cursor = resp.get_updates_buf;
431663
+ saveCursor(cursor);
431664
+ }
431655
431665
  } catch (err2) {
431656
431666
  if (abortSignal.aborted)
431657
431667
  break;
@@ -431731,7 +431741,7 @@ __name(processMessage, "processMessage");
431731
431741
 
431732
431742
  // packages/channels/weixin/dist/send.js
431733
431743
  init_esbuild_shims();
431734
- import { randomUUID as randomUUID7 } from "node:crypto";
431744
+ import { randomUUID as randomUUID8 } from "node:crypto";
431735
431745
  function markdownToPlainText(text) {
431736
431746
  return text.replace(/```[\s\S]*?\n([\s\S]*?)```/g, "$1").replace(/`([^`]+)`/g, "$1").replace(/\*\*\*(.+?)\*\*\*/g, "$1").replace(/\*\*(.+?)\*\*/g, "$1").replace(/\*(.+?)\*/g, "$1").replace(/___(.+?)___/g, "$1").replace(/__(.+?)__/g, "$1").replace(/_(.+?)_/g, "$1").replace(/~~(.+?)~~/g, "$1").replace(/^#{1,6}\s+/gm, "").replace(/\[([^\]]+)\]\(([^)]+)\)/g, "$1 ($2)").replace(/!\[([^\]]*)\]\([^)]+\)/g, "[$1]").replace(/^>\s+/gm, "").replace(/^[-*_]{3,}$/gm, "---").replace(/^[\s]*[-*+]\s+/gm, "- ").replace(/^[\s]*(\d+)\.\s+/gm, "$1. ").replace(/\n{3,}/g, "\n\n").trim();
431737
431747
  }
@@ -431742,7 +431752,7 @@ async function sendText(params) {
431742
431752
  await sendMessage(baseUrl, token2, {
431743
431753
  to_user_id: to,
431744
431754
  from_user_id: "",
431745
- client_id: randomUUID7(),
431755
+ client_id: randomUUID8(),
431746
431756
  message_type: MessageType.BOT,
431747
431757
  message_state: MessageState.FINISH,
431748
431758
  context_token: contextToken,
@@ -431863,10 +431873,9 @@ var WeixinChannel = class extends ChannelBase {
431863
431873
  if (file2) {
431864
431874
  try {
431865
431875
  const fileData = await downloadAndDecrypt(file2.encryptQueryParam, file2.aesKey);
431866
- const dir = join47(tmpdir6(), "channel-files");
431867
- if (!existsSync31(dir))
431868
- mkdirSync15(dir, { recursive: true });
431869
- const filePath = join47(dir, file2.fileName);
431876
+ const dir = join47(tmpdir6(), "channel-files", randomUUID9());
431877
+ mkdirSync15(dir, { recursive: true });
431878
+ const filePath = join47(dir, basename22(file2.fileName) || `file_${Date.now()}`);
431870
431879
  writeFileSync17(filePath, fileData);
431871
431880
  envelope.attachments = [
431872
431881
  {
@@ -431948,8 +431957,9 @@ init_esbuild_shims();
431948
431957
 
431949
431958
  // packages/channels/dingtalk/dist/DingtalkAdapter.js
431950
431959
  init_esbuild_shims();
431951
- import { existsSync as existsSync32, mkdirSync as mkdirSync16, writeFileSync as writeFileSync18 } from "node:fs";
431952
- import { join as join48 } from "node:path";
431960
+ import { mkdirSync as mkdirSync16, writeFileSync as writeFileSync18 } from "node:fs";
431961
+ import { randomUUID as randomUUID10 } from "node:crypto";
431962
+ import { basename as basename23, join as join48 } from "node:path";
431953
431963
  import { tmpdir as tmpdir7 } from "node:os";
431954
431964
 
431955
431965
  // node_modules/dingtalk-stream-sdk-nodejs/dist/index.mjs
@@ -432798,7 +432808,7 @@ init_esbuild_shims();
432798
432808
 
432799
432809
  // node_modules/axios/lib/platform/node/index.js
432800
432810
  init_esbuild_shims();
432801
- import crypto14 from "crypto";
432811
+ import crypto15 from "crypto";
432802
432812
 
432803
432813
  // node_modules/axios/lib/platform/node/classes/URLSearchParams.js
432804
432814
  init_esbuild_shims();
@@ -432817,7 +432827,7 @@ var generateString = /* @__PURE__ */ __name((size = 16, alphabet2 = ALPHABET.ALP
432817
432827
  let str2 = "";
432818
432828
  const { length } = alphabet2;
432819
432829
  const randomValues = new Uint32Array(size);
432820
- crypto14.randomFillSync(randomValues);
432830
+ crypto15.randomFillSync(randomValues);
432821
432831
  for (let i4 = 0; i4 < size; i4++) {
432822
432832
  str2 += alphabet2[randomValues[i4] % length];
432823
432833
  }
@@ -436654,10 +436664,9 @@ var DingtalkChannel = class extends ChannelBase {
436654
436664
  }
436655
436665
  ];
436656
436666
  } else {
436657
- const dir = join48(tmpdir7(), "channel-files");
436658
- if (!existsSync32(dir))
436659
- mkdirSync16(dir, { recursive: true });
436660
- const safeName = fileName || `dingtalk_${mediaType}_${Date.now()}`;
436667
+ const dir = join48(tmpdir7(), "channel-files", randomUUID10());
436668
+ mkdirSync16(dir, { recursive: true });
436669
+ const safeName = basename23(fileName || "") || `dingtalk_${mediaType}_${Date.now()}`;
436661
436670
  const filePath = join48(dir, safeName);
436662
436671
  writeFileSync18(filePath, media.buffer);
436663
436672
  if (envelope.text === `(file: ${fileName || "file"})` || envelope.text === "(audio)" || envelope.text === "(video)") {
@@ -436699,7 +436708,7 @@ var DingtalkChannel = class extends ChannelBase {
436699
436708
  const content = this.extractContent(data);
436700
436709
  let cleanText = content.text;
436701
436710
  if (isMentioned) {
436702
- cleanText = cleanText.replace(/@\S+/g, "").trim();
436711
+ cleanText = cleanText.replace(/@\S+/, "").trim();
436703
436712
  }
436704
436713
  const quoted = this.extractQuotedContext(data);
436705
436714
  const chatId = conversationId || sessionWebhook;
@@ -436836,7 +436845,7 @@ __name(parseChannelConfig, "parseChannelConfig");
436836
436845
  // packages/cli/src/commands/channel/pidfile.ts
436837
436846
  init_esbuild_shims();
436838
436847
  import {
436839
- existsSync as existsSync33,
436848
+ existsSync as existsSync30,
436840
436849
  readFileSync as readFileSync25,
436841
436850
  writeFileSync as writeFileSync19,
436842
436851
  mkdirSync as mkdirSync17,
@@ -436859,7 +436868,7 @@ function isProcessAlive(pid) {
436859
436868
  __name(isProcessAlive, "isProcessAlive");
436860
436869
  function readServiceInfo() {
436861
436870
  const filePath = pidFilePath();
436862
- if (!existsSync33(filePath)) return null;
436871
+ if (!existsSync30(filePath)) return null;
436863
436872
  let info2;
436864
436873
  try {
436865
436874
  info2 = JSON.parse(readFileSync25(filePath, "utf-8"));
@@ -436883,7 +436892,7 @@ __name(readServiceInfo, "readServiceInfo");
436883
436892
  function writeServiceInfo(channels) {
436884
436893
  const filePath = pidFilePath();
436885
436894
  const dir = path101.dirname(filePath);
436886
- if (!existsSync33(dir)) {
436895
+ if (!existsSync30(dir)) {
436887
436896
  mkdirSync17(dir, { recursive: true });
436888
436897
  }
436889
436898
  const info2 = {
@@ -436896,7 +436905,7 @@ function writeServiceInfo(channels) {
436896
436905
  __name(writeServiceInfo, "writeServiceInfo");
436897
436906
  function removeServiceInfo() {
436898
436907
  const filePath = pidFilePath();
436899
- if (existsSync33(filePath)) {
436908
+ if (existsSync30(filePath)) {
436900
436909
  try {
436901
436910
  unlinkSync6(filePath);
436902
436911
  } catch {
@@ -436925,6 +436934,7 @@ __name(waitForExit, "waitForExit");
436925
436934
 
436926
436935
  // packages/cli/src/commands/channel/start.ts
436927
436936
  var MAX_CRASH_RESTARTS = 3;
436937
+ var CRASH_WINDOW_MS = 5 * 60 * 1e3;
436928
436938
  var RESTART_DELAY_MS = 3e3;
436929
436939
  function sessionsPath() {
436930
436940
  return path102.join(os35.homedir(), ".qwen", "channels", "sessions.json");
@@ -437040,11 +437050,16 @@ async function startSingle(name4) {
437040
437050
  }
437041
437051
  const cliEntryPath = findCliEntryPath();
437042
437052
  let shuttingDown = false;
437043
- let crashCount = 0;
437053
+ const crashTimestamps = [];
437044
437054
  const bridgeOpts = { cliEntryPath, cwd: config2.cwd, model: config2.model };
437045
437055
  let bridge = new AcpBridge(bridgeOpts);
437046
437056
  await bridge.start();
437047
- const router = new SessionRouter(bridge, config2.cwd, "user", sessionsPath());
437057
+ const router = new SessionRouter(
437058
+ bridge,
437059
+ config2.cwd,
437060
+ config2.sessionScope,
437061
+ sessionsPath()
437062
+ );
437048
437063
  const channels = /* @__PURE__ */ new Map();
437049
437064
  const channel = createChannel(name4, config2, bridge, { router });
437050
437065
  channels.set(name4, channel);
@@ -437054,17 +437069,22 @@ async function startSingle(name4) {
437054
437069
  writeStdoutLine(`[Channel] "${name4}" is running. Press Ctrl+C to stop.`);
437055
437070
  bridge.on("disconnected", async () => {
437056
437071
  if (shuttingDown) return;
437057
- crashCount++;
437058
- if (crashCount > MAX_CRASH_RESTARTS) {
437072
+ const now = Date.now();
437073
+ crashTimestamps.push(now);
437074
+ const recentCrashes = crashTimestamps.filter(
437075
+ (ts) => now - ts < CRASH_WINDOW_MS
437076
+ );
437077
+ if (recentCrashes.length > MAX_CRASH_RESTARTS) {
437059
437078
  writeStderrLine(
437060
- `[Channel] Bridge crashed ${crashCount} times. Giving up.`
437079
+ `[Channel] Bridge crashed ${recentCrashes.length} times in ${CRASH_WINDOW_MS / 1e3}s. Giving up.`
437061
437080
  );
437081
+ channel.disconnect();
437062
437082
  router.clearAll();
437063
437083
  removeServiceInfo();
437064
437084
  process.exit(1);
437065
437085
  }
437066
437086
  writeStderrLine(
437067
- `[Channel] Bridge crashed (${crashCount}/${MAX_CRASH_RESTARTS}). Restarting in ${RESTART_DELAY_MS / 1e3}s...`
437087
+ `[Channel] Bridge crashed (${recentCrashes.length}/${MAX_CRASH_RESTARTS} in window). Restarting in ${RESTART_DELAY_MS / 1e3}s...`
437068
437088
  );
437069
437089
  await new Promise((r5) => setTimeout(r5, RESTART_DELAY_MS));
437070
437090
  try {
@@ -437077,7 +437097,6 @@ async function startSingle(name4) {
437077
437097
  writeStdoutLine(
437078
437098
  `[Channel] Bridge restarted. Sessions restored: ${result.restored}, failed: ${result.failed}`
437079
437099
  );
437080
- crashCount = 0;
437081
437100
  } catch (err2) {
437082
437101
  writeStderrLine(
437083
437102
  `[Channel] Failed to restart bridge: ${err2 instanceof Error ? err2.message : String(err2)}`
@@ -437126,7 +437145,7 @@ async function startAll() {
437126
437145
  const cliEntryPath = findCliEntryPath();
437127
437146
  const defaultCwd = process.cwd();
437128
437147
  let shuttingDown = false;
437129
- let crashCount = 0;
437148
+ const crashTimestamps = [];
437130
437149
  const models = [
437131
437150
  ...new Set(parsed.map((p2) => p2.config.model).filter(Boolean))
437132
437151
  ];
@@ -437143,6 +437162,9 @@ async function startAll() {
437143
437162
  let bridge = new AcpBridge(bridgeOpts);
437144
437163
  await bridge.start();
437145
437164
  const router = new SessionRouter(bridge, defaultCwd, "user", sessionsPath());
437165
+ for (const { name: name4, config: config2 } of parsed) {
437166
+ router.setChannelScope(name4, config2.sessionScope);
437167
+ }
437146
437168
  const channels = /* @__PURE__ */ new Map();
437147
437169
  writeStdoutLine(
437148
437170
  `[Channel] Starting ${parsed.length} channel(s): ${parsed.map((p2) => p2.name).join(", ")}`
@@ -437174,17 +437196,27 @@ async function startAll() {
437174
437196
  );
437175
437197
  bridge.on("disconnected", async () => {
437176
437198
  if (shuttingDown) return;
437177
- crashCount++;
437178
- if (crashCount > MAX_CRASH_RESTARTS) {
437199
+ const now = Date.now();
437200
+ crashTimestamps.push(now);
437201
+ const recentCrashes = crashTimestamps.filter(
437202
+ (ts) => now - ts < CRASH_WINDOW_MS
437203
+ );
437204
+ if (recentCrashes.length > MAX_CRASH_RESTARTS) {
437179
437205
  writeStderrLine(
437180
- `[Channel] Bridge crashed ${crashCount} times. Giving up.`
437206
+ `[Channel] Bridge crashed ${recentCrashes.length} times in ${CRASH_WINDOW_MS / 1e3}s. Giving up.`
437181
437207
  );
437208
+ for (const channel of channels.values()) {
437209
+ try {
437210
+ channel.disconnect();
437211
+ } catch {
437212
+ }
437213
+ }
437182
437214
  router.clearAll();
437183
437215
  removeServiceInfo();
437184
437216
  process.exit(1);
437185
437217
  }
437186
437218
  writeStderrLine(
437187
- `[Channel] Bridge crashed (${crashCount}/${MAX_CRASH_RESTARTS}). Restarting in ${RESTART_DELAY_MS / 1e3}s...`
437219
+ `[Channel] Bridge crashed (${recentCrashes.length}/${MAX_CRASH_RESTARTS} in window). Restarting in ${RESTART_DELAY_MS / 1e3}s...`
437188
437220
  );
437189
437221
  await new Promise((r5) => setTimeout(r5, RESTART_DELAY_MS));
437190
437222
  try {
@@ -437199,7 +437231,6 @@ async function startAll() {
437199
437231
  writeStdoutLine(
437200
437232
  `[Channel] Bridge restarted. Sessions restored: ${result.restored}, failed: ${result.failed}`
437201
437233
  );
437202
- crashCount = 0;
437203
437234
  } catch (err2) {
437204
437235
  writeStderrLine(
437205
437236
  `[Channel] Failed to restart bridge: ${err2 instanceof Error ? err2.message : String(err2)}`
@@ -437281,7 +437312,7 @@ var stopCommand = {
437281
437312
 
437282
437313
  // packages/cli/src/commands/channel/status.ts
437283
437314
  init_esbuild_shims();
437284
- import { existsSync as existsSync34, readFileSync as readFileSync26 } from "node:fs";
437315
+ import { existsSync as existsSync31, readFileSync as readFileSync26 } from "node:fs";
437285
437316
  import * as path103 from "node:path";
437286
437317
  import * as os36 from "node:os";
437287
437318
  function formatUptime(startedAt) {
@@ -437315,7 +437346,7 @@ var statusCommand2 = {
437315
437346
  "sessions.json"
437316
437347
  );
437317
437348
  const sessionCounts = /* @__PURE__ */ new Map();
437318
- if (existsSync34(sessionsPath2)) {
437349
+ if (existsSync31(sessionsPath2)) {
437319
437350
  try {
437320
437351
  const entries = JSON.parse(
437321
437352
  readFileSync26(sessionsPath2, "utf-8")
@@ -440981,7 +441012,7 @@ init_esbuild_shims();
440981
441012
  // packages/cli/src/nonInteractive/io/BaseJsonOutputAdapter.ts
440982
441013
  init_esbuild_shims();
440983
441014
  init_dist4();
440984
- import { randomUUID as randomUUID9 } from "node:crypto";
441015
+ import { randomUUID as randomUUID12 } from "node:crypto";
440985
441016
 
440986
441017
  // packages/cli/src/utils/nonInteractiveHelpers.ts
440987
441018
  init_esbuild_shims();
@@ -441271,7 +441302,7 @@ var formatDuration = /* @__PURE__ */ __name((milliseconds) => {
441271
441302
 
441272
441303
  // packages/cli/src/generated/git-commit.ts
441273
441304
  init_esbuild_shims();
441274
- var GIT_COMMIT_INFO = "eac09c310";
441305
+ var GIT_COMMIT_INFO = "1c1fb9b11";
441275
441306
 
441276
441307
  // packages/cli/src/utils/systemInfo.ts
441277
441308
  async function getNpmVersion() {
@@ -443004,7 +443035,7 @@ init_esbuild_shims();
443004
443035
 
443005
443036
  // packages/cli/src/ui/utils/export/collect.ts
443006
443037
  init_esbuild_shims();
443007
- import { randomUUID as randomUUID8 } from "node:crypto";
443038
+ import { randomUUID as randomUUID11 } from "node:crypto";
443008
443039
 
443009
443040
  // packages/cli/src/acp-integration/session/HistoryReplayer.ts
443010
443041
  init_esbuild_shims();
@@ -443885,7 +443916,7 @@ var ExportSessionContext = class {
443885
443916
  return this.activeRecordTimestamp ?? (/* @__PURE__ */ new Date()).toISOString();
443886
443917
  }
443887
443918
  getMessageUuid() {
443888
- return this.activeRecordId ?? randomUUID8();
443919
+ return this.activeRecordId ?? randomUUID11();
443889
443920
  }
443890
443921
  handleMessageChunk(role, content, messageRole = role, usageMetadata) {
443891
443922
  if (content.type !== "text" || !content.text) return;
@@ -445196,14 +445227,14 @@ __name(getIdeStatusMessage, "getIdeStatusMessage");
445196
445227
  function formatFileList(openFiles) {
445197
445228
  const basenameCounts = /* @__PURE__ */ new Map();
445198
445229
  for (const file2 of openFiles) {
445199
- const basename29 = path108.basename(file2.path);
445200
- basenameCounts.set(basename29, (basenameCounts.get(basename29) || 0) + 1);
445230
+ const basename32 = path108.basename(file2.path);
445231
+ basenameCounts.set(basename32, (basenameCounts.get(basename32) || 0) + 1);
445201
445232
  }
445202
445233
  const fileList = openFiles.map((file2) => {
445203
- const basename29 = path108.basename(file2.path);
445204
- const isDuplicate = (basenameCounts.get(basename29) || 0) > 1;
445234
+ const basename32 = path108.basename(file2.path);
445235
+ const isDuplicate = (basenameCounts.get(basename32) || 0) > 1;
445205
445236
  const parentDir = path108.basename(path108.dirname(file2.path));
445206
- const displayName = isDuplicate ? `${basename29} (/${parentDir})` : basename29;
445237
+ const displayName = isDuplicate ? `${basename32} (/${parentDir})` : basename32;
445207
445238
  return ` - ${displayName}${file2.isActive ? " (active)" : ""}`;
445208
445239
  }).join("\n");
445209
445240
  const infoMessage = `
@@ -450226,7 +450257,7 @@ var BaseJsonOutputAdapter = class {
450226
450257
  * @param state - Message state to reset
450227
450258
  */
450228
450259
  startAssistantMessageInternal(state) {
450229
- state.messageId = randomUUID9();
450260
+ state.messageId = randomUUID12();
450230
450261
  state.blocks = [];
450231
450262
  state.openBlocks = /* @__PURE__ */ new Set();
450232
450263
  state.usage = this.createUsage();
@@ -450663,7 +450694,7 @@ ${event.value}`, null);
450663
450694
  const content = partsToContentBlock(parts2);
450664
450695
  const message = {
450665
450696
  type: "user",
450666
- uuid: randomUUID9(),
450697
+ uuid: randomUUID12(),
450667
450698
  session_id: this.getSessionId(),
450668
450699
  parent_tool_use_id: parentToolUseId ?? null,
450669
450700
  message: {
@@ -450716,7 +450747,7 @@ ${event.value}`, null);
450716
450747
  }
450717
450748
  const message = {
450718
450749
  type: "user",
450719
- uuid: randomUUID9(),
450750
+ uuid: randomUUID12(),
450720
450751
  session_id: this.getSessionId(),
450721
450752
  parent_tool_use_id: parentToolUseId,
450722
450753
  message: {
@@ -450735,7 +450766,7 @@ ${event.value}`, null);
450735
450766
  const systemMessage = {
450736
450767
  type: "system",
450737
450768
  subtype,
450738
- uuid: randomUUID9(),
450769
+ uuid: randomUUID12(),
450739
450770
  session_id: this.getSessionId(),
450740
450771
  parent_tool_use_id: null,
450741
450772
  data
@@ -450763,7 +450794,7 @@ ${event.value}`, null);
450763
450794
  buildResultMessage(options2, lastAssistantMessage) {
450764
450795
  const usage2 = options2.usage ?? createExtendedUsage();
450765
450796
  const resultText = options2.summary ?? (lastAssistantMessage ? extractTextFromBlocks(lastAssistantMessage.message.content) : "");
450766
- const baseUuid = randomUUID9();
450797
+ const baseUuid = randomUUID12();
450767
450798
  const baseSessionId = this.getSessionId();
450768
450799
  if (options2.isError) {
450769
450800
  const errorMessage = options2.errorMessage ?? "Unknown error";
@@ -450817,7 +450848,7 @@ ${event.value}`, null);
450817
450848
  return {
450818
450849
  type: "result",
450819
450850
  subtype: "error_during_execution",
450820
- uuid: randomUUID9(),
450851
+ uuid: randomUUID12(),
450821
450852
  session_id: this.getSessionId(),
450822
450853
  is_error: true,
450823
450854
  duration_ms: 0,
@@ -450955,7 +450986,7 @@ var JsonOutputAdapter = class extends BaseJsonOutputAdapter {
450955
450986
 
450956
450987
  // packages/cli/src/nonInteractive/io/StreamJsonOutputAdapter.ts
450957
450988
  init_esbuild_shims();
450958
- import { randomUUID as randomUUID10 } from "node:crypto";
450989
+ import { randomUUID as randomUUID13 } from "node:crypto";
450959
450990
  var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
450960
450991
  constructor(config2, includePartialMessages) {
450961
450992
  super(config2);
@@ -450993,7 +451024,7 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
450993
451024
  if (this.mainTurnMessageStartEmitted && this.includePartialMessages) {
450994
451025
  const partial2 = {
450995
451026
  type: "stream_event",
450996
- uuid: randomUUID10(),
451027
+ uuid: randomUUID13(),
450997
451028
  session_id: this.getSessionId(),
450998
451029
  parent_tool_use_id: null,
450999
451030
  event: { type: "message_stop" }
@@ -451143,7 +451174,7 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
451143
451174
  }
451144
451175
  const partial2 = {
451145
451176
  type: "stream_event",
451146
- uuid: randomUUID10(),
451177
+ uuid: randomUUID13(),
451147
451178
  session_id: this.getSessionId(),
451148
451179
  parent_tool_use_id: null,
451149
451180
  event: {
@@ -451166,7 +451197,7 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
451166
451197
  }
451167
451198
  const partial2 = {
451168
451199
  type: "stream_event",
451169
- uuid: randomUUID10(),
451200
+ uuid: randomUUID13(),
451170
451201
  session_id: this.getSessionId(),
451171
451202
  parent_tool_use_id: parentToolUseId,
451172
451203
  event
@@ -451823,7 +451854,7 @@ init_esbuild_shims();
451823
451854
  // packages/cli/src/nonInteractive/control/controllers/baseController.ts
451824
451855
  init_esbuild_shims();
451825
451856
  init_dist4();
451826
- import { randomUUID as randomUUID11 } from "node:crypto";
451857
+ import { randomUUID as randomUUID14 } from "node:crypto";
451827
451858
  var DEFAULT_REQUEST_TIMEOUT_MS = 3e4;
451828
451859
  var BaseController = class {
451829
451860
  static {
@@ -451884,7 +451915,7 @@ var BaseController = class {
451884
451915
  if (signal?.aborted) {
451885
451916
  throw new Error("Request aborted");
451886
451917
  }
451887
- const requestId = randomUUID11();
451918
+ const requestId = randomUUID14();
451888
451919
  return new Promise((resolve36, reject) => {
451889
451920
  const abortHandler = /* @__PURE__ */ __name(() => {
451890
451921
  this.registry.deregisterOutgoingRequest(requestId);
@@ -468998,7 +469029,7 @@ var import_react64 = __toESM(require_react(), 1);
468998
469029
 
468999
469030
  // packages/cli/src/ui/components/messages/DiffRenderer.tsx
469000
469031
  init_esbuild_shims();
469001
- import crypto15 from "node:crypto";
469032
+ import crypto16 from "node:crypto";
469002
469033
  var import_jsx_runtime8 = __toESM(require_jsx_runtime(), 1);
469003
469034
  function parseDiffWithLineNumbers(diffContent) {
469004
469035
  const lines = diffContent.split("\n");
@@ -469154,7 +469185,7 @@ var renderDiffContent = /* @__PURE__ */ __name((parsedLines, filename, tabWidth
469154
469185
  if (!isFinite(baseIndentation)) {
469155
469186
  baseIndentation = 0;
469156
469187
  }
469157
- const key = filename ? `diff-box-${filename}` : `diff-box-${crypto15.createHash("sha1").update(JSON.stringify(parsedLines)).digest("hex")}`;
469188
+ const key = filename ? `diff-box-${filename}` : `diff-box-${crypto16.createHash("sha1").update(JSON.stringify(parsedLines)).digest("hex")}`;
469158
469189
  let lastLineNumber = null;
469159
469190
  const MAX_CONTEXT_LINES_WITHOUT_GAP = 5;
469160
469191
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
@@ -494089,7 +494120,7 @@ ${commandToExecute.subCommands.map((sc) => ` - ${sc.name}: ${sc.description ||
494089
494120
 
494090
494121
  // packages/cli/src/ui/AppContainer.tsx
494091
494122
  import * as fs122 from "node:fs";
494092
- import { basename as basename27 } from "node:path";
494123
+ import { basename as basename30 } from "node:path";
494093
494124
 
494094
494125
  // packages/cli/src/utils/windowTitle.ts
494095
494126
  init_esbuild_shims();
@@ -494131,7 +494162,7 @@ init_dist4();
494131
494162
  init_esbuild_shims();
494132
494163
  var import_react140 = __toESM(require_react(), 1);
494133
494164
  init_dist4();
494134
- import crypto16 from "node:crypto";
494165
+ import crypto17 from "node:crypto";
494135
494166
  import path125 from "node:path";
494136
494167
  import os44 from "node:os";
494137
494168
  import fs113 from "node:fs";
@@ -494177,7 +494208,7 @@ var useShellCommandProcessor = /* @__PURE__ */ __name((addItemToHistory, setPend
494177
494208
  let pwdFilePath;
494178
494209
  if (!isWindows9) {
494179
494210
  let command2 = rawQuery.trim();
494180
- const pwdFileName = `shell_pwd_${crypto16.randomBytes(6).toString("hex")}.tmp`;
494211
+ const pwdFileName = `shell_pwd_${crypto17.randomBytes(6).toString("hex")}.tmp`;
494181
494212
  pwdFilePath = path125.join(os44.tmpdir(), pwdFileName);
494182
494213
  if (!command2.endsWith(";") && !command2.endsWith("&")) {
494183
494214
  command2 += ";";
@@ -497069,14 +497100,14 @@ var Temp = {
497069
497100
  }
497070
497101
  }, "purgeSyncAll"),
497071
497102
  truncate: /* @__PURE__ */ __name((filePath) => {
497072
- const basename29 = path129.basename(filePath);
497073
- if (basename29.length <= LIMIT_BASENAME_LENGTH)
497103
+ const basename32 = path129.basename(filePath);
497104
+ if (basename32.length <= LIMIT_BASENAME_LENGTH)
497074
497105
  return filePath;
497075
- const truncable = /^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(basename29);
497106
+ const truncable = /^(\.?)(.*?)((?:\.[^.]+)?(?:\.tmp-\d{10}[a-f0-9]{6})?)$/.exec(basename32);
497076
497107
  if (!truncable)
497077
497108
  return filePath;
497078
- const truncationLength = basename29.length - LIMIT_BASENAME_LENGTH;
497079
- return `${filePath.slice(0, -basename29.length)}${truncable[1]}${truncable[2].slice(0, -truncationLength)}${truncable[3]}`;
497109
+ const truncationLength = basename32.length - LIMIT_BASENAME_LENGTH;
497110
+ return `${filePath.slice(0, -basename32.length)}${truncable[1]}${truncable[2].slice(0, -truncationLength)}${truncable[3]}`;
497080
497111
  }, "truncate")
497081
497112
  };
497082
497113
  node_default3(Temp.purgeSyncAll);
@@ -500583,7 +500614,7 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
500583
500614
  const branchName = useGitBranchName(config2.getTargetDir());
500584
500615
  const mainControlsRef = (0, import_react163.useRef)(null);
500585
500616
  const originalTitleRef = (0, import_react163.useRef)(
500586
- computeWindowTitle(basename27(config2.getTargetDir()))
500617
+ computeWindowTitle(basename30(config2.getTargetDir()))
500587
500618
  );
500588
500619
  const lastTitleRef = (0, import_react163.useRef)(null);
500589
500620
  const staticExtraHeight = 3;
@@ -504215,7 +504246,7 @@ var QwenAgent = class {
504215
504246
  async initialize(args2) {
504216
504247
  this.clientCapabilities = args2.clientCapabilities;
504217
504248
  const authMethods = buildAuthMethods();
504218
- const version2 = "0.14.0-preview.2";
504249
+ const version2 = "0.14.0-preview.3";
504219
504250
  return {
504220
504251
  protocolVersion: PROTOCOL_VERSION,
504221
504252
  agentInfo: {
@@ -504654,7 +504685,7 @@ ${reason.stack}` : ""}`;
504654
504685
  __name(setupUnhandledRejectionHandler, "setupUnhandledRejectionHandler");
504655
504686
  async function startInteractiveUI(config2, settings, startupWarnings, workspaceRoot = process.cwd(), initializationResult) {
504656
504687
  const version2 = await getCliVersion();
504657
- setWindowTitle(basename28(workspaceRoot), settings);
504688
+ setWindowTitle(basename31(workspaceRoot), settings);
504658
504689
  const AppWrapper = /* @__PURE__ */ __name(() => {
504659
504690
  const kittyProtocolStatus = useKittyKeyboardProtocol();
504660
504691
  const nodeMajorVersion = parseInt(process.versions.node.split(".")[0], 10);