@nsshunt/ststccclient 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 nsshunt
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # ststccclient
package/dist/index.cjs ADDED
@@ -0,0 +1,469 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ let _nsshunt_stsutils = require("@nsshunt/stsutils");
3
+ let _nsshunt_stssocketioutils = require("@nsshunt/stssocketioutils");
4
+ //#region node_modules/chalk/source/vendor/ansi-styles/index.js
5
+ var ANSI_BACKGROUND_OFFSET = 10;
6
+ var wrapAnsi16 = (offset = 0) => (code) => `\u001B[${code + offset}m`;
7
+ var wrapAnsi256 = (offset = 0) => (code) => `\u001B[${38 + offset};5;${code}m`;
8
+ var wrapAnsi16m = (offset = 0) => (red, green, blue) => `\u001B[${38 + offset};2;${red};${green};${blue}m`;
9
+ var styles$1 = {
10
+ modifier: {
11
+ reset: [0, 0],
12
+ bold: [1, 22],
13
+ dim: [2, 22],
14
+ italic: [3, 23],
15
+ underline: [4, 24],
16
+ overline: [53, 55],
17
+ inverse: [7, 27],
18
+ hidden: [8, 28],
19
+ strikethrough: [9, 29]
20
+ },
21
+ color: {
22
+ black: [30, 39],
23
+ red: [31, 39],
24
+ green: [32, 39],
25
+ yellow: [33, 39],
26
+ blue: [34, 39],
27
+ magenta: [35, 39],
28
+ cyan: [36, 39],
29
+ white: [37, 39],
30
+ blackBright: [90, 39],
31
+ gray: [90, 39],
32
+ grey: [90, 39],
33
+ redBright: [91, 39],
34
+ greenBright: [92, 39],
35
+ yellowBright: [93, 39],
36
+ blueBright: [94, 39],
37
+ magentaBright: [95, 39],
38
+ cyanBright: [96, 39],
39
+ whiteBright: [97, 39]
40
+ },
41
+ bgColor: {
42
+ bgBlack: [40, 49],
43
+ bgRed: [41, 49],
44
+ bgGreen: [42, 49],
45
+ bgYellow: [43, 49],
46
+ bgBlue: [44, 49],
47
+ bgMagenta: [45, 49],
48
+ bgCyan: [46, 49],
49
+ bgWhite: [47, 49],
50
+ bgBlackBright: [100, 49],
51
+ bgGray: [100, 49],
52
+ bgGrey: [100, 49],
53
+ bgRedBright: [101, 49],
54
+ bgGreenBright: [102, 49],
55
+ bgYellowBright: [103, 49],
56
+ bgBlueBright: [104, 49],
57
+ bgMagentaBright: [105, 49],
58
+ bgCyanBright: [106, 49],
59
+ bgWhiteBright: [107, 49]
60
+ }
61
+ };
62
+ Object.keys(styles$1.modifier);
63
+ var foregroundColorNames = Object.keys(styles$1.color);
64
+ var backgroundColorNames = Object.keys(styles$1.bgColor);
65
+ [...foregroundColorNames, ...backgroundColorNames];
66
+ function assembleStyles() {
67
+ const codes = /* @__PURE__ */ new Map();
68
+ for (const [groupName, group] of Object.entries(styles$1)) {
69
+ for (const [styleName, style] of Object.entries(group)) {
70
+ styles$1[styleName] = {
71
+ open: `\u001B[${style[0]}m`,
72
+ close: `\u001B[${style[1]}m`
73
+ };
74
+ group[styleName] = styles$1[styleName];
75
+ codes.set(style[0], style[1]);
76
+ }
77
+ Object.defineProperty(styles$1, groupName, {
78
+ value: group,
79
+ enumerable: false
80
+ });
81
+ }
82
+ Object.defineProperty(styles$1, "codes", {
83
+ value: codes,
84
+ enumerable: false
85
+ });
86
+ styles$1.color.close = "\x1B[39m";
87
+ styles$1.bgColor.close = "\x1B[49m";
88
+ styles$1.color.ansi = wrapAnsi16();
89
+ styles$1.color.ansi256 = wrapAnsi256();
90
+ styles$1.color.ansi16m = wrapAnsi16m();
91
+ styles$1.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);
92
+ styles$1.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);
93
+ styles$1.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);
94
+ Object.defineProperties(styles$1, {
95
+ rgbToAnsi256: {
96
+ value(red, green, blue) {
97
+ if (red === green && green === blue) {
98
+ if (red < 8) return 16;
99
+ if (red > 248) return 231;
100
+ return Math.round((red - 8) / 247 * 24) + 232;
101
+ }
102
+ return 16 + 36 * Math.round(red / 255 * 5) + 6 * Math.round(green / 255 * 5) + Math.round(blue / 255 * 5);
103
+ },
104
+ enumerable: false
105
+ },
106
+ hexToRgb: {
107
+ value(hex) {
108
+ const matches = /[a-f\d]{6}|[a-f\d]{3}/i.exec(hex.toString(16));
109
+ if (!matches) return [
110
+ 0,
111
+ 0,
112
+ 0
113
+ ];
114
+ let [colorString] = matches;
115
+ if (colorString.length === 3) colorString = [...colorString].map((character) => character + character).join("");
116
+ const integer = Number.parseInt(colorString, 16);
117
+ return [
118
+ integer >> 16 & 255,
119
+ integer >> 8 & 255,
120
+ integer & 255
121
+ ];
122
+ },
123
+ enumerable: false
124
+ },
125
+ hexToAnsi256: {
126
+ value: (hex) => styles$1.rgbToAnsi256(...styles$1.hexToRgb(hex)),
127
+ enumerable: false
128
+ },
129
+ ansi256ToAnsi: {
130
+ value(code) {
131
+ if (code < 8) return 30 + code;
132
+ if (code < 16) return 90 + (code - 8);
133
+ let red;
134
+ let green;
135
+ let blue;
136
+ if (code >= 232) {
137
+ red = ((code - 232) * 10 + 8) / 255;
138
+ green = red;
139
+ blue = red;
140
+ } else {
141
+ code -= 16;
142
+ const remainder = code % 36;
143
+ red = Math.floor(code / 36) / 5;
144
+ green = Math.floor(remainder / 6) / 5;
145
+ blue = remainder % 6 / 5;
146
+ }
147
+ const value = Math.max(red, green, blue) * 2;
148
+ if (value === 0) return 30;
149
+ let result = 30 + (Math.round(blue) << 2 | Math.round(green) << 1 | Math.round(red));
150
+ if (value === 2) result += 60;
151
+ return result;
152
+ },
153
+ enumerable: false
154
+ },
155
+ rgbToAnsi: {
156
+ value: (red, green, blue) => styles$1.ansi256ToAnsi(styles$1.rgbToAnsi256(red, green, blue)),
157
+ enumerable: false
158
+ },
159
+ hexToAnsi: {
160
+ value: (hex) => styles$1.ansi256ToAnsi(styles$1.hexToAnsi256(hex)),
161
+ enumerable: false
162
+ }
163
+ });
164
+ return styles$1;
165
+ }
166
+ var ansiStyles = assembleStyles();
167
+ //#endregion
168
+ //#region node_modules/chalk/source/vendor/supports-color/browser.js
169
+ var level = (() => {
170
+ if (!("navigator" in globalThis)) return 0;
171
+ if (globalThis.navigator.userAgentData) {
172
+ const brand = navigator.userAgentData.brands.find(({ brand }) => brand === "Chromium");
173
+ if (brand && brand.version > 93) return 3;
174
+ }
175
+ if (/\b(Chrome|Chromium)\//.test(globalThis.navigator.userAgent)) return 1;
176
+ return 0;
177
+ })();
178
+ var colorSupport = level !== 0 && {
179
+ level,
180
+ hasBasic: true,
181
+ has256: level >= 2,
182
+ has16m: level >= 3
183
+ };
184
+ var supportsColor = {
185
+ stdout: colorSupport,
186
+ stderr: colorSupport
187
+ };
188
+ //#endregion
189
+ //#region node_modules/chalk/source/utilities.js
190
+ function stringReplaceAll(string, substring, replacer) {
191
+ let index = string.indexOf(substring);
192
+ if (index === -1) return string;
193
+ const substringLength = substring.length;
194
+ let endIndex = 0;
195
+ let returnValue = "";
196
+ do {
197
+ returnValue += string.slice(endIndex, index) + substring + replacer;
198
+ endIndex = index + substringLength;
199
+ index = string.indexOf(substring, endIndex);
200
+ } while (index !== -1);
201
+ returnValue += string.slice(endIndex);
202
+ return returnValue;
203
+ }
204
+ function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {
205
+ let endIndex = 0;
206
+ let returnValue = "";
207
+ do {
208
+ const gotCR = string[index - 1] === "\r";
209
+ returnValue += string.slice(endIndex, gotCR ? index - 1 : index) + prefix + (gotCR ? "\r\n" : "\n") + postfix;
210
+ endIndex = index + 1;
211
+ index = string.indexOf("\n", endIndex);
212
+ } while (index !== -1);
213
+ returnValue += string.slice(endIndex);
214
+ return returnValue;
215
+ }
216
+ //#endregion
217
+ //#region node_modules/chalk/source/index.js
218
+ var { stdout: stdoutColor, stderr: stderrColor } = supportsColor;
219
+ var GENERATOR = Symbol("GENERATOR");
220
+ var STYLER = Symbol("STYLER");
221
+ var IS_EMPTY = Symbol("IS_EMPTY");
222
+ var levelMapping = [
223
+ "ansi",
224
+ "ansi",
225
+ "ansi256",
226
+ "ansi16m"
227
+ ];
228
+ var styles = Object.create(null);
229
+ var applyOptions = (object, options = {}) => {
230
+ if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) throw new Error("The `level` option should be an integer from 0 to 3");
231
+ const colorLevel = stdoutColor ? stdoutColor.level : 0;
232
+ object.level = options.level === void 0 ? colorLevel : options.level;
233
+ };
234
+ var chalkFactory = (options) => {
235
+ const chalk = (...strings) => strings.join(" ");
236
+ applyOptions(chalk, options);
237
+ Object.setPrototypeOf(chalk, createChalk.prototype);
238
+ return chalk;
239
+ };
240
+ function createChalk(options) {
241
+ return chalkFactory(options);
242
+ }
243
+ Object.setPrototypeOf(createChalk.prototype, Function.prototype);
244
+ for (const [styleName, style] of Object.entries(ansiStyles)) styles[styleName] = { get() {
245
+ const builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);
246
+ Object.defineProperty(this, styleName, { value: builder });
247
+ return builder;
248
+ } };
249
+ styles.visible = { get() {
250
+ const builder = createBuilder(this, this[STYLER], true);
251
+ Object.defineProperty(this, "visible", { value: builder });
252
+ return builder;
253
+ } };
254
+ var getModelAnsi = (model, level, type, ...arguments_) => {
255
+ if (model === "rgb") {
256
+ if (level === "ansi16m") return ansiStyles[type].ansi16m(...arguments_);
257
+ if (level === "ansi256") return ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));
258
+ return ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));
259
+ }
260
+ if (model === "hex") return getModelAnsi("rgb", level, type, ...ansiStyles.hexToRgb(...arguments_));
261
+ return ansiStyles[type][model](...arguments_);
262
+ };
263
+ for (const model of [
264
+ "rgb",
265
+ "hex",
266
+ "ansi256"
267
+ ]) {
268
+ styles[model] = { get() {
269
+ const { level } = this;
270
+ return function(...arguments_) {
271
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "color", ...arguments_), ansiStyles.color.close, this[STYLER]);
272
+ return createBuilder(this, styler, this[IS_EMPTY]);
273
+ };
274
+ } };
275
+ const bgModel = "bg" + model[0].toUpperCase() + model.slice(1);
276
+ styles[bgModel] = { get() {
277
+ const { level } = this;
278
+ return function(...arguments_) {
279
+ const styler = createStyler(getModelAnsi(model, levelMapping[level], "bgColor", ...arguments_), ansiStyles.bgColor.close, this[STYLER]);
280
+ return createBuilder(this, styler, this[IS_EMPTY]);
281
+ };
282
+ } };
283
+ }
284
+ var proto = Object.defineProperties(() => {}, {
285
+ ...styles,
286
+ level: {
287
+ enumerable: true,
288
+ get() {
289
+ return this[GENERATOR].level;
290
+ },
291
+ set(level) {
292
+ this[GENERATOR].level = level;
293
+ }
294
+ }
295
+ });
296
+ var createStyler = (open, close, parent) => {
297
+ let openAll;
298
+ let closeAll;
299
+ if (parent === void 0) {
300
+ openAll = open;
301
+ closeAll = close;
302
+ } else {
303
+ openAll = parent.openAll + open;
304
+ closeAll = close + parent.closeAll;
305
+ }
306
+ return {
307
+ open,
308
+ close,
309
+ openAll,
310
+ closeAll,
311
+ parent
312
+ };
313
+ };
314
+ var createBuilder = (self, _styler, _isEmpty) => {
315
+ const builder = (...arguments_) => applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" "));
316
+ Object.setPrototypeOf(builder, proto);
317
+ builder[GENERATOR] = self;
318
+ builder[STYLER] = _styler;
319
+ builder[IS_EMPTY] = _isEmpty;
320
+ return builder;
321
+ };
322
+ var applyStyle = (self, string) => {
323
+ if (self.level <= 0 || !string) return self[IS_EMPTY] ? "" : string;
324
+ let styler = self[STYLER];
325
+ if (styler === void 0) return string;
326
+ const { openAll, closeAll } = styler;
327
+ if (string.includes("\x1B")) while (styler !== void 0) {
328
+ string = stringReplaceAll(string, styler.close, styler.open);
329
+ styler = styler.parent;
330
+ }
331
+ const lfIndex = string.indexOf("\n");
332
+ if (lfIndex !== -1) string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);
333
+ return openAll + string + closeAll;
334
+ };
335
+ Object.defineProperties(createChalk.prototype, styles);
336
+ var chalk = createChalk();
337
+ createChalk({ level: stderrColor ? stderrColor.level : 0 });
338
+ //#endregion
339
+ //#region src/adminClient.ts
340
+ chalk.level = 3;
341
+ var AdminClient = class extends _nsshunt_stssocketioutils.SocketIoClient {
342
+ _options;
343
+ _id = globalThis.crypto.randomUUID();
344
+ _debug = (message) => this._options.logger.debug(message);
345
+ _error = (error) => this._options.logger.error(error);
346
+ constructor(options) {
347
+ super(options.name);
348
+ this._options = options;
349
+ this._Start();
350
+ }
351
+ get id() {
352
+ return this._id;
353
+ }
354
+ SocketConnectError(error) {}
355
+ SocketDisconnect(reason) {}
356
+ SocketConnect(socket) {
357
+ this._OnSocketConnected(socket, this.name, []);
358
+ }
359
+ SocketError(error) {
360
+ this._error(`AdminClient:SocketError():[${this.name}]: SetupClientSideSocket call back: [${error}]`);
361
+ }
362
+ SetupSocketEvents(socket) {
363
+ socket.on("StateChange", (data) => {
364
+ this.emit("StateChange", data);
365
+ });
366
+ socket.on("Telemetry", (data) => {
367
+ this.emit("Telemetry", data);
368
+ });
369
+ }
370
+ _Start = async () => {
371
+ this.WithAddress(this._options.adminGatewayEndpoint).WithLogger(_nsshunt_stsutils.defaultLogger).WithSocketIoCustomPath(this._options.adminGatewaySocketIoCustomPath).WithAckTimeout(this._options.ackTimeout);
372
+ if (this._options.agentManager) this.WithAgentManager(this._options.agentManager);
373
+ this.SetupSocket();
374
+ };
375
+ Stop = async () => {
376
+ this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Stopping Service...`));
377
+ if (this.socket) {
378
+ this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Going to disconnect socket ...`));
379
+ this.socket.disconnect();
380
+ this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Socket disconnected.`));
381
+ }
382
+ this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Sleeping (500ms) ...`));
383
+ await (0, _nsshunt_stsutils.Sleep)(500);
384
+ this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Service Stopped.`));
385
+ };
386
+ _OnSocketConnected = (socket, clientName, joinRooms) => {
387
+ this._debug(chalk.green(`AdminClient:_OnSocketConnected():[${this.name}]: _id: [${this._id}] clientName: [${clientName}]: --> connected`));
388
+ const rooms = [`node_${this._id}`, ...joinRooms];
389
+ this._debug(chalk.green(`AdminClient:_OnSocketConnected():[${this.name}]: _id: [${this._id}] clientName: [${clientName}]: Joining Rooms: [${rooms}]`));
390
+ socket.emit("__STSjoinRoom", rooms);
391
+ };
392
+ GetSocket = () => {
393
+ if (this.socket) return this.socket;
394
+ throw new Error("AdminClient:GetSocket(): Socket not defined");
395
+ };
396
+ AddWorker = (args) => {
397
+ return this.GetSocket().emitWithAck("AddWorker", args);
398
+ };
399
+ AddRunner = (args) => {
400
+ return this.GetSocket().emitWithAck("AddRunner", args);
401
+ };
402
+ AddRunnerToWorkerByWorkerId = (args) => {
403
+ return this.GetSocket().emitWithAck("AddRunnerToWorkerByWorkerId", args);
404
+ };
405
+ GetService = (args) => {
406
+ return this.GetSocket().emitWithAck("GetService", args);
407
+ };
408
+ GetWorkers = (args) => {
409
+ return this.GetSocket().emitWithAck("GetWorkers", args);
410
+ };
411
+ GetWorkersCore = (args) => {
412
+ return this.GetSocket().emitWithAck("GetWorkersCore", args);
413
+ };
414
+ GetArchiveList = (args) => {
415
+ return this.GetSocket().emitWithAck("GetArchiveList", args);
416
+ };
417
+ StartWorkers = (args) => {
418
+ return this.GetSocket().emitWithAck("StartWorkers", args);
419
+ };
420
+ StopWorkers = (args) => {
421
+ return this.GetSocket().emitWithAck("StopWorkers", args);
422
+ };
423
+ PauseWorkers = (args) => {
424
+ return this.GetSocket().emitWithAck("PauseWorkers", args);
425
+ };
426
+ ResumeWorkers = (args) => {
427
+ return this.GetSocket().emitWithAck("ResumeWorkers", args);
428
+ };
429
+ ExecuteWorkers = (args) => {
430
+ return this.GetSocket().emitWithAck("ExecuteWorkers", args);
431
+ };
432
+ ResetWorkers = (args) => {
433
+ return this.GetSocket().emitWithAck("ResetWorkers", args);
434
+ };
435
+ TerminateWorkers = (args) => {
436
+ return this.GetSocket().emitWithAck("TerminateWorkers", args);
437
+ };
438
+ UpdateWorkers = (args) => {
439
+ return this.GetSocket().emitWithAck("UpdateWorkers", args);
440
+ };
441
+ StartRunners = (args) => {
442
+ return this.GetSocket().emitWithAck("StartRunners", args);
443
+ };
444
+ StopRunners = (args) => {
445
+ return this.GetSocket().emitWithAck("StopRunners", args);
446
+ };
447
+ PauseRunners = (args) => {
448
+ return this.GetSocket().emitWithAck("PauseRunners", args);
449
+ };
450
+ ResumeRunners = (args) => {
451
+ return this.GetSocket().emitWithAck("ResumeRunners", args);
452
+ };
453
+ ExecuteRunners = (args) => {
454
+ return this.GetSocket().emitWithAck("ExecuteRunners", args);
455
+ };
456
+ ResetRunners = (args) => {
457
+ return this.GetSocket().emitWithAck("ResetRunners", args);
458
+ };
459
+ TerminateRunners = (args) => {
460
+ return this.GetSocket().emitWithAck("TerminateRunners", args);
461
+ };
462
+ UpdateRunners = (args) => {
463
+ return this.GetSocket().emitWithAck("UpdateRunners", args);
464
+ };
465
+ };
466
+ //#endregion
467
+ exports.AdminClient = AdminClient;
468
+
469
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":["styles"],"sources":["../node_modules/chalk/source/vendor/ansi-styles/index.js","../node_modules/chalk/source/vendor/supports-color/browser.js","../node_modules/chalk/source/utilities.js","../node_modules/chalk/source/index.js","../src/adminClient.ts"],"sourcesContent":["const ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi16 = (offset = 0) => code => `\\u001B[${code + offset}m`;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nconst styles = {\n\tmodifier: {\n\t\treset: [0, 0],\n\t\t// 21 isn't widely supported and 22 does the same thing\n\t\tbold: [1, 22],\n\t\tdim: [2, 22],\n\t\titalic: [3, 23],\n\t\tunderline: [4, 24],\n\t\toverline: [53, 55],\n\t\tinverse: [7, 27],\n\t\thidden: [8, 28],\n\t\tstrikethrough: [9, 29],\n\t},\n\tcolor: {\n\t\tblack: [30, 39],\n\t\tred: [31, 39],\n\t\tgreen: [32, 39],\n\t\tyellow: [33, 39],\n\t\tblue: [34, 39],\n\t\tmagenta: [35, 39],\n\t\tcyan: [36, 39],\n\t\twhite: [37, 39],\n\n\t\t// Bright color\n\t\tblackBright: [90, 39],\n\t\tgray: [90, 39], // Alias of `blackBright`\n\t\tgrey: [90, 39], // Alias of `blackBright`\n\t\tredBright: [91, 39],\n\t\tgreenBright: [92, 39],\n\t\tyellowBright: [93, 39],\n\t\tblueBright: [94, 39],\n\t\tmagentaBright: [95, 39],\n\t\tcyanBright: [96, 39],\n\t\twhiteBright: [97, 39],\n\t},\n\tbgColor: {\n\t\tbgBlack: [40, 49],\n\t\tbgRed: [41, 49],\n\t\tbgGreen: [42, 49],\n\t\tbgYellow: [43, 49],\n\t\tbgBlue: [44, 49],\n\t\tbgMagenta: [45, 49],\n\t\tbgCyan: [46, 49],\n\t\tbgWhite: [47, 49],\n\n\t\t// Bright color\n\t\tbgBlackBright: [100, 49],\n\t\tbgGray: [100, 49], // Alias of `bgBlackBright`\n\t\tbgGrey: [100, 49], // Alias of `bgBlackBright`\n\t\tbgRedBright: [101, 49],\n\t\tbgGreenBright: [102, 49],\n\t\tbgYellowBright: [103, 49],\n\t\tbgBlueBright: [104, 49],\n\t\tbgMagentaBright: [105, 49],\n\t\tbgCyanBright: [106, 49],\n\t\tbgWhiteBright: [107, 49],\n\t},\n};\n\nexport const modifierNames = Object.keys(styles.modifier);\nexport const foregroundColorNames = Object.keys(styles.color);\nexport const backgroundColorNames = Object.keys(styles.bgColor);\nexport const colorNames = [...foregroundColorNames, ...backgroundColorNames];\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`,\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false,\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false,\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = wrapAnsi16();\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi = wrapAnsi16(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue(red, green, blue) {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16\n\t\t\t\t\t+ (36 * Math.round(red / 255 * 5))\n\t\t\t\t\t+ (6 * Math.round(green / 255 * 5))\n\t\t\t\t\t+ Math.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue(hex) {\n\t\t\t\tconst matches = /[a-f\\d]{6}|[a-f\\d]{3}/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet [colorString] = matches;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = [...colorString].map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t/* eslint-disable no-bitwise */\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF,\n\t\t\t\t\t/* eslint-enable no-bitwise */\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t\tansi256ToAnsi: {\n\t\t\tvalue(code) {\n\t\t\t\tif (code < 8) {\n\t\t\t\t\treturn 30 + code;\n\t\t\t\t}\n\n\t\t\t\tif (code < 16) {\n\t\t\t\t\treturn 90 + (code - 8);\n\t\t\t\t}\n\n\t\t\t\tlet red;\n\t\t\t\tlet green;\n\t\t\t\tlet blue;\n\n\t\t\t\tif (code >= 232) {\n\t\t\t\t\tred = (((code - 232) * 10) + 8) / 255;\n\t\t\t\t\tgreen = red;\n\t\t\t\t\tblue = red;\n\t\t\t\t} else {\n\t\t\t\t\tcode -= 16;\n\n\t\t\t\t\tconst remainder = code % 36;\n\n\t\t\t\t\tred = Math.floor(code / 36) / 5;\n\t\t\t\t\tgreen = Math.floor(remainder / 6) / 5;\n\t\t\t\t\tblue = (remainder % 6) / 5;\n\t\t\t\t}\n\n\t\t\t\tconst value = Math.max(red, green, blue) * 2;\n\n\t\t\t\tif (value === 0) {\n\t\t\t\t\treturn 30;\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tlet result = 30 + ((Math.round(blue) << 2) | (Math.round(green) << 1) | Math.round(red));\n\n\t\t\t\tif (value === 2) {\n\t\t\t\t\tresult += 60;\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t},\n\t\t\tenumerable: false,\n\t\t},\n\t\trgbToAnsi: {\n\t\t\tvalue: (red, green, blue) => styles.ansi256ToAnsi(styles.rgbToAnsi256(red, green, blue)),\n\t\t\tenumerable: false,\n\t\t},\n\t\thexToAnsi: {\n\t\t\tvalue: hex => styles.ansi256ToAnsi(styles.hexToAnsi256(hex)),\n\t\t\tenumerable: false,\n\t\t},\n\t});\n\n\treturn styles;\n}\n\nconst ansiStyles = assembleStyles();\n\nexport default ansiStyles;\n","/* eslint-env browser */\n\nconst level = (() => {\n\tif (!('navigator' in globalThis)) {\n\t\treturn 0;\n\t}\n\n\tif (globalThis.navigator.userAgentData) {\n\t\tconst brand = navigator.userAgentData.brands.find(({brand}) => brand === 'Chromium');\n\t\tif (brand && brand.version > 93) {\n\t\t\treturn 3;\n\t\t}\n\t}\n\n\tif (/\\b(Chrome|Chromium)\\//.test(globalThis.navigator.userAgent)) {\n\t\treturn 1;\n\t}\n\n\treturn 0;\n})();\n\nconst colorSupport = level !== 0 && {\n\tlevel,\n\thasBasic: true,\n\thas256: level >= 2,\n\thas16m: level >= 3,\n};\n\nconst supportsColor = {\n\tstdout: colorSupport,\n\tstderr: colorSupport,\n};\n\nexport default supportsColor;\n","// TODO: When targeting Node.js 16, use `String.prototype.replaceAll`.\nexport function stringReplaceAll(string, substring, replacer) {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.slice(endIndex, index) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n\nexport function stringEncaseCRLFWithFirstIndex(string, prefix, postfix, index) {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.slice(endIndex, (gotCR ? index - 1 : index)) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.slice(endIndex);\n\treturn returnValue;\n}\n","import ansiStyles from '#ansi-styles';\nimport supportsColor from '#supports-color';\nimport { // eslint-disable-line import/order\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex,\n} from './utilities.js';\n\nconst {stdout: stdoutColor, stderr: stderrColor} = supportsColor;\n\nconst GENERATOR = Symbol('GENERATOR');\nconst STYLER = Symbol('STYLER');\nconst IS_EMPTY = Symbol('IS_EMPTY');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m',\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nexport class Chalk {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = (...strings) => strings.join(' ');\n\tapplyOptions(chalk, options);\n\n\tObject.setPrototypeOf(chalk, createChalk.prototype);\n\n\treturn chalk;\n};\n\nfunction createChalk(options) {\n\treturn chalkFactory(options);\n}\n\nObject.setPrototypeOf(createChalk.prototype, Function.prototype);\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this[STYLER]), this[IS_EMPTY]);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t},\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this[STYLER], true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t},\n};\n\nconst getModelAnsi = (model, level, type, ...arguments_) => {\n\tif (model === 'rgb') {\n\t\tif (level === 'ansi16m') {\n\t\t\treturn ansiStyles[type].ansi16m(...arguments_);\n\t\t}\n\n\t\tif (level === 'ansi256') {\n\t\t\treturn ansiStyles[type].ansi256(ansiStyles.rgbToAnsi256(...arguments_));\n\t\t}\n\n\t\treturn ansiStyles[type].ansi(ansiStyles.rgbToAnsi(...arguments_));\n\t}\n\n\tif (model === 'hex') {\n\t\treturn getModelAnsi('rgb', level, type, ...ansiStyles.hexToRgb(...arguments_));\n\t}\n\n\treturn ansiStyles[type][model](...arguments_);\n};\n\nconst usedModels = ['rgb', 'hex', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'color', ...arguments_), ansiStyles.color.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(getModelAnsi(model, levelMapping[level], 'bgColor', ...arguments_), ansiStyles.bgColor.close, this[STYLER]);\n\t\t\t\treturn createBuilder(this, styler, this[IS_EMPTY]);\n\t\t\t};\n\t\t},\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this[GENERATOR].level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis[GENERATOR].level = level;\n\t\t},\n\t},\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent,\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\t// Single argument is hot path, implicit coercion is faster than anything\n\t// eslint-disable-next-line no-implicit-coercion\n\tconst builder = (...arguments_) => applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder[GENERATOR] = self;\n\tbuilder[STYLER] = _styler;\n\tbuilder[IS_EMPTY] = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self[IS_EMPTY] ? '' : string;\n\t}\n\n\tlet styler = self[STYLER];\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.includes('\\u001B')) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nObject.defineProperties(createChalk.prototype, styles);\n\nconst chalk = createChalk();\nexport const chalkStderr = createChalk({level: stderrColor ? stderrColor.level : 0});\n\nexport {\n\tmodifierNames,\n\tforegroundColorNames,\n\tbackgroundColorNames,\n\tcolorNames,\n\n\t// TODO: Remove these aliases in the next major version\n\tmodifierNames as modifiers,\n\tforegroundColorNames as foregroundColors,\n\tbackgroundColorNames as backgroundColors,\n\tcolorNames as colors,\n} from './vendor/ansi-styles/index.js';\n\nexport {\n\tstdoutColor as supportsColor,\n\tstderrColor as supportsColorStderr,\n};\n\nexport default chalk;\n","/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF\n/* eslint @typescript-eslint/no-unused-vars: 0 */ // --> OFF\n\n// ststccclient\n\n/*\nHigh level architecture:\n\n ststestrunnernode / ststccadmin /\n ststestrunneragent ststcc ststcc ststcc ststcccli\nWorkerManager <-> NodeAgent <-> | <-> ControlPlaneServer <-> | <-> ControlBridge <-> | <-> AdminGateway <-> | <-> AdminClient <-> ststccadmin UI (or ststcccli)\nplain ts socket.io client socket.io server plain ts socket.io server socket.io client vue3 / nodejs\n\n[WorkerManager]\n ^\n |\n v\n[NodeAgent] <== Socket.IO ==> [ControlPlaneServer]\n ^\n |\n v\n [ControlBridge]\n ^\n |\n v\n[AdminClient] <== Socket.IO ==> [AdminGateway]\n ^\n |\n v\n[ststccadmin UI / ststcccli]\n*/\nimport { Socket } from 'socket.io-client'\nimport chalk from 'chalk';\n// Force chalk level\nchalk.level = 3;\n\nimport { defaultLogger, Sleep } from '@nsshunt/stsutils'\nimport { SocketIoClient } from '@nsshunt/stssocketioutils'\nimport {\n IWorkersRetVal, \n IArchiveListRetVal, \n IRunnerRetVal, \n IWorkerRetVal, \n IServiceRetVal, \n IExecuteWorkerActionResultRetVal, \n IExecuteRunnerActionResultRetVal, \n IStateChangeRetVal,\n IWorkerCoresRetVal, \n ITelemetryRetVal,\n IAddRunnerToWorkerByWorkerIdArgs,\n IAddWorkerArgs,\n IGetArchiveListArgs,\n IGetWorkersCoreArgs,\n IAddRunnerArgs,\n IStartWorkersArgs,\n IStopWorkersArgs,\n IPauseWorkersArgs,\n IResumeWorkersArgs,\n IExecuteWorkersArgs,\n IResetWorkersArgs,\n ITerminateWorkersArgs,\n IUpdateWorkersArgs,\n IStartRunnersArgs,\n IStopRunnersArgs,\n IPauseRunnersArgs,\n IResumeRunnersArgs,\n IExecuteRunnersArgs,\n IResetRunnersArgs,\n ITerminateRunnersArgs,\n IUpdateRunnersArgs,\n IGetServiceArgs,\n IGetWorkersArgs\n} from '@nsshunt/stsrunnerframework'\n\nimport {\n AdminGatewayClientToServerEvents, \n AdminGatewayServerToClientEvents,\n IAdminClient,\n IAdminClientOptions\n} from './wsevents.js';\n\nexport class AdminClient extends SocketIoClient<AdminGatewayServerToClientEvents, AdminGatewayClientToServerEvents> implements IAdminClient {\n private _options: IAdminClientOptions;\n private _id = globalThis.crypto.randomUUID();\n private _debug = (message: any) => this._options.logger.debug(message);\n private _error = (error: any) => this._options.logger.error(error);\n\n constructor(options: IAdminClientOptions) {\n super(options.name); // ststccagent\n this._options = options;\n this._Start();\n }\n\n get id(): string {\n return this._id;\n }\n\n protected SocketConnectError(error: Error): void {\n \n }\n\n protected SocketDisconnect(reason: string): void {\n \n }\n\n protected SocketConnect(socket: Socket<AdminGatewayServerToClientEvents, AdminGatewayClientToServerEvents>): void {\n this._OnSocketConnected(socket, this.name, [ ]);\n }\n\n protected SocketError(error: Error): void {\n this._error(`AdminClient:SocketError():[${this.name}]: SetupClientSideSocket call back: [${error}]`)\n }\n\n protected SetupSocketEvents(socket: Socket<AdminGatewayServerToClientEvents, AdminGatewayClientToServerEvents>): void {\n socket.on('StateChange', (data: IStateChangeRetVal) => {\n this.emit('StateChange', data);\n });\n\n socket.on('Telemetry', (data: ITelemetryRetVal) => {\n this.emit('Telemetry', data);\n });\n }\n\n private _Start = async () => {\n this\n .WithAddress(this._options.adminGatewayEndpoint) // ensure that the supplied address contains the admin namespace nsststccadmin\n .WithLogger(defaultLogger)\n .WithSocketIoCustomPath(this._options.adminGatewaySocketIoCustomPath)\n .WithAckTimeout(this._options.ackTimeout)\n\n if (this._options.agentManager) {\n this.WithAgentManager(this._options.agentManager)\n }\n\n this.SetupSocket();\n }\n\n Stop = async (): Promise<void> => {\n this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Stopping Service...`));\n if (this.socket) {\n this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Going to disconnect socket ...`));\n this.socket.disconnect();\n this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Socket disconnected.`));\n }\n this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Sleeping (500ms) ...`));\n await Sleep(500);\n this._debug(chalk.magenta(`AdminClient:Stop():[${this.name}]: Service Stopped.`))\n }\n\n // Handle connection logic separately\n private _OnSocketConnected = (socket: Socket<AdminGatewayServerToClientEvents, AdminGatewayClientToServerEvents>, clientName: string, joinRooms: string[]) => {\n this._debug(chalk.green(`AdminClient:_OnSocketConnected():[${this.name}]: _id: [${this._id}] clientName: [${clientName}]: --> connected`));\n const rooms = [ `node_${this._id}`, ...joinRooms ];\n this._debug(chalk.green(`AdminClient:_OnSocketConnected():[${this.name}]: _id: [${this._id}] clientName: [${clientName}]: Joining Rooms: [${rooms}]`));\n socket.emit('__STSjoinRoom', rooms);\n }\n\n // --- [ Admin Client Interface ] -----------------------------------------------------------------\n\n protected GetSocket = (): Socket<AdminGatewayServerToClientEvents, AdminGatewayClientToServerEvents> => {\n if (this.socket) {\n return this.socket;\n }\n throw new Error('AdminClient:GetSocket(): Socket not defined');\n }\n\n AddWorker = (args: IAddWorkerArgs): Promise<IWorkerRetVal[]> => {\n return this.GetSocket().emitWithAck('AddWorker', args);\n }\n\n AddRunner = (args: IAddRunnerArgs): Promise<IRunnerRetVal[]> => {\n return this.GetSocket().emitWithAck('AddRunner', args);\n }\n\n AddRunnerToWorkerByWorkerId = (args: IAddRunnerToWorkerByWorkerIdArgs): Promise<IRunnerRetVal[]> => {\n return this.GetSocket().emitWithAck('AddRunnerToWorkerByWorkerId', args);\n }\n\n // Query commands -------------------------------------------------------------------------------------------------------------\n\n GetService = (args: IGetServiceArgs): Promise<IServiceRetVal[]> => {\n return this.GetSocket().emitWithAck('GetService', args);\n }\n\n GetWorkers = (args: IGetWorkersArgs): Promise<IWorkersRetVal[]> => {\n return this.GetSocket().emitWithAck('GetWorkers', args);\n }\n\n GetWorkersCore = (args: IGetWorkersCoreArgs): Promise<IWorkerCoresRetVal[]> => {\n return this.GetSocket().emitWithAck('GetWorkersCore', args);\n }\n\n GetArchiveList = (args: IGetArchiveListArgs): Promise<IArchiveListRetVal[]> => {\n return this.GetSocket().emitWithAck('GetArchiveList', args);\n }\n\n // Workers commands ------------------------------------------------------------------------------------------------------------\n\n StartWorkers = (args: IStartWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('StartWorkers', args);\n }\n\n StopWorkers = (args: IStopWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('StopWorkers', args);\n }\n\n PauseWorkers = (args: IPauseWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('PauseWorkers', args);\n }\n\n ResumeWorkers = (args: IResumeWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('ResumeWorkers', args);\n }\n\n ExecuteWorkers = (args: IExecuteWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('ExecuteWorkers', args);\n }\n\n ResetWorkers = (args: IResetWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('ResetWorkers', args);\n }\n\n TerminateWorkers = (args: ITerminateWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('TerminateWorkers', args);\n }\n\n UpdateWorkers = (args: IUpdateWorkersArgs): Promise<IExecuteWorkerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('UpdateWorkers', args);\n }\n\n // Runner commands within a specific worker -------------------------------------------------------------------------------------\n\n StartRunners = (args: IStartRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('StartRunners', args);\n }\n StopRunners = (args: IStopRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('StopRunners', args);\n }\n\n PauseRunners = (args: IPauseRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('PauseRunners', args);\n }\n\n ResumeRunners = (args: IResumeRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('ResumeRunners', args);\n }\n\n ExecuteRunners = (args: IExecuteRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('ExecuteRunners', args);\n }\n\n ResetRunners = (args: IResetRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('ResetRunners', args);\n }\n\n TerminateRunners = (args: ITerminateRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('TerminateRunners', args);\n }\n\n UpdateRunners = (args: IUpdateRunnersArgs): Promise<IExecuteRunnerActionResultRetVal[]> => {\n return this.GetSocket().emitWithAck('UpdateRunners', args);\n }\n}\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}