@zqagent/core 0.2.20 → 0.3.7

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 (238) hide show
  1. package/README.md +1 -1
  2. package/README.oss.en.md +3 -3
  3. package/README.oss.md +8 -3
  4. package/README.oss.zh-TW.md +3 -3
  5. package/dist/McpClient-CEQBUPuC.d.cts +145 -0
  6. package/dist/McpClient-CEQBUPuC.d.ts +145 -0
  7. package/dist/{ToolRegistry-C3pTFiaJ.d.cts → ToolRegistry-Cy0fQxrb.d.ts} +2 -111
  8. package/dist/{ToolRegistry-C3pTFiaJ.d.ts → ToolRegistry-DouDvn9E.d.cts} +2 -111
  9. package/dist/{explore-RtZtb-V6.d.ts → TurnEngine-BPKhWuSI.d.cts} +108 -73
  10. package/dist/{explore-BgRhj6SP.d.cts → TurnEngine-DtGEuVLT.d.ts} +108 -73
  11. package/dist/conflictGuard-BBOOIxxK.d.cts +42 -0
  12. package/dist/conflictGuard-BBOOIxxK.d.ts +42 -0
  13. package/dist/index.cjs +5930 -1114
  14. package/dist/index.cjs.map +1 -1
  15. package/dist/index.d.cts +577 -195
  16. package/dist/index.d.ts +577 -195
  17. package/dist/index.js +5761 -979
  18. package/dist/index.js.map +1 -1
  19. package/dist/internal/crypto/secrets.cjs +25 -0
  20. package/dist/internal/crypto/secrets.cjs.map +1 -0
  21. package/dist/internal/crypto/secrets.d.cts +2 -0
  22. package/dist/internal/crypto/secrets.d.ts +2 -0
  23. package/dist/internal/crypto/secrets.js +3 -0
  24. package/dist/internal/crypto/secrets.js.map +1 -0
  25. package/dist/internal/engine/FileLogHook.cjs +179 -0
  26. package/dist/internal/engine/FileLogHook.cjs.map +1 -0
  27. package/dist/internal/engine/FileLogHook.d.cts +67 -0
  28. package/dist/internal/engine/FileLogHook.d.ts +67 -0
  29. package/dist/internal/engine/FileLogHook.js +144 -0
  30. package/dist/internal/engine/FileLogHook.js.map +1 -0
  31. package/dist/internal/engine/approvalView.cjs +25 -0
  32. package/dist/internal/engine/approvalView.cjs.map +1 -0
  33. package/dist/internal/engine/approvalView.d.cts +1 -0
  34. package/dist/internal/engine/approvalView.d.ts +1 -0
  35. package/dist/internal/engine/approvalView.js +3 -0
  36. package/dist/internal/engine/approvalView.js.map +1 -0
  37. package/dist/internal/engine/limits.cjs +59 -0
  38. package/dist/internal/engine/limits.cjs.map +1 -0
  39. package/dist/internal/engine/limits.d.cts +32 -0
  40. package/dist/internal/engine/limits.d.ts +32 -0
  41. package/dist/internal/engine/limits.js +31 -0
  42. package/dist/internal/engine/limits.js.map +1 -0
  43. package/dist/internal/engine/sessionNaming.cjs +47 -0
  44. package/dist/internal/engine/sessionNaming.cjs.map +1 -0
  45. package/dist/internal/engine/sessionNaming.d.cts +25 -0
  46. package/dist/internal/engine/sessionNaming.d.ts +25 -0
  47. package/dist/internal/engine/sessionNaming.js +20 -0
  48. package/dist/internal/engine/sessionNaming.js.map +1 -0
  49. package/dist/internal/llmConfig.cjs +561 -0
  50. package/dist/internal/llmConfig.cjs.map +1 -0
  51. package/dist/internal/llmConfig.d.cts +75 -0
  52. package/dist/internal/llmConfig.d.ts +75 -0
  53. package/dist/internal/llmConfig.js +535 -0
  54. package/dist/internal/llmConfig.js.map +1 -0
  55. package/dist/internal/mcp/builtin/index.cjs +685 -0
  56. package/dist/internal/mcp/builtin/index.cjs.map +1 -0
  57. package/dist/internal/mcp/builtin/index.d.cts +21 -0
  58. package/dist/internal/mcp/builtin/index.d.ts +21 -0
  59. package/dist/internal/mcp/builtin/index.js +652 -0
  60. package/dist/internal/mcp/builtin/index.js.map +1 -0
  61. package/dist/internal/mcp/config.cjs +278 -0
  62. package/dist/internal/mcp/config.cjs.map +1 -0
  63. package/dist/internal/mcp/config.d.cts +61 -0
  64. package/dist/internal/mcp/config.d.ts +61 -0
  65. package/dist/internal/mcp/config.js +235 -0
  66. package/dist/internal/mcp/config.js.map +1 -0
  67. package/dist/internal/mcp/presets.cjs +184 -0
  68. package/dist/internal/mcp/presets.cjs.map +1 -0
  69. package/dist/internal/mcp/presets.d.cts +39 -0
  70. package/dist/internal/mcp/presets.d.ts +39 -0
  71. package/dist/internal/mcp/presets.js +158 -0
  72. package/dist/internal/mcp/presets.js.map +1 -0
  73. package/dist/internal/node-name.cjs +45 -0
  74. package/dist/internal/node-name.cjs.map +1 -0
  75. package/dist/internal/node-name.d.cts +3 -0
  76. package/dist/internal/node-name.d.ts +3 -0
  77. package/dist/internal/node-name.js +10 -0
  78. package/dist/internal/node-name.js.map +1 -0
  79. package/dist/internal/paths.cjs +63 -0
  80. package/dist/internal/paths.cjs.map +1 -0
  81. package/dist/internal/paths.d.cts +17 -0
  82. package/dist/internal/paths.d.ts +17 -0
  83. package/dist/internal/paths.js +25 -0
  84. package/dist/internal/paths.js.map +1 -0
  85. package/dist/internal/providers/diagnostics.cjs +288 -0
  86. package/dist/internal/providers/diagnostics.cjs.map +1 -0
  87. package/dist/internal/providers/diagnostics.d.cts +103 -0
  88. package/dist/internal/providers/diagnostics.d.ts +103 -0
  89. package/dist/internal/providers/diagnostics.js +250 -0
  90. package/dist/internal/providers/diagnostics.js.map +1 -0
  91. package/dist/internal/providers/models.cjs +699 -0
  92. package/dist/internal/providers/models.cjs.map +1 -0
  93. package/dist/internal/providers/models.d.cts +136 -0
  94. package/dist/internal/providers/models.d.ts +136 -0
  95. package/dist/internal/providers/models.js +654 -0
  96. package/dist/internal/providers/models.js.map +1 -0
  97. package/dist/internal/terminal.cjs +161 -0
  98. package/dist/internal/terminal.cjs.map +1 -0
  99. package/dist/internal/terminal.d.cts +58 -0
  100. package/dist/internal/terminal.d.ts +58 -0
  101. package/dist/internal/terminal.js +128 -0
  102. package/dist/internal/terminal.js.map +1 -0
  103. package/dist/internal/tools/execAsync.cjs +187 -0
  104. package/dist/internal/tools/execAsync.cjs.map +1 -0
  105. package/dist/internal/tools/execAsync.d.cts +30 -0
  106. package/dist/internal/tools/execAsync.d.ts +30 -0
  107. package/dist/internal/tools/execAsync.js +162 -0
  108. package/dist/internal/tools/execAsync.js.map +1 -0
  109. package/dist/internal/tools/git.cjs +935 -0
  110. package/dist/internal/tools/git.cjs.map +1 -0
  111. package/dist/internal/tools/git.d.cts +206 -0
  112. package/dist/internal/tools/git.d.ts +206 -0
  113. package/dist/internal/tools/git.js +883 -0
  114. package/dist/internal/tools/git.js.map +1 -0
  115. package/dist/internal/tools/pathSafety.cjs +99 -0
  116. package/dist/internal/tools/pathSafety.cjs.map +1 -0
  117. package/dist/internal/tools/pathSafety.d.cts +44 -0
  118. package/dist/internal/tools/pathSafety.d.ts +44 -0
  119. package/dist/internal/tools/pathSafety.js +61 -0
  120. package/dist/internal/tools/pathSafety.js.map +1 -0
  121. package/dist/internal/tools/plan.cjs +146 -0
  122. package/dist/internal/tools/plan.cjs.map +1 -0
  123. package/dist/internal/tools/plan.d.cts +48 -0
  124. package/dist/internal/tools/plan.d.ts +48 -0
  125. package/dist/internal/tools/plan.js +117 -0
  126. package/dist/internal/tools/plan.js.map +1 -0
  127. package/dist/internal/tools/ripgrep.cjs +118 -0
  128. package/dist/internal/tools/ripgrep.cjs.map +1 -0
  129. package/dist/internal/tools/ripgrep.d.cts +6 -0
  130. package/dist/internal/tools/ripgrep.d.ts +6 -0
  131. package/dist/internal/tools/ripgrep.js +89 -0
  132. package/dist/internal/tools/ripgrep.js.map +1 -0
  133. package/dist/internal/tools/sandbox.cjs +253 -0
  134. package/dist/internal/tools/sandbox.cjs.map +1 -0
  135. package/dist/internal/tools/sandbox.d.cts +67 -0
  136. package/dist/internal/tools/sandbox.d.ts +67 -0
  137. package/dist/internal/tools/sandbox.js +213 -0
  138. package/dist/internal/tools/sandbox.js.map +1 -0
  139. package/dist/internal/tools/shell.cjs +771 -0
  140. package/dist/internal/tools/shell.cjs.map +1 -0
  141. package/dist/internal/tools/shell.d.cts +47 -0
  142. package/dist/internal/tools/shell.d.ts +47 -0
  143. package/dist/internal/tools/shell.js +731 -0
  144. package/dist/internal/tools/shell.js.map +1 -0
  145. package/dist/internal/tools/shellRuntime.cjs +220 -0
  146. package/dist/internal/tools/shellRuntime.cjs.map +1 -0
  147. package/dist/internal/tools/shellRuntime.d.cts +67 -0
  148. package/dist/internal/tools/shellRuntime.d.ts +67 -0
  149. package/dist/internal/tools/shellRuntime.js +181 -0
  150. package/dist/internal/tools/shellRuntime.js.map +1 -0
  151. package/dist/internal/update/controller.cjs +1035 -0
  152. package/dist/internal/update/controller.cjs.map +1 -0
  153. package/dist/internal/update/controller.d.cts +150 -0
  154. package/dist/internal/update/controller.d.ts +150 -0
  155. package/dist/internal/update/controller.js +991 -0
  156. package/dist/internal/update/controller.js.map +1 -0
  157. package/dist/internal/update/platform.cjs +234 -0
  158. package/dist/internal/update/platform.cjs.map +1 -0
  159. package/dist/internal/update/platform.d.cts +77 -0
  160. package/dist/internal/update/platform.d.ts +77 -0
  161. package/dist/internal/update/platform.js +184 -0
  162. package/dist/internal/update/platform.js.map +1 -0
  163. package/dist/tools/ask.d.cts +3 -1
  164. package/dist/tools/ask.d.ts +3 -1
  165. package/dist/tools/diff.cjs +17 -6
  166. package/dist/tools/diff.cjs.map +1 -1
  167. package/dist/tools/diff.d.cts +5 -2
  168. package/dist/tools/diff.d.ts +5 -2
  169. package/dist/tools/diff.js +17 -6
  170. package/dist/tools/diff.js.map +1 -1
  171. package/dist/tools/directories.d.cts +3 -1
  172. package/dist/tools/directories.d.ts +3 -1
  173. package/dist/tools/explore.cjs +1778 -204
  174. package/dist/tools/explore.cjs.map +1 -1
  175. package/dist/tools/explore.d.cts +82 -2
  176. package/dist/tools/explore.d.ts +82 -2
  177. package/dist/tools/explore.js +1780 -204
  178. package/dist/tools/explore.js.map +1 -1
  179. package/dist/tools/files.cjs +56 -21
  180. package/dist/tools/files.cjs.map +1 -1
  181. package/dist/tools/files.d.cts +6 -3
  182. package/dist/tools/files.d.ts +6 -3
  183. package/dist/tools/files.js +56 -21
  184. package/dist/tools/files.js.map +1 -1
  185. package/dist/tools/git.cjs +34 -25
  186. package/dist/tools/git.cjs.map +1 -1
  187. package/dist/tools/git.d.cts +4 -204
  188. package/dist/tools/git.d.ts +4 -204
  189. package/dist/tools/git.js +34 -25
  190. package/dist/tools/git.js.map +1 -1
  191. package/dist/tools/media.cjs +280 -3
  192. package/dist/tools/media.cjs.map +1 -1
  193. package/dist/tools/media.d.cts +3 -1
  194. package/dist/tools/media.d.ts +3 -1
  195. package/dist/tools/media.js +278 -1
  196. package/dist/tools/media.js.map +1 -1
  197. package/dist/tools/plan.cjs +62 -0
  198. package/dist/tools/plan.cjs.map +1 -1
  199. package/dist/tools/plan.d.cts +4 -17
  200. package/dist/tools/plan.d.ts +4 -17
  201. package/dist/tools/plan.js +59 -0
  202. package/dist/tools/plan.js.map +1 -1
  203. package/dist/tools/search.cjs +3 -0
  204. package/dist/tools/search.cjs.map +1 -1
  205. package/dist/tools/search.d.cts +3 -1
  206. package/dist/tools/search.d.ts +3 -1
  207. package/dist/tools/search.js +3 -0
  208. package/dist/tools/search.js.map +1 -1
  209. package/dist/tools/shell.cjs +76 -11
  210. package/dist/tools/shell.cjs.map +1 -1
  211. package/dist/tools/shell.d.cts +5 -39
  212. package/dist/tools/shell.d.ts +5 -39
  213. package/dist/tools/shell.js +75 -11
  214. package/dist/tools/shell.js.map +1 -1
  215. package/dist/tools/todo.d.cts +3 -1
  216. package/dist/tools/todo.d.ts +3 -1
  217. package/dist/tools/web.cjs +279 -5
  218. package/dist/tools/web.cjs.map +1 -1
  219. package/dist/tools/web.d.cts +3 -1
  220. package/dist/tools/web.d.ts +3 -1
  221. package/dist/tools/web.js +275 -3
  222. package/dist/tools/web.js.map +1 -1
  223. package/dist/types-BYyXWWPW.d.cts +237 -0
  224. package/dist/types-BYyXWWPW.d.ts +237 -0
  225. package/package.json +26 -37
  226. package/bin/zqagent +0 -2
  227. package/dist/cli/index.cjs +0 -25218
  228. package/dist/cli/index.cjs.map +0 -1
  229. package/dist/cli/index.d.cts +0 -2
  230. package/dist/cli/index.d.ts +0 -2
  231. package/dist/cli/index.js +0 -25201
  232. package/dist/cli/index.js.map +0 -1
  233. package/dist/server/index.cjs +0 -20510
  234. package/dist/server/index.cjs.map +0 -1
  235. package/dist/server/index.d.cts +0 -2
  236. package/dist/server/index.d.ts +0 -2
  237. package/dist/server/index.js +0 -20493
  238. package/dist/server/index.js.map +0 -1
@@ -1,4 +1,6 @@
1
- import { T as ToolRegistry } from '../ToolRegistry-C3pTFiaJ.cjs';
1
+ import { T as ToolRegistry } from '../ToolRegistry-DouDvn9E.cjs';
2
+ import '../types-BYyXWWPW.cjs';
3
+ import '@zqagent/shared/model-capabilities';
2
4
 
3
5
  /** 解析时间码:秒数、`MM:SS`、`HH:MM:SS(.mmm)` 都接受;非法返回 null */
4
6
  declare function parseTimecode(v: unknown): number | null;
@@ -1,4 +1,6 @@
1
- import { T as ToolRegistry } from '../ToolRegistry-C3pTFiaJ.js';
1
+ import { T as ToolRegistry } from '../ToolRegistry-Cy0fQxrb.js';
2
+ import '../types-BYyXWWPW.js';
3
+ import '@zqagent/shared/model-capabilities';
2
4
 
3
5
  /** 解析时间码:秒数、`MM:SS`、`HH:MM:SS(.mmm)` 都接受;非法返回 null */
4
6
  declare function parseTimecode(v: unknown): number | null;
@@ -319,6 +319,9 @@ var ShellTaskManager = class {
319
319
  }
320
320
  };
321
321
 
322
+ // src/tools/sandbox.ts
323
+ import { spawnSync as spawnSync2 } from "child_process";
324
+
322
325
  // src/tools/shell.ts
323
326
  var MAX_BUFFER = 1024 * 1024 * 5;
324
327
  function decodeOutput(buf) {
@@ -390,7 +393,281 @@ import * as path3 from "path";
390
393
  import { createRequire } from "module";
391
394
  import { createHash } from "crypto";
392
395
  import { pipeline } from "stream/promises";
393
- import { SocksProxyAgent } from "socks-proxy-agent";
396
+
397
+ // ../../node_modules/.pnpm/socks-proxy-agent@9.0.0_supports-color@7.2.0/node_modules/socks-proxy-agent/dist/index.js
398
+ import { SocksClient } from "socks";
399
+
400
+ // ../../node_modules/.pnpm/agent-base@8.0.0/node_modules/agent-base/dist/index.js
401
+ import * as net from "net";
402
+ import * as http from "http";
403
+ import { Agent as HttpsAgent } from "https";
404
+ var INTERNAL = /* @__PURE__ */ Symbol("AgentBaseInternalState");
405
+ var Agent2 = class extends http.Agent {
406
+ constructor(opts) {
407
+ super(opts);
408
+ this[INTERNAL] = {};
409
+ }
410
+ /**
411
+ * Determine whether this is an `http` or `https` request.
412
+ */
413
+ isSecureEndpoint(options) {
414
+ if (options) {
415
+ if (typeof options.secureEndpoint === "boolean") {
416
+ return options.secureEndpoint;
417
+ }
418
+ if (typeof options.protocol === "string") {
419
+ return options.protocol === "https:";
420
+ }
421
+ }
422
+ const { stack } = new Error();
423
+ if (typeof stack !== "string")
424
+ return false;
425
+ return stack.split("\n").some((l) => l.indexOf("(https.js:") !== -1 || l.indexOf("node:https:") !== -1);
426
+ }
427
+ // In order to support async signatures in `connect()` and Node's native
428
+ // connection pooling in `http.Agent`, the array of sockets for each origin
429
+ // has to be updated synchronously. This is so the length of the array is
430
+ // accurate when `addRequest()` is next called. We achieve this by creating a
431
+ // fake socket and adding it to `sockets[origin]` and incrementing
432
+ // `totalSocketCount`.
433
+ incrementSockets(name) {
434
+ if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {
435
+ return null;
436
+ }
437
+ if (!this.sockets[name]) {
438
+ this.sockets[name] = [];
439
+ }
440
+ const fakeSocket = new net.Socket({ writable: false });
441
+ this.sockets[name].push(fakeSocket);
442
+ this.totalSocketCount++;
443
+ return fakeSocket;
444
+ }
445
+ decrementSockets(name, socket) {
446
+ if (!this.sockets[name] || socket === null) {
447
+ return;
448
+ }
449
+ const sockets = this.sockets[name];
450
+ const index = sockets.indexOf(socket);
451
+ if (index !== -1) {
452
+ sockets.splice(index, 1);
453
+ this.totalSocketCount--;
454
+ if (sockets.length === 0) {
455
+ delete this.sockets[name];
456
+ }
457
+ }
458
+ }
459
+ // In order to properly update the socket pool, we need to call `getName()` on
460
+ // the core `https.Agent` if it is a secureEndpoint.
461
+ getName(options) {
462
+ const secureEndpoint = this.isSecureEndpoint(options);
463
+ if (secureEndpoint) {
464
+ return HttpsAgent.prototype.getName.call(this, options);
465
+ }
466
+ return super.getName(options);
467
+ }
468
+ createSocket(req, options, cb) {
469
+ const connectOpts = {
470
+ ...options,
471
+ secureEndpoint: this.isSecureEndpoint(options)
472
+ };
473
+ const name = this.getName(connectOpts);
474
+ const fakeSocket = this.incrementSockets(name);
475
+ Promise.resolve().then(() => this.connect(req, connectOpts)).then((socket) => {
476
+ this.decrementSockets(name, fakeSocket);
477
+ if (socket instanceof http.Agent) {
478
+ try {
479
+ return socket.addRequest(req, connectOpts);
480
+ } catch (err) {
481
+ return cb(err);
482
+ }
483
+ }
484
+ this[INTERNAL].currentSocket = socket;
485
+ super.createSocket(req, options, cb);
486
+ }, (err) => {
487
+ this.decrementSockets(name, fakeSocket);
488
+ cb(err);
489
+ });
490
+ }
491
+ createConnection() {
492
+ const socket = this[INTERNAL].currentSocket;
493
+ this[INTERNAL].currentSocket = void 0;
494
+ if (!socket) {
495
+ throw new Error("No socket was returned in the `connect()` function");
496
+ }
497
+ return socket;
498
+ }
499
+ get defaultPort() {
500
+ return this[INTERNAL].defaultPort ?? (this.protocol === "https:" ? 443 : 80);
501
+ }
502
+ set defaultPort(v) {
503
+ if (this[INTERNAL]) {
504
+ this[INTERNAL].defaultPort = v;
505
+ }
506
+ }
507
+ get protocol() {
508
+ return this[INTERNAL].protocol ?? (this.isSecureEndpoint() ? "https:" : "http:");
509
+ }
510
+ set protocol(v) {
511
+ if (this[INTERNAL]) {
512
+ this[INTERNAL].protocol = v;
513
+ }
514
+ }
515
+ };
516
+
517
+ // ../../node_modules/.pnpm/socks-proxy-agent@9.0.0_supports-color@7.2.0/node_modules/socks-proxy-agent/dist/index.js
518
+ import createDebug from "debug";
519
+ import * as dns from "dns";
520
+ import * as net2 from "net";
521
+ import * as tls from "tls";
522
+ import { URL as URL2 } from "url";
523
+ var debug = createDebug("socks-proxy-agent");
524
+ var setServernameFromNonIpHost = (options) => {
525
+ if (options.servername === void 0 && options.host && !net2.isIP(options.host)) {
526
+ return {
527
+ ...options,
528
+ servername: options.host
529
+ };
530
+ }
531
+ return options;
532
+ };
533
+ function parseSocksURL(url) {
534
+ let lookup2 = false;
535
+ let type = 5;
536
+ const host = url.hostname;
537
+ const port = parseInt(url.port, 10) || 1080;
538
+ switch (url.protocol.replace(":", "")) {
539
+ case "socks4":
540
+ lookup2 = true;
541
+ type = 4;
542
+ break;
543
+ // pass through
544
+ case "socks4a":
545
+ type = 4;
546
+ break;
547
+ case "socks5":
548
+ lookup2 = true;
549
+ type = 5;
550
+ break;
551
+ // pass through
552
+ case "socks":
553
+ type = 5;
554
+ break;
555
+ case "socks5h":
556
+ type = 5;
557
+ break;
558
+ default:
559
+ throw new TypeError(`A "socks" protocol must be specified! Got: ${String(url.protocol)}`);
560
+ }
561
+ const proxy = {
562
+ host,
563
+ port,
564
+ type
565
+ };
566
+ if (url.username) {
567
+ Object.defineProperty(proxy, "userId", {
568
+ value: decodeURIComponent(url.username),
569
+ enumerable: false
570
+ });
571
+ }
572
+ if (url.password != null) {
573
+ Object.defineProperty(proxy, "password", {
574
+ value: decodeURIComponent(url.password),
575
+ enumerable: false
576
+ });
577
+ }
578
+ return { lookup: lookup2, proxy };
579
+ }
580
+ var SocksProxyAgent = class extends Agent2 {
581
+ constructor(uri, opts) {
582
+ super(opts);
583
+ const url = typeof uri === "string" ? new URL2(uri) : uri;
584
+ const { proxy, lookup: lookup2 } = parseSocksURL(url);
585
+ this.shouldLookup = lookup2;
586
+ this.proxy = proxy;
587
+ this.timeout = opts?.timeout ?? null;
588
+ this.socketOptions = opts?.socketOptions ?? null;
589
+ }
590
+ /**
591
+ * Initiates a SOCKS connection to the specified SOCKS proxy server,
592
+ * which in turn connects to the specified remote host and port.
593
+ */
594
+ async connect(req, opts) {
595
+ const { shouldLookup, proxy, timeout } = this;
596
+ if (!opts.host) {
597
+ throw new Error("No `host` defined!");
598
+ }
599
+ let { host } = opts;
600
+ const { port, lookup: lookupFn = dns.lookup } = opts;
601
+ if (shouldLookup) {
602
+ host = await new Promise((resolve4, reject) => {
603
+ lookupFn(host, {}, (err, address) => {
604
+ if (err) {
605
+ reject(err);
606
+ } else {
607
+ resolve4(typeof address === "string" ? address : address[0].address);
608
+ }
609
+ });
610
+ });
611
+ }
612
+ const socksOpts = {
613
+ proxy,
614
+ destination: {
615
+ host,
616
+ port: typeof port === "number" ? port : parseInt(port, 10)
617
+ },
618
+ command: "connect",
619
+ timeout: timeout ?? void 0,
620
+ // @ts-expect-error the type supplied by socks for socket_options is wider
621
+ // than necessary since socks will always override the host and port
622
+ socket_options: this.socketOptions ?? void 0
623
+ };
624
+ const cleanup = (tlsSocket) => {
625
+ req.destroy();
626
+ socket.destroy();
627
+ if (tlsSocket)
628
+ tlsSocket.destroy();
629
+ };
630
+ debug("Creating socks proxy connection: %o", socksOpts);
631
+ const { socket } = await SocksClient.createConnection(socksOpts);
632
+ debug("Successfully created socks proxy connection");
633
+ if (timeout !== null) {
634
+ socket.setTimeout(timeout);
635
+ socket.on("timeout", () => cleanup());
636
+ }
637
+ if (opts.secureEndpoint) {
638
+ debug("Upgrading socket connection to TLS");
639
+ const tlsSocket = tls.connect({
640
+ ...omit(setServernameFromNonIpHost(opts), "host", "path", "port"),
641
+ socket
642
+ });
643
+ tlsSocket.once("error", (error) => {
644
+ debug("Socket TLS error", error.message);
645
+ cleanup(tlsSocket);
646
+ });
647
+ return tlsSocket;
648
+ }
649
+ return socket;
650
+ }
651
+ };
652
+ SocksProxyAgent.protocols = [
653
+ "socks",
654
+ "socks4",
655
+ "socks4a",
656
+ "socks5",
657
+ "socks5h"
658
+ ];
659
+ function omit(obj, ...keys) {
660
+ const ret = {};
661
+ let key;
662
+ for (key in obj) {
663
+ if (!keys.includes(key)) {
664
+ ret[key] = obj[key];
665
+ }
666
+ }
667
+ return ret;
668
+ }
669
+
670
+ // src/tools/ffmpegRuntime.ts
394
671
  import nodeFetch from "node-fetch";
395
672
  var ENV_FFMPEG = "ZQAGENT_FFMPEG";
396
673
  var ENV_FFPROBE = "ZQAGENT_FFPROBE";