deepfish-ai 2.0.2 → 2.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.
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
3
  var __create = Object.create;
3
4
  var __defProp = Object.defineProperty;
@@ -29,6 +30,2801 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
30
  mod
30
31
  ));
31
32
 
33
+ // node_modules/js-yaml/lib/common.js
34
+ var require_common = __commonJS({
35
+ "node_modules/js-yaml/lib/common.js"(exports2, module2) {
36
+ "use strict";
37
+ function isNothing(subject) {
38
+ return typeof subject === "undefined" || subject === null;
39
+ }
40
+ function isObject2(subject) {
41
+ return typeof subject === "object" && subject !== null;
42
+ }
43
+ function toArray(sequence) {
44
+ if (Array.isArray(sequence)) return sequence;
45
+ else if (isNothing(sequence)) return [];
46
+ return [sequence];
47
+ }
48
+ function extend2(target, source) {
49
+ var index, length, key, sourceKeys;
50
+ if (source) {
51
+ sourceKeys = Object.keys(source);
52
+ for (index = 0, length = sourceKeys.length; index < length; index += 1) {
53
+ key = sourceKeys[index];
54
+ target[key] = source[key];
55
+ }
56
+ }
57
+ return target;
58
+ }
59
+ function repeat(string4, count) {
60
+ var result = "", cycle;
61
+ for (cycle = 0; cycle < count; cycle += 1) {
62
+ result += string4;
63
+ }
64
+ return result;
65
+ }
66
+ function isNegativeZero(number4) {
67
+ return number4 === 0 && Number.NEGATIVE_INFINITY === 1 / number4;
68
+ }
69
+ module2.exports.isNothing = isNothing;
70
+ module2.exports.isObject = isObject2;
71
+ module2.exports.toArray = toArray;
72
+ module2.exports.repeat = repeat;
73
+ module2.exports.isNegativeZero = isNegativeZero;
74
+ module2.exports.extend = extend2;
75
+ }
76
+ });
77
+
78
+ // node_modules/js-yaml/lib/exception.js
79
+ var require_exception = __commonJS({
80
+ "node_modules/js-yaml/lib/exception.js"(exports2, module2) {
81
+ "use strict";
82
+ function formatError2(exception, compact) {
83
+ var where = "", message = exception.reason || "(unknown reason)";
84
+ if (!exception.mark) return message;
85
+ if (exception.mark.name) {
86
+ where += 'in "' + exception.mark.name + '" ';
87
+ }
88
+ where += "(" + (exception.mark.line + 1) + ":" + (exception.mark.column + 1) + ")";
89
+ if (!compact && exception.mark.snippet) {
90
+ where += "\n\n" + exception.mark.snippet;
91
+ }
92
+ return message + " " + where;
93
+ }
94
+ function YAMLException(reason, mark) {
95
+ Error.call(this);
96
+ this.name = "YAMLException";
97
+ this.reason = reason;
98
+ this.mark = mark;
99
+ this.message = formatError2(this, false);
100
+ if (Error.captureStackTrace) {
101
+ Error.captureStackTrace(this, this.constructor);
102
+ } else {
103
+ this.stack = new Error().stack || "";
104
+ }
105
+ }
106
+ YAMLException.prototype = Object.create(Error.prototype);
107
+ YAMLException.prototype.constructor = YAMLException;
108
+ YAMLException.prototype.toString = function toString(compact) {
109
+ return this.name + ": " + formatError2(this, compact);
110
+ };
111
+ module2.exports = YAMLException;
112
+ }
113
+ });
114
+
115
+ // node_modules/js-yaml/lib/snippet.js
116
+ var require_snippet = __commonJS({
117
+ "node_modules/js-yaml/lib/snippet.js"(exports2, module2) {
118
+ "use strict";
119
+ var common = require_common();
120
+ function getLine(buffer, lineStart, lineEnd, position, maxLineLength) {
121
+ var head = "";
122
+ var tail = "";
123
+ var maxHalfLength = Math.floor(maxLineLength / 2) - 1;
124
+ if (position - lineStart > maxHalfLength) {
125
+ head = " ... ";
126
+ lineStart = position - maxHalfLength + head.length;
127
+ }
128
+ if (lineEnd - position > maxHalfLength) {
129
+ tail = " ...";
130
+ lineEnd = position + maxHalfLength - tail.length;
131
+ }
132
+ return {
133
+ str: head + buffer.slice(lineStart, lineEnd).replace(/\t/g, "\u2192") + tail,
134
+ pos: position - lineStart + head.length
135
+ // relative position
136
+ };
137
+ }
138
+ function padStart(string4, max) {
139
+ return common.repeat(" ", max - string4.length) + string4;
140
+ }
141
+ function makeSnippet(mark, options) {
142
+ options = Object.create(options || null);
143
+ if (!mark.buffer) return null;
144
+ if (!options.maxLength) options.maxLength = 79;
145
+ if (typeof options.indent !== "number") options.indent = 1;
146
+ if (typeof options.linesBefore !== "number") options.linesBefore = 3;
147
+ if (typeof options.linesAfter !== "number") options.linesAfter = 2;
148
+ var re = /\r?\n|\r|\0/g;
149
+ var lineStarts = [0];
150
+ var lineEnds = [];
151
+ var match;
152
+ var foundLineNo = -1;
153
+ while (match = re.exec(mark.buffer)) {
154
+ lineEnds.push(match.index);
155
+ lineStarts.push(match.index + match[0].length);
156
+ if (mark.position <= match.index && foundLineNo < 0) {
157
+ foundLineNo = lineStarts.length - 2;
158
+ }
159
+ }
160
+ if (foundLineNo < 0) foundLineNo = lineStarts.length - 1;
161
+ var result = "", i, line;
162
+ var lineNoLength = Math.min(mark.line + options.linesAfter, lineEnds.length).toString().length;
163
+ var maxLineLength = options.maxLength - (options.indent + lineNoLength + 3);
164
+ for (i = 1; i <= options.linesBefore; i++) {
165
+ if (foundLineNo - i < 0) break;
166
+ line = getLine(
167
+ mark.buffer,
168
+ lineStarts[foundLineNo - i],
169
+ lineEnds[foundLineNo - i],
170
+ mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo - i]),
171
+ maxLineLength
172
+ );
173
+ result = common.repeat(" ", options.indent) + padStart((mark.line - i + 1).toString(), lineNoLength) + " | " + line.str + "\n" + result;
174
+ }
175
+ line = getLine(mark.buffer, lineStarts[foundLineNo], lineEnds[foundLineNo], mark.position, maxLineLength);
176
+ result += common.repeat(" ", options.indent) + padStart((mark.line + 1).toString(), lineNoLength) + " | " + line.str + "\n";
177
+ result += common.repeat("-", options.indent + lineNoLength + 3 + line.pos) + "^\n";
178
+ for (i = 1; i <= options.linesAfter; i++) {
179
+ if (foundLineNo + i >= lineEnds.length) break;
180
+ line = getLine(
181
+ mark.buffer,
182
+ lineStarts[foundLineNo + i],
183
+ lineEnds[foundLineNo + i],
184
+ mark.position - (lineStarts[foundLineNo] - lineStarts[foundLineNo + i]),
185
+ maxLineLength
186
+ );
187
+ result += common.repeat(" ", options.indent) + padStart((mark.line + i + 1).toString(), lineNoLength) + " | " + line.str + "\n";
188
+ }
189
+ return result.replace(/\n$/, "");
190
+ }
191
+ module2.exports = makeSnippet;
192
+ }
193
+ });
194
+
195
+ // node_modules/js-yaml/lib/type.js
196
+ var require_type = __commonJS({
197
+ "node_modules/js-yaml/lib/type.js"(exports2, module2) {
198
+ "use strict";
199
+ var YAMLException = require_exception();
200
+ var TYPE_CONSTRUCTOR_OPTIONS = [
201
+ "kind",
202
+ "multi",
203
+ "resolve",
204
+ "construct",
205
+ "instanceOf",
206
+ "predicate",
207
+ "represent",
208
+ "representName",
209
+ "defaultStyle",
210
+ "styleAliases"
211
+ ];
212
+ var YAML_NODE_KINDS = [
213
+ "scalar",
214
+ "sequence",
215
+ "mapping"
216
+ ];
217
+ function compileStyleAliases(map2) {
218
+ var result = {};
219
+ if (map2 !== null) {
220
+ Object.keys(map2).forEach(function(style) {
221
+ map2[style].forEach(function(alias) {
222
+ result[String(alias)] = style;
223
+ });
224
+ });
225
+ }
226
+ return result;
227
+ }
228
+ function Type(tag, options) {
229
+ options = options || {};
230
+ Object.keys(options).forEach(function(name) {
231
+ if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {
232
+ throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
233
+ }
234
+ });
235
+ this.options = options;
236
+ this.tag = tag;
237
+ this.kind = options["kind"] || null;
238
+ this.resolve = options["resolve"] || function() {
239
+ return true;
240
+ };
241
+ this.construct = options["construct"] || function(data) {
242
+ return data;
243
+ };
244
+ this.instanceOf = options["instanceOf"] || null;
245
+ this.predicate = options["predicate"] || null;
246
+ this.represent = options["represent"] || null;
247
+ this.representName = options["representName"] || null;
248
+ this.defaultStyle = options["defaultStyle"] || null;
249
+ this.multi = options["multi"] || false;
250
+ this.styleAliases = compileStyleAliases(options["styleAliases"] || null);
251
+ if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
252
+ throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
253
+ }
254
+ }
255
+ module2.exports = Type;
256
+ }
257
+ });
258
+
259
+ // node_modules/js-yaml/lib/schema.js
260
+ var require_schema = __commonJS({
261
+ "node_modules/js-yaml/lib/schema.js"(exports2, module2) {
262
+ "use strict";
263
+ var YAMLException = require_exception();
264
+ var Type = require_type();
265
+ function compileList(schema, name) {
266
+ var result = [];
267
+ schema[name].forEach(function(currentType) {
268
+ var newIndex = result.length;
269
+ result.forEach(function(previousType, previousIndex) {
270
+ if (previousType.tag === currentType.tag && previousType.kind === currentType.kind && previousType.multi === currentType.multi) {
271
+ newIndex = previousIndex;
272
+ }
273
+ });
274
+ result[newIndex] = currentType;
275
+ });
276
+ return result;
277
+ }
278
+ function compileMap() {
279
+ var result = {
280
+ scalar: {},
281
+ sequence: {},
282
+ mapping: {},
283
+ fallback: {},
284
+ multi: {
285
+ scalar: [],
286
+ sequence: [],
287
+ mapping: [],
288
+ fallback: []
289
+ }
290
+ }, index, length;
291
+ function collectType(type) {
292
+ if (type.multi) {
293
+ result.multi[type.kind].push(type);
294
+ result.multi["fallback"].push(type);
295
+ } else {
296
+ result[type.kind][type.tag] = result["fallback"][type.tag] = type;
297
+ }
298
+ }
299
+ for (index = 0, length = arguments.length; index < length; index += 1) {
300
+ arguments[index].forEach(collectType);
301
+ }
302
+ return result;
303
+ }
304
+ function Schema(definition) {
305
+ return this.extend(definition);
306
+ }
307
+ Schema.prototype.extend = function extend2(definition) {
308
+ var implicit = [];
309
+ var explicit = [];
310
+ if (definition instanceof Type) {
311
+ explicit.push(definition);
312
+ } else if (Array.isArray(definition)) {
313
+ explicit = explicit.concat(definition);
314
+ } else if (definition && (Array.isArray(definition.implicit) || Array.isArray(definition.explicit))) {
315
+ if (definition.implicit) implicit = implicit.concat(definition.implicit);
316
+ if (definition.explicit) explicit = explicit.concat(definition.explicit);
317
+ } else {
318
+ throw new YAMLException("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");
319
+ }
320
+ implicit.forEach(function(type) {
321
+ if (!(type instanceof Type)) {
322
+ throw new YAMLException("Specified list of YAML types (or a single Type object) contains a non-Type object.");
323
+ }
324
+ if (type.loadKind && type.loadKind !== "scalar") {
325
+ throw new YAMLException("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");
326
+ }
327
+ if (type.multi) {
328
+ throw new YAMLException("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.");
329
+ }
330
+ });
331
+ explicit.forEach(function(type) {
332
+ if (!(type instanceof Type)) {
333
+ throw new YAMLException("Specified list of YAML types (or a single Type object) contains a non-Type object.");
334
+ }
335
+ });
336
+ var result = Object.create(Schema.prototype);
337
+ result.implicit = (this.implicit || []).concat(implicit);
338
+ result.explicit = (this.explicit || []).concat(explicit);
339
+ result.compiledImplicit = compileList(result, "implicit");
340
+ result.compiledExplicit = compileList(result, "explicit");
341
+ result.compiledTypeMap = compileMap(result.compiledImplicit, result.compiledExplicit);
342
+ return result;
343
+ };
344
+ module2.exports = Schema;
345
+ }
346
+ });
347
+
348
+ // node_modules/js-yaml/lib/type/str.js
349
+ var require_str = __commonJS({
350
+ "node_modules/js-yaml/lib/type/str.js"(exports2, module2) {
351
+ "use strict";
352
+ var Type = require_type();
353
+ module2.exports = new Type("tag:yaml.org,2002:str", {
354
+ kind: "scalar",
355
+ construct: function(data) {
356
+ return data !== null ? data : "";
357
+ }
358
+ });
359
+ }
360
+ });
361
+
362
+ // node_modules/js-yaml/lib/type/seq.js
363
+ var require_seq = __commonJS({
364
+ "node_modules/js-yaml/lib/type/seq.js"(exports2, module2) {
365
+ "use strict";
366
+ var Type = require_type();
367
+ module2.exports = new Type("tag:yaml.org,2002:seq", {
368
+ kind: "sequence",
369
+ construct: function(data) {
370
+ return data !== null ? data : [];
371
+ }
372
+ });
373
+ }
374
+ });
375
+
376
+ // node_modules/js-yaml/lib/type/map.js
377
+ var require_map = __commonJS({
378
+ "node_modules/js-yaml/lib/type/map.js"(exports2, module2) {
379
+ "use strict";
380
+ var Type = require_type();
381
+ module2.exports = new Type("tag:yaml.org,2002:map", {
382
+ kind: "mapping",
383
+ construct: function(data) {
384
+ return data !== null ? data : {};
385
+ }
386
+ });
387
+ }
388
+ });
389
+
390
+ // node_modules/js-yaml/lib/schema/failsafe.js
391
+ var require_failsafe = __commonJS({
392
+ "node_modules/js-yaml/lib/schema/failsafe.js"(exports2, module2) {
393
+ "use strict";
394
+ var Schema = require_schema();
395
+ module2.exports = new Schema({
396
+ explicit: [
397
+ require_str(),
398
+ require_seq(),
399
+ require_map()
400
+ ]
401
+ });
402
+ }
403
+ });
404
+
405
+ // node_modules/js-yaml/lib/type/null.js
406
+ var require_null = __commonJS({
407
+ "node_modules/js-yaml/lib/type/null.js"(exports2, module2) {
408
+ "use strict";
409
+ var Type = require_type();
410
+ function resolveYamlNull(data) {
411
+ if (data === null) return true;
412
+ var max = data.length;
413
+ return max === 1 && data === "~" || max === 4 && (data === "null" || data === "Null" || data === "NULL");
414
+ }
415
+ function constructYamlNull() {
416
+ return null;
417
+ }
418
+ function isNull(object2) {
419
+ return object2 === null;
420
+ }
421
+ module2.exports = new Type("tag:yaml.org,2002:null", {
422
+ kind: "scalar",
423
+ resolve: resolveYamlNull,
424
+ construct: constructYamlNull,
425
+ predicate: isNull,
426
+ represent: {
427
+ canonical: function() {
428
+ return "~";
429
+ },
430
+ lowercase: function() {
431
+ return "null";
432
+ },
433
+ uppercase: function() {
434
+ return "NULL";
435
+ },
436
+ camelcase: function() {
437
+ return "Null";
438
+ },
439
+ empty: function() {
440
+ return "";
441
+ }
442
+ },
443
+ defaultStyle: "lowercase"
444
+ });
445
+ }
446
+ });
447
+
448
+ // node_modules/js-yaml/lib/type/bool.js
449
+ var require_bool = __commonJS({
450
+ "node_modules/js-yaml/lib/type/bool.js"(exports2, module2) {
451
+ "use strict";
452
+ var Type = require_type();
453
+ function resolveYamlBoolean(data) {
454
+ if (data === null) return false;
455
+ var max = data.length;
456
+ return max === 4 && (data === "true" || data === "True" || data === "TRUE") || max === 5 && (data === "false" || data === "False" || data === "FALSE");
457
+ }
458
+ function constructYamlBoolean(data) {
459
+ return data === "true" || data === "True" || data === "TRUE";
460
+ }
461
+ function isBoolean(object2) {
462
+ return Object.prototype.toString.call(object2) === "[object Boolean]";
463
+ }
464
+ module2.exports = new Type("tag:yaml.org,2002:bool", {
465
+ kind: "scalar",
466
+ resolve: resolveYamlBoolean,
467
+ construct: constructYamlBoolean,
468
+ predicate: isBoolean,
469
+ represent: {
470
+ lowercase: function(object2) {
471
+ return object2 ? "true" : "false";
472
+ },
473
+ uppercase: function(object2) {
474
+ return object2 ? "TRUE" : "FALSE";
475
+ },
476
+ camelcase: function(object2) {
477
+ return object2 ? "True" : "False";
478
+ }
479
+ },
480
+ defaultStyle: "lowercase"
481
+ });
482
+ }
483
+ });
484
+
485
+ // node_modules/js-yaml/lib/type/int.js
486
+ var require_int = __commonJS({
487
+ "node_modules/js-yaml/lib/type/int.js"(exports2, module2) {
488
+ "use strict";
489
+ var common = require_common();
490
+ var Type = require_type();
491
+ function isHexCode(c) {
492
+ return 48 <= c && c <= 57 || 65 <= c && c <= 70 || 97 <= c && c <= 102;
493
+ }
494
+ function isOctCode(c) {
495
+ return 48 <= c && c <= 55;
496
+ }
497
+ function isDecCode(c) {
498
+ return 48 <= c && c <= 57;
499
+ }
500
+ function resolveYamlInteger(data) {
501
+ if (data === null) return false;
502
+ var max = data.length, index = 0, hasDigits = false, ch;
503
+ if (!max) return false;
504
+ ch = data[index];
505
+ if (ch === "-" || ch === "+") {
506
+ ch = data[++index];
507
+ }
508
+ if (ch === "0") {
509
+ if (index + 1 === max) return true;
510
+ ch = data[++index];
511
+ if (ch === "b") {
512
+ index++;
513
+ for (; index < max; index++) {
514
+ ch = data[index];
515
+ if (ch === "_") continue;
516
+ if (ch !== "0" && ch !== "1") return false;
517
+ hasDigits = true;
518
+ }
519
+ return hasDigits && ch !== "_";
520
+ }
521
+ if (ch === "x") {
522
+ index++;
523
+ for (; index < max; index++) {
524
+ ch = data[index];
525
+ if (ch === "_") continue;
526
+ if (!isHexCode(data.charCodeAt(index))) return false;
527
+ hasDigits = true;
528
+ }
529
+ return hasDigits && ch !== "_";
530
+ }
531
+ if (ch === "o") {
532
+ index++;
533
+ for (; index < max; index++) {
534
+ ch = data[index];
535
+ if (ch === "_") continue;
536
+ if (!isOctCode(data.charCodeAt(index))) return false;
537
+ hasDigits = true;
538
+ }
539
+ return hasDigits && ch !== "_";
540
+ }
541
+ }
542
+ if (ch === "_") return false;
543
+ for (; index < max; index++) {
544
+ ch = data[index];
545
+ if (ch === "_") continue;
546
+ if (!isDecCode(data.charCodeAt(index))) {
547
+ return false;
548
+ }
549
+ hasDigits = true;
550
+ }
551
+ if (!hasDigits || ch === "_") return false;
552
+ return true;
553
+ }
554
+ function constructYamlInteger(data) {
555
+ var value = data, sign = 1, ch;
556
+ if (value.indexOf("_") !== -1) {
557
+ value = value.replace(/_/g, "");
558
+ }
559
+ ch = value[0];
560
+ if (ch === "-" || ch === "+") {
561
+ if (ch === "-") sign = -1;
562
+ value = value.slice(1);
563
+ ch = value[0];
564
+ }
565
+ if (value === "0") return 0;
566
+ if (ch === "0") {
567
+ if (value[1] === "b") return sign * parseInt(value.slice(2), 2);
568
+ if (value[1] === "x") return sign * parseInt(value.slice(2), 16);
569
+ if (value[1] === "o") return sign * parseInt(value.slice(2), 8);
570
+ }
571
+ return sign * parseInt(value, 10);
572
+ }
573
+ function isInteger(object2) {
574
+ return Object.prototype.toString.call(object2) === "[object Number]" && (object2 % 1 === 0 && !common.isNegativeZero(object2));
575
+ }
576
+ module2.exports = new Type("tag:yaml.org,2002:int", {
577
+ kind: "scalar",
578
+ resolve: resolveYamlInteger,
579
+ construct: constructYamlInteger,
580
+ predicate: isInteger,
581
+ represent: {
582
+ binary: function(obj) {
583
+ return obj >= 0 ? "0b" + obj.toString(2) : "-0b" + obj.toString(2).slice(1);
584
+ },
585
+ octal: function(obj) {
586
+ return obj >= 0 ? "0o" + obj.toString(8) : "-0o" + obj.toString(8).slice(1);
587
+ },
588
+ decimal: function(obj) {
589
+ return obj.toString(10);
590
+ },
591
+ /* eslint-disable max-len */
592
+ hexadecimal: function(obj) {
593
+ return obj >= 0 ? "0x" + obj.toString(16).toUpperCase() : "-0x" + obj.toString(16).toUpperCase().slice(1);
594
+ }
595
+ },
596
+ defaultStyle: "decimal",
597
+ styleAliases: {
598
+ binary: [2, "bin"],
599
+ octal: [8, "oct"],
600
+ decimal: [10, "dec"],
601
+ hexadecimal: [16, "hex"]
602
+ }
603
+ });
604
+ }
605
+ });
606
+
607
+ // node_modules/js-yaml/lib/type/float.js
608
+ var require_float = __commonJS({
609
+ "node_modules/js-yaml/lib/type/float.js"(exports2, module2) {
610
+ "use strict";
611
+ var common = require_common();
612
+ var Type = require_type();
613
+ var YAML_FLOAT_PATTERN = new RegExp(
614
+ // 2.5e4, 2.5 and integers
615
+ "^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"
616
+ );
617
+ function resolveYamlFloat(data) {
618
+ if (data === null) return false;
619
+ if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`
620
+ // Probably should update regexp & check speed
621
+ data[data.length - 1] === "_") {
622
+ return false;
623
+ }
624
+ return true;
625
+ }
626
+ function constructYamlFloat(data) {
627
+ var value, sign;
628
+ value = data.replace(/_/g, "").toLowerCase();
629
+ sign = value[0] === "-" ? -1 : 1;
630
+ if ("+-".indexOf(value[0]) >= 0) {
631
+ value = value.slice(1);
632
+ }
633
+ if (value === ".inf") {
634
+ return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
635
+ } else if (value === ".nan") {
636
+ return NaN;
637
+ }
638
+ return sign * parseFloat(value, 10);
639
+ }
640
+ var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
641
+ function representYamlFloat(object2, style) {
642
+ var res;
643
+ if (isNaN(object2)) {
644
+ switch (style) {
645
+ case "lowercase":
646
+ return ".nan";
647
+ case "uppercase":
648
+ return ".NAN";
649
+ case "camelcase":
650
+ return ".NaN";
651
+ }
652
+ } else if (Number.POSITIVE_INFINITY === object2) {
653
+ switch (style) {
654
+ case "lowercase":
655
+ return ".inf";
656
+ case "uppercase":
657
+ return ".INF";
658
+ case "camelcase":
659
+ return ".Inf";
660
+ }
661
+ } else if (Number.NEGATIVE_INFINITY === object2) {
662
+ switch (style) {
663
+ case "lowercase":
664
+ return "-.inf";
665
+ case "uppercase":
666
+ return "-.INF";
667
+ case "camelcase":
668
+ return "-.Inf";
669
+ }
670
+ } else if (common.isNegativeZero(object2)) {
671
+ return "-0.0";
672
+ }
673
+ res = object2.toString(10);
674
+ return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace("e", ".e") : res;
675
+ }
676
+ function isFloat(object2) {
677
+ return Object.prototype.toString.call(object2) === "[object Number]" && (object2 % 1 !== 0 || common.isNegativeZero(object2));
678
+ }
679
+ module2.exports = new Type("tag:yaml.org,2002:float", {
680
+ kind: "scalar",
681
+ resolve: resolveYamlFloat,
682
+ construct: constructYamlFloat,
683
+ predicate: isFloat,
684
+ represent: representYamlFloat,
685
+ defaultStyle: "lowercase"
686
+ });
687
+ }
688
+ });
689
+
690
+ // node_modules/js-yaml/lib/schema/json.js
691
+ var require_json = __commonJS({
692
+ "node_modules/js-yaml/lib/schema/json.js"(exports2, module2) {
693
+ "use strict";
694
+ module2.exports = require_failsafe().extend({
695
+ implicit: [
696
+ require_null(),
697
+ require_bool(),
698
+ require_int(),
699
+ require_float()
700
+ ]
701
+ });
702
+ }
703
+ });
704
+
705
+ // node_modules/js-yaml/lib/schema/core.js
706
+ var require_core = __commonJS({
707
+ "node_modules/js-yaml/lib/schema/core.js"(exports2, module2) {
708
+ "use strict";
709
+ module2.exports = require_json();
710
+ }
711
+ });
712
+
713
+ // node_modules/js-yaml/lib/type/timestamp.js
714
+ var require_timestamp = __commonJS({
715
+ "node_modules/js-yaml/lib/type/timestamp.js"(exports2, module2) {
716
+ "use strict";
717
+ var Type = require_type();
718
+ var YAML_DATE_REGEXP = new RegExp(
719
+ "^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"
720
+ );
721
+ var YAML_TIMESTAMP_REGEXP = new RegExp(
722
+ "^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"
723
+ );
724
+ function resolveYamlTimestamp(data) {
725
+ if (data === null) return false;
726
+ if (YAML_DATE_REGEXP.exec(data) !== null) return true;
727
+ if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;
728
+ return false;
729
+ }
730
+ function constructYamlTimestamp(data) {
731
+ var match, year, month, day, hour, minute, second, fraction = 0, delta = null, tz_hour, tz_minute, date5;
732
+ match = YAML_DATE_REGEXP.exec(data);
733
+ if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);
734
+ if (match === null) throw new Error("Date resolve error");
735
+ year = +match[1];
736
+ month = +match[2] - 1;
737
+ day = +match[3];
738
+ if (!match[4]) {
739
+ return new Date(Date.UTC(year, month, day));
740
+ }
741
+ hour = +match[4];
742
+ minute = +match[5];
743
+ second = +match[6];
744
+ if (match[7]) {
745
+ fraction = match[7].slice(0, 3);
746
+ while (fraction.length < 3) {
747
+ fraction += "0";
748
+ }
749
+ fraction = +fraction;
750
+ }
751
+ if (match[9]) {
752
+ tz_hour = +match[10];
753
+ tz_minute = +(match[11] || 0);
754
+ delta = (tz_hour * 60 + tz_minute) * 6e4;
755
+ if (match[9] === "-") delta = -delta;
756
+ }
757
+ date5 = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));
758
+ if (delta) date5.setTime(date5.getTime() - delta);
759
+ return date5;
760
+ }
761
+ function representYamlTimestamp(object2) {
762
+ return object2.toISOString();
763
+ }
764
+ module2.exports = new Type("tag:yaml.org,2002:timestamp", {
765
+ kind: "scalar",
766
+ resolve: resolveYamlTimestamp,
767
+ construct: constructYamlTimestamp,
768
+ instanceOf: Date,
769
+ represent: representYamlTimestamp
770
+ });
771
+ }
772
+ });
773
+
774
+ // node_modules/js-yaml/lib/type/merge.js
775
+ var require_merge = __commonJS({
776
+ "node_modules/js-yaml/lib/type/merge.js"(exports2, module2) {
777
+ "use strict";
778
+ var Type = require_type();
779
+ function resolveYamlMerge(data) {
780
+ return data === "<<" || data === null;
781
+ }
782
+ module2.exports = new Type("tag:yaml.org,2002:merge", {
783
+ kind: "scalar",
784
+ resolve: resolveYamlMerge
785
+ });
786
+ }
787
+ });
788
+
789
+ // node_modules/js-yaml/lib/type/binary.js
790
+ var require_binary = __commonJS({
791
+ "node_modules/js-yaml/lib/type/binary.js"(exports2, module2) {
792
+ "use strict";
793
+ var Type = require_type();
794
+ var BASE64_MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";
795
+ function resolveYamlBinary(data) {
796
+ if (data === null) return false;
797
+ var code, idx, bitlen = 0, max = data.length, map2 = BASE64_MAP;
798
+ for (idx = 0; idx < max; idx++) {
799
+ code = map2.indexOf(data.charAt(idx));
800
+ if (code > 64) continue;
801
+ if (code < 0) return false;
802
+ bitlen += 6;
803
+ }
804
+ return bitlen % 8 === 0;
805
+ }
806
+ function constructYamlBinary(data) {
807
+ var idx, tailbits, input = data.replace(/[\r\n=]/g, ""), max = input.length, map2 = BASE64_MAP, bits = 0, result = [];
808
+ for (idx = 0; idx < max; idx++) {
809
+ if (idx % 4 === 0 && idx) {
810
+ result.push(bits >> 16 & 255);
811
+ result.push(bits >> 8 & 255);
812
+ result.push(bits & 255);
813
+ }
814
+ bits = bits << 6 | map2.indexOf(input.charAt(idx));
815
+ }
816
+ tailbits = max % 4 * 6;
817
+ if (tailbits === 0) {
818
+ result.push(bits >> 16 & 255);
819
+ result.push(bits >> 8 & 255);
820
+ result.push(bits & 255);
821
+ } else if (tailbits === 18) {
822
+ result.push(bits >> 10 & 255);
823
+ result.push(bits >> 2 & 255);
824
+ } else if (tailbits === 12) {
825
+ result.push(bits >> 4 & 255);
826
+ }
827
+ return new Uint8Array(result);
828
+ }
829
+ function representYamlBinary(object2) {
830
+ var result = "", bits = 0, idx, tail, max = object2.length, map2 = BASE64_MAP;
831
+ for (idx = 0; idx < max; idx++) {
832
+ if (idx % 3 === 0 && idx) {
833
+ result += map2[bits >> 18 & 63];
834
+ result += map2[bits >> 12 & 63];
835
+ result += map2[bits >> 6 & 63];
836
+ result += map2[bits & 63];
837
+ }
838
+ bits = (bits << 8) + object2[idx];
839
+ }
840
+ tail = max % 3;
841
+ if (tail === 0) {
842
+ result += map2[bits >> 18 & 63];
843
+ result += map2[bits >> 12 & 63];
844
+ result += map2[bits >> 6 & 63];
845
+ result += map2[bits & 63];
846
+ } else if (tail === 2) {
847
+ result += map2[bits >> 10 & 63];
848
+ result += map2[bits >> 4 & 63];
849
+ result += map2[bits << 2 & 63];
850
+ result += map2[64];
851
+ } else if (tail === 1) {
852
+ result += map2[bits >> 2 & 63];
853
+ result += map2[bits << 4 & 63];
854
+ result += map2[64];
855
+ result += map2[64];
856
+ }
857
+ return result;
858
+ }
859
+ function isBinary(obj) {
860
+ return Object.prototype.toString.call(obj) === "[object Uint8Array]";
861
+ }
862
+ module2.exports = new Type("tag:yaml.org,2002:binary", {
863
+ kind: "scalar",
864
+ resolve: resolveYamlBinary,
865
+ construct: constructYamlBinary,
866
+ predicate: isBinary,
867
+ represent: representYamlBinary
868
+ });
869
+ }
870
+ });
871
+
872
+ // node_modules/js-yaml/lib/type/omap.js
873
+ var require_omap = __commonJS({
874
+ "node_modules/js-yaml/lib/type/omap.js"(exports2, module2) {
875
+ "use strict";
876
+ var Type = require_type();
877
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
878
+ var _toString = Object.prototype.toString;
879
+ function resolveYamlOmap(data) {
880
+ if (data === null) return true;
881
+ var objectKeys = [], index, length, pair, pairKey, pairHasKey, object2 = data;
882
+ for (index = 0, length = object2.length; index < length; index += 1) {
883
+ pair = object2[index];
884
+ pairHasKey = false;
885
+ if (_toString.call(pair) !== "[object Object]") return false;
886
+ for (pairKey in pair) {
887
+ if (_hasOwnProperty.call(pair, pairKey)) {
888
+ if (!pairHasKey) pairHasKey = true;
889
+ else return false;
890
+ }
891
+ }
892
+ if (!pairHasKey) return false;
893
+ if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);
894
+ else return false;
895
+ }
896
+ return true;
897
+ }
898
+ function constructYamlOmap(data) {
899
+ return data !== null ? data : [];
900
+ }
901
+ module2.exports = new Type("tag:yaml.org,2002:omap", {
902
+ kind: "sequence",
903
+ resolve: resolveYamlOmap,
904
+ construct: constructYamlOmap
905
+ });
906
+ }
907
+ });
908
+
909
+ // node_modules/js-yaml/lib/type/pairs.js
910
+ var require_pairs = __commonJS({
911
+ "node_modules/js-yaml/lib/type/pairs.js"(exports2, module2) {
912
+ "use strict";
913
+ var Type = require_type();
914
+ var _toString = Object.prototype.toString;
915
+ function resolveYamlPairs(data) {
916
+ if (data === null) return true;
917
+ var index, length, pair, keys, result, object2 = data;
918
+ result = new Array(object2.length);
919
+ for (index = 0, length = object2.length; index < length; index += 1) {
920
+ pair = object2[index];
921
+ if (_toString.call(pair) !== "[object Object]") return false;
922
+ keys = Object.keys(pair);
923
+ if (keys.length !== 1) return false;
924
+ result[index] = [keys[0], pair[keys[0]]];
925
+ }
926
+ return true;
927
+ }
928
+ function constructYamlPairs(data) {
929
+ if (data === null) return [];
930
+ var index, length, pair, keys, result, object2 = data;
931
+ result = new Array(object2.length);
932
+ for (index = 0, length = object2.length; index < length; index += 1) {
933
+ pair = object2[index];
934
+ keys = Object.keys(pair);
935
+ result[index] = [keys[0], pair[keys[0]]];
936
+ }
937
+ return result;
938
+ }
939
+ module2.exports = new Type("tag:yaml.org,2002:pairs", {
940
+ kind: "sequence",
941
+ resolve: resolveYamlPairs,
942
+ construct: constructYamlPairs
943
+ });
944
+ }
945
+ });
946
+
947
+ // node_modules/js-yaml/lib/type/set.js
948
+ var require_set = __commonJS({
949
+ "node_modules/js-yaml/lib/type/set.js"(exports2, module2) {
950
+ "use strict";
951
+ var Type = require_type();
952
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
953
+ function resolveYamlSet(data) {
954
+ if (data === null) return true;
955
+ var key, object2 = data;
956
+ for (key in object2) {
957
+ if (_hasOwnProperty.call(object2, key)) {
958
+ if (object2[key] !== null) return false;
959
+ }
960
+ }
961
+ return true;
962
+ }
963
+ function constructYamlSet(data) {
964
+ return data !== null ? data : {};
965
+ }
966
+ module2.exports = new Type("tag:yaml.org,2002:set", {
967
+ kind: "mapping",
968
+ resolve: resolveYamlSet,
969
+ construct: constructYamlSet
970
+ });
971
+ }
972
+ });
973
+
974
+ // node_modules/js-yaml/lib/schema/default.js
975
+ var require_default = __commonJS({
976
+ "node_modules/js-yaml/lib/schema/default.js"(exports2, module2) {
977
+ "use strict";
978
+ module2.exports = require_core().extend({
979
+ implicit: [
980
+ require_timestamp(),
981
+ require_merge()
982
+ ],
983
+ explicit: [
984
+ require_binary(),
985
+ require_omap(),
986
+ require_pairs(),
987
+ require_set()
988
+ ]
989
+ });
990
+ }
991
+ });
992
+
993
+ // node_modules/js-yaml/lib/loader.js
994
+ var require_loader = __commonJS({
995
+ "node_modules/js-yaml/lib/loader.js"(exports2, module2) {
996
+ "use strict";
997
+ var common = require_common();
998
+ var YAMLException = require_exception();
999
+ var makeSnippet = require_snippet();
1000
+ var DEFAULT_SCHEMA = require_default();
1001
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
1002
+ var CONTEXT_FLOW_IN = 1;
1003
+ var CONTEXT_FLOW_OUT = 2;
1004
+ var CONTEXT_BLOCK_IN = 3;
1005
+ var CONTEXT_BLOCK_OUT = 4;
1006
+ var CHOMPING_CLIP = 1;
1007
+ var CHOMPING_STRIP = 2;
1008
+ var CHOMPING_KEEP = 3;
1009
+ var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
1010
+ var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
1011
+ var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
1012
+ var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
1013
+ var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
1014
+ function _class(obj) {
1015
+ return Object.prototype.toString.call(obj);
1016
+ }
1017
+ function is_EOL(c) {
1018
+ return c === 10 || c === 13;
1019
+ }
1020
+ function is_WHITE_SPACE(c) {
1021
+ return c === 9 || c === 32;
1022
+ }
1023
+ function is_WS_OR_EOL(c) {
1024
+ return c === 9 || c === 32 || c === 10 || c === 13;
1025
+ }
1026
+ function is_FLOW_INDICATOR(c) {
1027
+ return c === 44 || c === 91 || c === 93 || c === 123 || c === 125;
1028
+ }
1029
+ function fromHexCode(c) {
1030
+ var lc;
1031
+ if (48 <= c && c <= 57) {
1032
+ return c - 48;
1033
+ }
1034
+ lc = c | 32;
1035
+ if (97 <= lc && lc <= 102) {
1036
+ return lc - 97 + 10;
1037
+ }
1038
+ return -1;
1039
+ }
1040
+ function escapedHexLen(c) {
1041
+ if (c === 120) {
1042
+ return 2;
1043
+ }
1044
+ if (c === 117) {
1045
+ return 4;
1046
+ }
1047
+ if (c === 85) {
1048
+ return 8;
1049
+ }
1050
+ return 0;
1051
+ }
1052
+ function fromDecimalCode(c) {
1053
+ if (48 <= c && c <= 57) {
1054
+ return c - 48;
1055
+ }
1056
+ return -1;
1057
+ }
1058
+ function simpleEscapeSequence(c) {
1059
+ return c === 48 ? "\0" : c === 97 ? "\x07" : c === 98 ? "\b" : c === 116 ? " " : c === 9 ? " " : c === 110 ? "\n" : c === 118 ? "\v" : c === 102 ? "\f" : c === 114 ? "\r" : c === 101 ? "\x1B" : c === 32 ? " " : c === 34 ? '"' : c === 47 ? "/" : c === 92 ? "\\" : c === 78 ? "\x85" : c === 95 ? "\xA0" : c === 76 ? "\u2028" : c === 80 ? "\u2029" : "";
1060
+ }
1061
+ function charFromCodepoint(c) {
1062
+ if (c <= 65535) {
1063
+ return String.fromCharCode(c);
1064
+ }
1065
+ return String.fromCharCode(
1066
+ (c - 65536 >> 10) + 55296,
1067
+ (c - 65536 & 1023) + 56320
1068
+ );
1069
+ }
1070
+ function setProperty(object2, key, value) {
1071
+ if (key === "__proto__") {
1072
+ Object.defineProperty(object2, key, {
1073
+ configurable: true,
1074
+ enumerable: true,
1075
+ writable: true,
1076
+ value
1077
+ });
1078
+ } else {
1079
+ object2[key] = value;
1080
+ }
1081
+ }
1082
+ var simpleEscapeCheck = new Array(256);
1083
+ var simpleEscapeMap = new Array(256);
1084
+ for (i = 0; i < 256; i++) {
1085
+ simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
1086
+ simpleEscapeMap[i] = simpleEscapeSequence(i);
1087
+ }
1088
+ var i;
1089
+ function State(input, options) {
1090
+ this.input = input;
1091
+ this.filename = options["filename"] || null;
1092
+ this.schema = options["schema"] || DEFAULT_SCHEMA;
1093
+ this.onWarning = options["onWarning"] || null;
1094
+ this.legacy = options["legacy"] || false;
1095
+ this.json = options["json"] || false;
1096
+ this.listener = options["listener"] || null;
1097
+ this.implicitTypes = this.schema.compiledImplicit;
1098
+ this.typeMap = this.schema.compiledTypeMap;
1099
+ this.length = input.length;
1100
+ this.position = 0;
1101
+ this.line = 0;
1102
+ this.lineStart = 0;
1103
+ this.lineIndent = 0;
1104
+ this.firstTabInLine = -1;
1105
+ this.documents = [];
1106
+ }
1107
+ function generateError(state, message) {
1108
+ var mark = {
1109
+ name: state.filename,
1110
+ buffer: state.input.slice(0, -1),
1111
+ // omit trailing \0
1112
+ position: state.position,
1113
+ line: state.line,
1114
+ column: state.position - state.lineStart
1115
+ };
1116
+ mark.snippet = makeSnippet(mark);
1117
+ return new YAMLException(message, mark);
1118
+ }
1119
+ function throwError(state, message) {
1120
+ throw generateError(state, message);
1121
+ }
1122
+ function throwWarning(state, message) {
1123
+ if (state.onWarning) {
1124
+ state.onWarning.call(null, generateError(state, message));
1125
+ }
1126
+ }
1127
+ var directiveHandlers = {
1128
+ YAML: function handleYamlDirective(state, name, args) {
1129
+ var match, major, minor;
1130
+ if (state.version !== null) {
1131
+ throwError(state, "duplication of %YAML directive");
1132
+ }
1133
+ if (args.length !== 1) {
1134
+ throwError(state, "YAML directive accepts exactly one argument");
1135
+ }
1136
+ match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
1137
+ if (match === null) {
1138
+ throwError(state, "ill-formed argument of the YAML directive");
1139
+ }
1140
+ major = parseInt(match[1], 10);
1141
+ minor = parseInt(match[2], 10);
1142
+ if (major !== 1) {
1143
+ throwError(state, "unacceptable YAML version of the document");
1144
+ }
1145
+ state.version = args[0];
1146
+ state.checkLineBreaks = minor < 2;
1147
+ if (minor !== 1 && minor !== 2) {
1148
+ throwWarning(state, "unsupported YAML version of the document");
1149
+ }
1150
+ },
1151
+ TAG: function handleTagDirective(state, name, args) {
1152
+ var handle, prefix;
1153
+ if (args.length !== 2) {
1154
+ throwError(state, "TAG directive accepts exactly two arguments");
1155
+ }
1156
+ handle = args[0];
1157
+ prefix = args[1];
1158
+ if (!PATTERN_TAG_HANDLE.test(handle)) {
1159
+ throwError(state, "ill-formed tag handle (first argument) of the TAG directive");
1160
+ }
1161
+ if (_hasOwnProperty.call(state.tagMap, handle)) {
1162
+ throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
1163
+ }
1164
+ if (!PATTERN_TAG_URI.test(prefix)) {
1165
+ throwError(state, "ill-formed tag prefix (second argument) of the TAG directive");
1166
+ }
1167
+ try {
1168
+ prefix = decodeURIComponent(prefix);
1169
+ } catch (err) {
1170
+ throwError(state, "tag prefix is malformed: " + prefix);
1171
+ }
1172
+ state.tagMap[handle] = prefix;
1173
+ }
1174
+ };
1175
+ function captureSegment(state, start, end, checkJson) {
1176
+ var _position, _length2, _character, _result;
1177
+ if (start < end) {
1178
+ _result = state.input.slice(start, end);
1179
+ if (checkJson) {
1180
+ for (_position = 0, _length2 = _result.length; _position < _length2; _position += 1) {
1181
+ _character = _result.charCodeAt(_position);
1182
+ if (!(_character === 9 || 32 <= _character && _character <= 1114111)) {
1183
+ throwError(state, "expected valid JSON character");
1184
+ }
1185
+ }
1186
+ } else if (PATTERN_NON_PRINTABLE.test(_result)) {
1187
+ throwError(state, "the stream contains non-printable characters");
1188
+ }
1189
+ state.result += _result;
1190
+ }
1191
+ }
1192
+ function mergeMappings(state, destination, source, overridableKeys) {
1193
+ var sourceKeys, key, index, quantity;
1194
+ if (!common.isObject(source)) {
1195
+ throwError(state, "cannot merge mappings; the provided source object is unacceptable");
1196
+ }
1197
+ sourceKeys = Object.keys(source);
1198
+ for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
1199
+ key = sourceKeys[index];
1200
+ if (!_hasOwnProperty.call(destination, key)) {
1201
+ setProperty(destination, key, source[key]);
1202
+ overridableKeys[key] = true;
1203
+ }
1204
+ }
1205
+ }
1206
+ function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startLineStart, startPos) {
1207
+ var index, quantity;
1208
+ if (Array.isArray(keyNode)) {
1209
+ keyNode = Array.prototype.slice.call(keyNode);
1210
+ for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {
1211
+ if (Array.isArray(keyNode[index])) {
1212
+ throwError(state, "nested arrays are not supported inside keys");
1213
+ }
1214
+ if (typeof keyNode === "object" && _class(keyNode[index]) === "[object Object]") {
1215
+ keyNode[index] = "[object Object]";
1216
+ }
1217
+ }
1218
+ }
1219
+ if (typeof keyNode === "object" && _class(keyNode) === "[object Object]") {
1220
+ keyNode = "[object Object]";
1221
+ }
1222
+ keyNode = String(keyNode);
1223
+ if (_result === null) {
1224
+ _result = {};
1225
+ }
1226
+ if (keyTag === "tag:yaml.org,2002:merge") {
1227
+ if (Array.isArray(valueNode)) {
1228
+ for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
1229
+ mergeMappings(state, _result, valueNode[index], overridableKeys);
1230
+ }
1231
+ } else {
1232
+ mergeMappings(state, _result, valueNode, overridableKeys);
1233
+ }
1234
+ } else {
1235
+ if (!state.json && !_hasOwnProperty.call(overridableKeys, keyNode) && _hasOwnProperty.call(_result, keyNode)) {
1236
+ state.line = startLine || state.line;
1237
+ state.lineStart = startLineStart || state.lineStart;
1238
+ state.position = startPos || state.position;
1239
+ throwError(state, "duplicated mapping key");
1240
+ }
1241
+ setProperty(_result, keyNode, valueNode);
1242
+ delete overridableKeys[keyNode];
1243
+ }
1244
+ return _result;
1245
+ }
1246
+ function readLineBreak(state) {
1247
+ var ch;
1248
+ ch = state.input.charCodeAt(state.position);
1249
+ if (ch === 10) {
1250
+ state.position++;
1251
+ } else if (ch === 13) {
1252
+ state.position++;
1253
+ if (state.input.charCodeAt(state.position) === 10) {
1254
+ state.position++;
1255
+ }
1256
+ } else {
1257
+ throwError(state, "a line break is expected");
1258
+ }
1259
+ state.line += 1;
1260
+ state.lineStart = state.position;
1261
+ state.firstTabInLine = -1;
1262
+ }
1263
+ function skipSeparationSpace(state, allowComments, checkIndent) {
1264
+ var lineBreaks = 0, ch = state.input.charCodeAt(state.position);
1265
+ while (ch !== 0) {
1266
+ while (is_WHITE_SPACE(ch)) {
1267
+ if (ch === 9 && state.firstTabInLine === -1) {
1268
+ state.firstTabInLine = state.position;
1269
+ }
1270
+ ch = state.input.charCodeAt(++state.position);
1271
+ }
1272
+ if (allowComments && ch === 35) {
1273
+ do {
1274
+ ch = state.input.charCodeAt(++state.position);
1275
+ } while (ch !== 10 && ch !== 13 && ch !== 0);
1276
+ }
1277
+ if (is_EOL(ch)) {
1278
+ readLineBreak(state);
1279
+ ch = state.input.charCodeAt(state.position);
1280
+ lineBreaks++;
1281
+ state.lineIndent = 0;
1282
+ while (ch === 32) {
1283
+ state.lineIndent++;
1284
+ ch = state.input.charCodeAt(++state.position);
1285
+ }
1286
+ } else {
1287
+ break;
1288
+ }
1289
+ }
1290
+ if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {
1291
+ throwWarning(state, "deficient indentation");
1292
+ }
1293
+ return lineBreaks;
1294
+ }
1295
+ function testDocumentSeparator(state) {
1296
+ var _position = state.position, ch;
1297
+ ch = state.input.charCodeAt(_position);
1298
+ if ((ch === 45 || ch === 46) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {
1299
+ _position += 3;
1300
+ ch = state.input.charCodeAt(_position);
1301
+ if (ch === 0 || is_WS_OR_EOL(ch)) {
1302
+ return true;
1303
+ }
1304
+ }
1305
+ return false;
1306
+ }
1307
+ function writeFoldedLines(state, count) {
1308
+ if (count === 1) {
1309
+ state.result += " ";
1310
+ } else if (count > 1) {
1311
+ state.result += common.repeat("\n", count - 1);
1312
+ }
1313
+ }
1314
+ function readPlainScalar(state, nodeIndent, withinFlowCollection) {
1315
+ var preceding, following, captureStart, captureEnd, hasPendingContent, _line, _lineStart, _lineIndent, _kind = state.kind, _result = state.result, ch;
1316
+ ch = state.input.charCodeAt(state.position);
1317
+ if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 35 || ch === 38 || ch === 42 || ch === 33 || ch === 124 || ch === 62 || ch === 39 || ch === 34 || ch === 37 || ch === 64 || ch === 96) {
1318
+ return false;
1319
+ }
1320
+ if (ch === 63 || ch === 45) {
1321
+ following = state.input.charCodeAt(state.position + 1);
1322
+ if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
1323
+ return false;
1324
+ }
1325
+ }
1326
+ state.kind = "scalar";
1327
+ state.result = "";
1328
+ captureStart = captureEnd = state.position;
1329
+ hasPendingContent = false;
1330
+ while (ch !== 0) {
1331
+ if (ch === 58) {
1332
+ following = state.input.charCodeAt(state.position + 1);
1333
+ if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
1334
+ break;
1335
+ }
1336
+ } else if (ch === 35) {
1337
+ preceding = state.input.charCodeAt(state.position - 1);
1338
+ if (is_WS_OR_EOL(preceding)) {
1339
+ break;
1340
+ }
1341
+ } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {
1342
+ break;
1343
+ } else if (is_EOL(ch)) {
1344
+ _line = state.line;
1345
+ _lineStart = state.lineStart;
1346
+ _lineIndent = state.lineIndent;
1347
+ skipSeparationSpace(state, false, -1);
1348
+ if (state.lineIndent >= nodeIndent) {
1349
+ hasPendingContent = true;
1350
+ ch = state.input.charCodeAt(state.position);
1351
+ continue;
1352
+ } else {
1353
+ state.position = captureEnd;
1354
+ state.line = _line;
1355
+ state.lineStart = _lineStart;
1356
+ state.lineIndent = _lineIndent;
1357
+ break;
1358
+ }
1359
+ }
1360
+ if (hasPendingContent) {
1361
+ captureSegment(state, captureStart, captureEnd, false);
1362
+ writeFoldedLines(state, state.line - _line);
1363
+ captureStart = captureEnd = state.position;
1364
+ hasPendingContent = false;
1365
+ }
1366
+ if (!is_WHITE_SPACE(ch)) {
1367
+ captureEnd = state.position + 1;
1368
+ }
1369
+ ch = state.input.charCodeAt(++state.position);
1370
+ }
1371
+ captureSegment(state, captureStart, captureEnd, false);
1372
+ if (state.result) {
1373
+ return true;
1374
+ }
1375
+ state.kind = _kind;
1376
+ state.result = _result;
1377
+ return false;
1378
+ }
1379
+ function readSingleQuotedScalar(state, nodeIndent) {
1380
+ var ch, captureStart, captureEnd;
1381
+ ch = state.input.charCodeAt(state.position);
1382
+ if (ch !== 39) {
1383
+ return false;
1384
+ }
1385
+ state.kind = "scalar";
1386
+ state.result = "";
1387
+ state.position++;
1388
+ captureStart = captureEnd = state.position;
1389
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
1390
+ if (ch === 39) {
1391
+ captureSegment(state, captureStart, state.position, true);
1392
+ ch = state.input.charCodeAt(++state.position);
1393
+ if (ch === 39) {
1394
+ captureStart = state.position;
1395
+ state.position++;
1396
+ captureEnd = state.position;
1397
+ } else {
1398
+ return true;
1399
+ }
1400
+ } else if (is_EOL(ch)) {
1401
+ captureSegment(state, captureStart, captureEnd, true);
1402
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
1403
+ captureStart = captureEnd = state.position;
1404
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
1405
+ throwError(state, "unexpected end of the document within a single quoted scalar");
1406
+ } else {
1407
+ state.position++;
1408
+ captureEnd = state.position;
1409
+ }
1410
+ }
1411
+ throwError(state, "unexpected end of the stream within a single quoted scalar");
1412
+ }
1413
+ function readDoubleQuotedScalar(state, nodeIndent) {
1414
+ var captureStart, captureEnd, hexLength, hexResult, tmp, ch;
1415
+ ch = state.input.charCodeAt(state.position);
1416
+ if (ch !== 34) {
1417
+ return false;
1418
+ }
1419
+ state.kind = "scalar";
1420
+ state.result = "";
1421
+ state.position++;
1422
+ captureStart = captureEnd = state.position;
1423
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
1424
+ if (ch === 34) {
1425
+ captureSegment(state, captureStart, state.position, true);
1426
+ state.position++;
1427
+ return true;
1428
+ } else if (ch === 92) {
1429
+ captureSegment(state, captureStart, state.position, true);
1430
+ ch = state.input.charCodeAt(++state.position);
1431
+ if (is_EOL(ch)) {
1432
+ skipSeparationSpace(state, false, nodeIndent);
1433
+ } else if (ch < 256 && simpleEscapeCheck[ch]) {
1434
+ state.result += simpleEscapeMap[ch];
1435
+ state.position++;
1436
+ } else if ((tmp = escapedHexLen(ch)) > 0) {
1437
+ hexLength = tmp;
1438
+ hexResult = 0;
1439
+ for (; hexLength > 0; hexLength--) {
1440
+ ch = state.input.charCodeAt(++state.position);
1441
+ if ((tmp = fromHexCode(ch)) >= 0) {
1442
+ hexResult = (hexResult << 4) + tmp;
1443
+ } else {
1444
+ throwError(state, "expected hexadecimal character");
1445
+ }
1446
+ }
1447
+ state.result += charFromCodepoint(hexResult);
1448
+ state.position++;
1449
+ } else {
1450
+ throwError(state, "unknown escape sequence");
1451
+ }
1452
+ captureStart = captureEnd = state.position;
1453
+ } else if (is_EOL(ch)) {
1454
+ captureSegment(state, captureStart, captureEnd, true);
1455
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
1456
+ captureStart = captureEnd = state.position;
1457
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
1458
+ throwError(state, "unexpected end of the document within a double quoted scalar");
1459
+ } else {
1460
+ state.position++;
1461
+ captureEnd = state.position;
1462
+ }
1463
+ }
1464
+ throwError(state, "unexpected end of the stream within a double quoted scalar");
1465
+ }
1466
+ function readFlowCollection(state, nodeIndent) {
1467
+ var readNext = true, _line, _lineStart, _pos, _tag = state.tag, _result, _anchor = state.anchor, following, terminator, isPair, isExplicitPair, isMapping, overridableKeys = /* @__PURE__ */ Object.create(null), keyNode, keyTag, valueNode, ch;
1468
+ ch = state.input.charCodeAt(state.position);
1469
+ if (ch === 91) {
1470
+ terminator = 93;
1471
+ isMapping = false;
1472
+ _result = [];
1473
+ } else if (ch === 123) {
1474
+ terminator = 125;
1475
+ isMapping = true;
1476
+ _result = {};
1477
+ } else {
1478
+ return false;
1479
+ }
1480
+ if (state.anchor !== null) {
1481
+ state.anchorMap[state.anchor] = _result;
1482
+ }
1483
+ ch = state.input.charCodeAt(++state.position);
1484
+ while (ch !== 0) {
1485
+ skipSeparationSpace(state, true, nodeIndent);
1486
+ ch = state.input.charCodeAt(state.position);
1487
+ if (ch === terminator) {
1488
+ state.position++;
1489
+ state.tag = _tag;
1490
+ state.anchor = _anchor;
1491
+ state.kind = isMapping ? "mapping" : "sequence";
1492
+ state.result = _result;
1493
+ return true;
1494
+ } else if (!readNext) {
1495
+ throwError(state, "missed comma between flow collection entries");
1496
+ } else if (ch === 44) {
1497
+ throwError(state, "expected the node content, but found ','");
1498
+ }
1499
+ keyTag = keyNode = valueNode = null;
1500
+ isPair = isExplicitPair = false;
1501
+ if (ch === 63) {
1502
+ following = state.input.charCodeAt(state.position + 1);
1503
+ if (is_WS_OR_EOL(following)) {
1504
+ isPair = isExplicitPair = true;
1505
+ state.position++;
1506
+ skipSeparationSpace(state, true, nodeIndent);
1507
+ }
1508
+ }
1509
+ _line = state.line;
1510
+ _lineStart = state.lineStart;
1511
+ _pos = state.position;
1512
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
1513
+ keyTag = state.tag;
1514
+ keyNode = state.result;
1515
+ skipSeparationSpace(state, true, nodeIndent);
1516
+ ch = state.input.charCodeAt(state.position);
1517
+ if ((isExplicitPair || state.line === _line) && ch === 58) {
1518
+ isPair = true;
1519
+ ch = state.input.charCodeAt(++state.position);
1520
+ skipSeparationSpace(state, true, nodeIndent);
1521
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
1522
+ valueNode = state.result;
1523
+ }
1524
+ if (isMapping) {
1525
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos);
1526
+ } else if (isPair) {
1527
+ _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode, _line, _lineStart, _pos));
1528
+ } else {
1529
+ _result.push(keyNode);
1530
+ }
1531
+ skipSeparationSpace(state, true, nodeIndent);
1532
+ ch = state.input.charCodeAt(state.position);
1533
+ if (ch === 44) {
1534
+ readNext = true;
1535
+ ch = state.input.charCodeAt(++state.position);
1536
+ } else {
1537
+ readNext = false;
1538
+ }
1539
+ }
1540
+ throwError(state, "unexpected end of the stream within a flow collection");
1541
+ }
1542
+ function readBlockScalar(state, nodeIndent) {
1543
+ var captureStart, folding, chomping = CHOMPING_CLIP, didReadContent = false, detectedIndent = false, textIndent = nodeIndent, emptyLines = 0, atMoreIndented = false, tmp, ch;
1544
+ ch = state.input.charCodeAt(state.position);
1545
+ if (ch === 124) {
1546
+ folding = false;
1547
+ } else if (ch === 62) {
1548
+ folding = true;
1549
+ } else {
1550
+ return false;
1551
+ }
1552
+ state.kind = "scalar";
1553
+ state.result = "";
1554
+ while (ch !== 0) {
1555
+ ch = state.input.charCodeAt(++state.position);
1556
+ if (ch === 43 || ch === 45) {
1557
+ if (CHOMPING_CLIP === chomping) {
1558
+ chomping = ch === 43 ? CHOMPING_KEEP : CHOMPING_STRIP;
1559
+ } else {
1560
+ throwError(state, "repeat of a chomping mode identifier");
1561
+ }
1562
+ } else if ((tmp = fromDecimalCode(ch)) >= 0) {
1563
+ if (tmp === 0) {
1564
+ throwError(state, "bad explicit indentation width of a block scalar; it cannot be less than one");
1565
+ } else if (!detectedIndent) {
1566
+ textIndent = nodeIndent + tmp - 1;
1567
+ detectedIndent = true;
1568
+ } else {
1569
+ throwError(state, "repeat of an indentation width identifier");
1570
+ }
1571
+ } else {
1572
+ break;
1573
+ }
1574
+ }
1575
+ if (is_WHITE_SPACE(ch)) {
1576
+ do {
1577
+ ch = state.input.charCodeAt(++state.position);
1578
+ } while (is_WHITE_SPACE(ch));
1579
+ if (ch === 35) {
1580
+ do {
1581
+ ch = state.input.charCodeAt(++state.position);
1582
+ } while (!is_EOL(ch) && ch !== 0);
1583
+ }
1584
+ }
1585
+ while (ch !== 0) {
1586
+ readLineBreak(state);
1587
+ state.lineIndent = 0;
1588
+ ch = state.input.charCodeAt(state.position);
1589
+ while ((!detectedIndent || state.lineIndent < textIndent) && ch === 32) {
1590
+ state.lineIndent++;
1591
+ ch = state.input.charCodeAt(++state.position);
1592
+ }
1593
+ if (!detectedIndent && state.lineIndent > textIndent) {
1594
+ textIndent = state.lineIndent;
1595
+ }
1596
+ if (is_EOL(ch)) {
1597
+ emptyLines++;
1598
+ continue;
1599
+ }
1600
+ if (state.lineIndent < textIndent) {
1601
+ if (chomping === CHOMPING_KEEP) {
1602
+ state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
1603
+ } else if (chomping === CHOMPING_CLIP) {
1604
+ if (didReadContent) {
1605
+ state.result += "\n";
1606
+ }
1607
+ }
1608
+ break;
1609
+ }
1610
+ if (folding) {
1611
+ if (is_WHITE_SPACE(ch)) {
1612
+ atMoreIndented = true;
1613
+ state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
1614
+ } else if (atMoreIndented) {
1615
+ atMoreIndented = false;
1616
+ state.result += common.repeat("\n", emptyLines + 1);
1617
+ } else if (emptyLines === 0) {
1618
+ if (didReadContent) {
1619
+ state.result += " ";
1620
+ }
1621
+ } else {
1622
+ state.result += common.repeat("\n", emptyLines);
1623
+ }
1624
+ } else {
1625
+ state.result += common.repeat("\n", didReadContent ? 1 + emptyLines : emptyLines);
1626
+ }
1627
+ didReadContent = true;
1628
+ detectedIndent = true;
1629
+ emptyLines = 0;
1630
+ captureStart = state.position;
1631
+ while (!is_EOL(ch) && ch !== 0) {
1632
+ ch = state.input.charCodeAt(++state.position);
1633
+ }
1634
+ captureSegment(state, captureStart, state.position, false);
1635
+ }
1636
+ return true;
1637
+ }
1638
+ function readBlockSequence(state, nodeIndent) {
1639
+ var _line, _tag = state.tag, _anchor = state.anchor, _result = [], following, detected = false, ch;
1640
+ if (state.firstTabInLine !== -1) return false;
1641
+ if (state.anchor !== null) {
1642
+ state.anchorMap[state.anchor] = _result;
1643
+ }
1644
+ ch = state.input.charCodeAt(state.position);
1645
+ while (ch !== 0) {
1646
+ if (state.firstTabInLine !== -1) {
1647
+ state.position = state.firstTabInLine;
1648
+ throwError(state, "tab characters must not be used in indentation");
1649
+ }
1650
+ if (ch !== 45) {
1651
+ break;
1652
+ }
1653
+ following = state.input.charCodeAt(state.position + 1);
1654
+ if (!is_WS_OR_EOL(following)) {
1655
+ break;
1656
+ }
1657
+ detected = true;
1658
+ state.position++;
1659
+ if (skipSeparationSpace(state, true, -1)) {
1660
+ if (state.lineIndent <= nodeIndent) {
1661
+ _result.push(null);
1662
+ ch = state.input.charCodeAt(state.position);
1663
+ continue;
1664
+ }
1665
+ }
1666
+ _line = state.line;
1667
+ composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
1668
+ _result.push(state.result);
1669
+ skipSeparationSpace(state, true, -1);
1670
+ ch = state.input.charCodeAt(state.position);
1671
+ if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {
1672
+ throwError(state, "bad indentation of a sequence entry");
1673
+ } else if (state.lineIndent < nodeIndent) {
1674
+ break;
1675
+ }
1676
+ }
1677
+ if (detected) {
1678
+ state.tag = _tag;
1679
+ state.anchor = _anchor;
1680
+ state.kind = "sequence";
1681
+ state.result = _result;
1682
+ return true;
1683
+ }
1684
+ return false;
1685
+ }
1686
+ function readBlockMapping(state, nodeIndent, flowIndent) {
1687
+ var following, allowCompact, _line, _keyLine, _keyLineStart, _keyPos, _tag = state.tag, _anchor = state.anchor, _result = {}, overridableKeys = /* @__PURE__ */ Object.create(null), keyTag = null, keyNode = null, valueNode = null, atExplicitKey = false, detected = false, ch;
1688
+ if (state.firstTabInLine !== -1) return false;
1689
+ if (state.anchor !== null) {
1690
+ state.anchorMap[state.anchor] = _result;
1691
+ }
1692
+ ch = state.input.charCodeAt(state.position);
1693
+ while (ch !== 0) {
1694
+ if (!atExplicitKey && state.firstTabInLine !== -1) {
1695
+ state.position = state.firstTabInLine;
1696
+ throwError(state, "tab characters must not be used in indentation");
1697
+ }
1698
+ following = state.input.charCodeAt(state.position + 1);
1699
+ _line = state.line;
1700
+ if ((ch === 63 || ch === 58) && is_WS_OR_EOL(following)) {
1701
+ if (ch === 63) {
1702
+ if (atExplicitKey) {
1703
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
1704
+ keyTag = keyNode = valueNode = null;
1705
+ }
1706
+ detected = true;
1707
+ atExplicitKey = true;
1708
+ allowCompact = true;
1709
+ } else if (atExplicitKey) {
1710
+ atExplicitKey = false;
1711
+ allowCompact = true;
1712
+ } else {
1713
+ throwError(state, "incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line");
1714
+ }
1715
+ state.position += 1;
1716
+ ch = following;
1717
+ } else {
1718
+ _keyLine = state.line;
1719
+ _keyLineStart = state.lineStart;
1720
+ _keyPos = state.position;
1721
+ if (!composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
1722
+ break;
1723
+ }
1724
+ if (state.line === _line) {
1725
+ ch = state.input.charCodeAt(state.position);
1726
+ while (is_WHITE_SPACE(ch)) {
1727
+ ch = state.input.charCodeAt(++state.position);
1728
+ }
1729
+ if (ch === 58) {
1730
+ ch = state.input.charCodeAt(++state.position);
1731
+ if (!is_WS_OR_EOL(ch)) {
1732
+ throwError(state, "a whitespace character is expected after the key-value separator within a block mapping");
1733
+ }
1734
+ if (atExplicitKey) {
1735
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
1736
+ keyTag = keyNode = valueNode = null;
1737
+ }
1738
+ detected = true;
1739
+ atExplicitKey = false;
1740
+ allowCompact = false;
1741
+ keyTag = state.tag;
1742
+ keyNode = state.result;
1743
+ } else if (detected) {
1744
+ throwError(state, "can not read an implicit mapping pair; a colon is missed");
1745
+ } else {
1746
+ state.tag = _tag;
1747
+ state.anchor = _anchor;
1748
+ return true;
1749
+ }
1750
+ } else if (detected) {
1751
+ throwError(state, "can not read a block mapping entry; a multiline key may not be an implicit key");
1752
+ } else {
1753
+ state.tag = _tag;
1754
+ state.anchor = _anchor;
1755
+ return true;
1756
+ }
1757
+ }
1758
+ if (state.line === _line || state.lineIndent > nodeIndent) {
1759
+ if (atExplicitKey) {
1760
+ _keyLine = state.line;
1761
+ _keyLineStart = state.lineStart;
1762
+ _keyPos = state.position;
1763
+ }
1764
+ if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
1765
+ if (atExplicitKey) {
1766
+ keyNode = state.result;
1767
+ } else {
1768
+ valueNode = state.result;
1769
+ }
1770
+ }
1771
+ if (!atExplicitKey) {
1772
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _keyLine, _keyLineStart, _keyPos);
1773
+ keyTag = keyNode = valueNode = null;
1774
+ }
1775
+ skipSeparationSpace(state, true, -1);
1776
+ ch = state.input.charCodeAt(state.position);
1777
+ }
1778
+ if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {
1779
+ throwError(state, "bad indentation of a mapping entry");
1780
+ } else if (state.lineIndent < nodeIndent) {
1781
+ break;
1782
+ }
1783
+ }
1784
+ if (atExplicitKey) {
1785
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null, _keyLine, _keyLineStart, _keyPos);
1786
+ }
1787
+ if (detected) {
1788
+ state.tag = _tag;
1789
+ state.anchor = _anchor;
1790
+ state.kind = "mapping";
1791
+ state.result = _result;
1792
+ }
1793
+ return detected;
1794
+ }
1795
+ function readTagProperty(state) {
1796
+ var _position, isVerbatim = false, isNamed = false, tagHandle, tagName, ch;
1797
+ ch = state.input.charCodeAt(state.position);
1798
+ if (ch !== 33) return false;
1799
+ if (state.tag !== null) {
1800
+ throwError(state, "duplication of a tag property");
1801
+ }
1802
+ ch = state.input.charCodeAt(++state.position);
1803
+ if (ch === 60) {
1804
+ isVerbatim = true;
1805
+ ch = state.input.charCodeAt(++state.position);
1806
+ } else if (ch === 33) {
1807
+ isNamed = true;
1808
+ tagHandle = "!!";
1809
+ ch = state.input.charCodeAt(++state.position);
1810
+ } else {
1811
+ tagHandle = "!";
1812
+ }
1813
+ _position = state.position;
1814
+ if (isVerbatim) {
1815
+ do {
1816
+ ch = state.input.charCodeAt(++state.position);
1817
+ } while (ch !== 0 && ch !== 62);
1818
+ if (state.position < state.length) {
1819
+ tagName = state.input.slice(_position, state.position);
1820
+ ch = state.input.charCodeAt(++state.position);
1821
+ } else {
1822
+ throwError(state, "unexpected end of the stream within a verbatim tag");
1823
+ }
1824
+ } else {
1825
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
1826
+ if (ch === 33) {
1827
+ if (!isNamed) {
1828
+ tagHandle = state.input.slice(_position - 1, state.position + 1);
1829
+ if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
1830
+ throwError(state, "named tag handle cannot contain such characters");
1831
+ }
1832
+ isNamed = true;
1833
+ _position = state.position + 1;
1834
+ } else {
1835
+ throwError(state, "tag suffix cannot contain exclamation marks");
1836
+ }
1837
+ }
1838
+ ch = state.input.charCodeAt(++state.position);
1839
+ }
1840
+ tagName = state.input.slice(_position, state.position);
1841
+ if (PATTERN_FLOW_INDICATORS.test(tagName)) {
1842
+ throwError(state, "tag suffix cannot contain flow indicator characters");
1843
+ }
1844
+ }
1845
+ if (tagName && !PATTERN_TAG_URI.test(tagName)) {
1846
+ throwError(state, "tag name cannot contain such characters: " + tagName);
1847
+ }
1848
+ try {
1849
+ tagName = decodeURIComponent(tagName);
1850
+ } catch (err) {
1851
+ throwError(state, "tag name is malformed: " + tagName);
1852
+ }
1853
+ if (isVerbatim) {
1854
+ state.tag = tagName;
1855
+ } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {
1856
+ state.tag = state.tagMap[tagHandle] + tagName;
1857
+ } else if (tagHandle === "!") {
1858
+ state.tag = "!" + tagName;
1859
+ } else if (tagHandle === "!!") {
1860
+ state.tag = "tag:yaml.org,2002:" + tagName;
1861
+ } else {
1862
+ throwError(state, 'undeclared tag handle "' + tagHandle + '"');
1863
+ }
1864
+ return true;
1865
+ }
1866
+ function readAnchorProperty(state) {
1867
+ var _position, ch;
1868
+ ch = state.input.charCodeAt(state.position);
1869
+ if (ch !== 38) return false;
1870
+ if (state.anchor !== null) {
1871
+ throwError(state, "duplication of an anchor property");
1872
+ }
1873
+ ch = state.input.charCodeAt(++state.position);
1874
+ _position = state.position;
1875
+ while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
1876
+ ch = state.input.charCodeAt(++state.position);
1877
+ }
1878
+ if (state.position === _position) {
1879
+ throwError(state, "name of an anchor node must contain at least one character");
1880
+ }
1881
+ state.anchor = state.input.slice(_position, state.position);
1882
+ return true;
1883
+ }
1884
+ function readAlias(state) {
1885
+ var _position, alias, ch;
1886
+ ch = state.input.charCodeAt(state.position);
1887
+ if (ch !== 42) return false;
1888
+ ch = state.input.charCodeAt(++state.position);
1889
+ _position = state.position;
1890
+ while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
1891
+ ch = state.input.charCodeAt(++state.position);
1892
+ }
1893
+ if (state.position === _position) {
1894
+ throwError(state, "name of an alias node must contain at least one character");
1895
+ }
1896
+ alias = state.input.slice(_position, state.position);
1897
+ if (!_hasOwnProperty.call(state.anchorMap, alias)) {
1898
+ throwError(state, 'unidentified alias "' + alias + '"');
1899
+ }
1900
+ state.result = state.anchorMap[alias];
1901
+ skipSeparationSpace(state, true, -1);
1902
+ return true;
1903
+ }
1904
+ function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
1905
+ var allowBlockStyles, allowBlockScalars, allowBlockCollections, indentStatus = 1, atNewLine = false, hasContent = false, typeIndex, typeQuantity, typeList, type, flowIndent, blockIndent;
1906
+ if (state.listener !== null) {
1907
+ state.listener("open", state);
1908
+ }
1909
+ state.tag = null;
1910
+ state.anchor = null;
1911
+ state.kind = null;
1912
+ state.result = null;
1913
+ allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;
1914
+ if (allowToSeek) {
1915
+ if (skipSeparationSpace(state, true, -1)) {
1916
+ atNewLine = true;
1917
+ if (state.lineIndent > parentIndent) {
1918
+ indentStatus = 1;
1919
+ } else if (state.lineIndent === parentIndent) {
1920
+ indentStatus = 0;
1921
+ } else if (state.lineIndent < parentIndent) {
1922
+ indentStatus = -1;
1923
+ }
1924
+ }
1925
+ }
1926
+ if (indentStatus === 1) {
1927
+ while (readTagProperty(state) || readAnchorProperty(state)) {
1928
+ if (skipSeparationSpace(state, true, -1)) {
1929
+ atNewLine = true;
1930
+ allowBlockCollections = allowBlockStyles;
1931
+ if (state.lineIndent > parentIndent) {
1932
+ indentStatus = 1;
1933
+ } else if (state.lineIndent === parentIndent) {
1934
+ indentStatus = 0;
1935
+ } else if (state.lineIndent < parentIndent) {
1936
+ indentStatus = -1;
1937
+ }
1938
+ } else {
1939
+ allowBlockCollections = false;
1940
+ }
1941
+ }
1942
+ }
1943
+ if (allowBlockCollections) {
1944
+ allowBlockCollections = atNewLine || allowCompact;
1945
+ }
1946
+ if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {
1947
+ if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
1948
+ flowIndent = parentIndent;
1949
+ } else {
1950
+ flowIndent = parentIndent + 1;
1951
+ }
1952
+ blockIndent = state.position - state.lineStart;
1953
+ if (indentStatus === 1) {
1954
+ if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {
1955
+ hasContent = true;
1956
+ } else {
1957
+ if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {
1958
+ hasContent = true;
1959
+ } else if (readAlias(state)) {
1960
+ hasContent = true;
1961
+ if (state.tag !== null || state.anchor !== null) {
1962
+ throwError(state, "alias node should not have any properties");
1963
+ }
1964
+ } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
1965
+ hasContent = true;
1966
+ if (state.tag === null) {
1967
+ state.tag = "?";
1968
+ }
1969
+ }
1970
+ if (state.anchor !== null) {
1971
+ state.anchorMap[state.anchor] = state.result;
1972
+ }
1973
+ }
1974
+ } else if (indentStatus === 0) {
1975
+ hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
1976
+ }
1977
+ }
1978
+ if (state.tag === null) {
1979
+ if (state.anchor !== null) {
1980
+ state.anchorMap[state.anchor] = state.result;
1981
+ }
1982
+ } else if (state.tag === "?") {
1983
+ if (state.result !== null && state.kind !== "scalar") {
1984
+ throwError(state, 'unacceptable node kind for !<?> tag; it should be "scalar", not "' + state.kind + '"');
1985
+ }
1986
+ for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {
1987
+ type = state.implicitTypes[typeIndex];
1988
+ if (type.resolve(state.result)) {
1989
+ state.result = type.construct(state.result);
1990
+ state.tag = type.tag;
1991
+ if (state.anchor !== null) {
1992
+ state.anchorMap[state.anchor] = state.result;
1993
+ }
1994
+ break;
1995
+ }
1996
+ }
1997
+ } else if (state.tag !== "!") {
1998
+ if (_hasOwnProperty.call(state.typeMap[state.kind || "fallback"], state.tag)) {
1999
+ type = state.typeMap[state.kind || "fallback"][state.tag];
2000
+ } else {
2001
+ type = null;
2002
+ typeList = state.typeMap.multi[state.kind || "fallback"];
2003
+ for (typeIndex = 0, typeQuantity = typeList.length; typeIndex < typeQuantity; typeIndex += 1) {
2004
+ if (state.tag.slice(0, typeList[typeIndex].tag.length) === typeList[typeIndex].tag) {
2005
+ type = typeList[typeIndex];
2006
+ break;
2007
+ }
2008
+ }
2009
+ }
2010
+ if (!type) {
2011
+ throwError(state, "unknown tag !<" + state.tag + ">");
2012
+ }
2013
+ if (state.result !== null && type.kind !== state.kind) {
2014
+ throwError(state, "unacceptable node kind for !<" + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"');
2015
+ }
2016
+ if (!type.resolve(state.result, state.tag)) {
2017
+ throwError(state, "cannot resolve a node with !<" + state.tag + "> explicit tag");
2018
+ } else {
2019
+ state.result = type.construct(state.result, state.tag);
2020
+ if (state.anchor !== null) {
2021
+ state.anchorMap[state.anchor] = state.result;
2022
+ }
2023
+ }
2024
+ }
2025
+ if (state.listener !== null) {
2026
+ state.listener("close", state);
2027
+ }
2028
+ return state.tag !== null || state.anchor !== null || hasContent;
2029
+ }
2030
+ function readDocument(state) {
2031
+ var documentStart = state.position, _position, directiveName, directiveArgs, hasDirectives = false, ch;
2032
+ state.version = null;
2033
+ state.checkLineBreaks = state.legacy;
2034
+ state.tagMap = /* @__PURE__ */ Object.create(null);
2035
+ state.anchorMap = /* @__PURE__ */ Object.create(null);
2036
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
2037
+ skipSeparationSpace(state, true, -1);
2038
+ ch = state.input.charCodeAt(state.position);
2039
+ if (state.lineIndent > 0 || ch !== 37) {
2040
+ break;
2041
+ }
2042
+ hasDirectives = true;
2043
+ ch = state.input.charCodeAt(++state.position);
2044
+ _position = state.position;
2045
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
2046
+ ch = state.input.charCodeAt(++state.position);
2047
+ }
2048
+ directiveName = state.input.slice(_position, state.position);
2049
+ directiveArgs = [];
2050
+ if (directiveName.length < 1) {
2051
+ throwError(state, "directive name must not be less than one character in length");
2052
+ }
2053
+ while (ch !== 0) {
2054
+ while (is_WHITE_SPACE(ch)) {
2055
+ ch = state.input.charCodeAt(++state.position);
2056
+ }
2057
+ if (ch === 35) {
2058
+ do {
2059
+ ch = state.input.charCodeAt(++state.position);
2060
+ } while (ch !== 0 && !is_EOL(ch));
2061
+ break;
2062
+ }
2063
+ if (is_EOL(ch)) break;
2064
+ _position = state.position;
2065
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
2066
+ ch = state.input.charCodeAt(++state.position);
2067
+ }
2068
+ directiveArgs.push(state.input.slice(_position, state.position));
2069
+ }
2070
+ if (ch !== 0) readLineBreak(state);
2071
+ if (_hasOwnProperty.call(directiveHandlers, directiveName)) {
2072
+ directiveHandlers[directiveName](state, directiveName, directiveArgs);
2073
+ } else {
2074
+ throwWarning(state, 'unknown document directive "' + directiveName + '"');
2075
+ }
2076
+ }
2077
+ skipSeparationSpace(state, true, -1);
2078
+ if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 45 && state.input.charCodeAt(state.position + 1) === 45 && state.input.charCodeAt(state.position + 2) === 45) {
2079
+ state.position += 3;
2080
+ skipSeparationSpace(state, true, -1);
2081
+ } else if (hasDirectives) {
2082
+ throwError(state, "directives end mark is expected");
2083
+ }
2084
+ composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
2085
+ skipSeparationSpace(state, true, -1);
2086
+ if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
2087
+ throwWarning(state, "non-ASCII line breaks are interpreted as content");
2088
+ }
2089
+ state.documents.push(state.result);
2090
+ if (state.position === state.lineStart && testDocumentSeparator(state)) {
2091
+ if (state.input.charCodeAt(state.position) === 46) {
2092
+ state.position += 3;
2093
+ skipSeparationSpace(state, true, -1);
2094
+ }
2095
+ return;
2096
+ }
2097
+ if (state.position < state.length - 1) {
2098
+ throwError(state, "end of the stream or a document separator is expected");
2099
+ } else {
2100
+ return;
2101
+ }
2102
+ }
2103
+ function loadDocuments(input, options) {
2104
+ input = String(input);
2105
+ options = options || {};
2106
+ if (input.length !== 0) {
2107
+ if (input.charCodeAt(input.length - 1) !== 10 && input.charCodeAt(input.length - 1) !== 13) {
2108
+ input += "\n";
2109
+ }
2110
+ if (input.charCodeAt(0) === 65279) {
2111
+ input = input.slice(1);
2112
+ }
2113
+ }
2114
+ var state = new State(input, options);
2115
+ var nullpos = input.indexOf("\0");
2116
+ if (nullpos !== -1) {
2117
+ state.position = nullpos;
2118
+ throwError(state, "null byte is not allowed in input");
2119
+ }
2120
+ state.input += "\0";
2121
+ while (state.input.charCodeAt(state.position) === 32) {
2122
+ state.lineIndent += 1;
2123
+ state.position += 1;
2124
+ }
2125
+ while (state.position < state.length - 1) {
2126
+ readDocument(state);
2127
+ }
2128
+ return state.documents;
2129
+ }
2130
+ function loadAll(input, iterator, options) {
2131
+ if (iterator !== null && typeof iterator === "object" && typeof options === "undefined") {
2132
+ options = iterator;
2133
+ iterator = null;
2134
+ }
2135
+ var documents = loadDocuments(input, options);
2136
+ if (typeof iterator !== "function") {
2137
+ return documents;
2138
+ }
2139
+ for (var index = 0, length = documents.length; index < length; index += 1) {
2140
+ iterator(documents[index]);
2141
+ }
2142
+ }
2143
+ function load2(input, options) {
2144
+ var documents = loadDocuments(input, options);
2145
+ if (documents.length === 0) {
2146
+ return void 0;
2147
+ } else if (documents.length === 1) {
2148
+ return documents[0];
2149
+ }
2150
+ throw new YAMLException("expected a single document in the stream, but found more");
2151
+ }
2152
+ module2.exports.loadAll = loadAll;
2153
+ module2.exports.load = load2;
2154
+ }
2155
+ });
2156
+
2157
+ // node_modules/js-yaml/lib/dumper.js
2158
+ var require_dumper = __commonJS({
2159
+ "node_modules/js-yaml/lib/dumper.js"(exports2, module2) {
2160
+ "use strict";
2161
+ var common = require_common();
2162
+ var YAMLException = require_exception();
2163
+ var DEFAULT_SCHEMA = require_default();
2164
+ var _toString = Object.prototype.toString;
2165
+ var _hasOwnProperty = Object.prototype.hasOwnProperty;
2166
+ var CHAR_BOM = 65279;
2167
+ var CHAR_TAB = 9;
2168
+ var CHAR_LINE_FEED = 10;
2169
+ var CHAR_CARRIAGE_RETURN = 13;
2170
+ var CHAR_SPACE = 32;
2171
+ var CHAR_EXCLAMATION = 33;
2172
+ var CHAR_DOUBLE_QUOTE = 34;
2173
+ var CHAR_SHARP = 35;
2174
+ var CHAR_PERCENT = 37;
2175
+ var CHAR_AMPERSAND = 38;
2176
+ var CHAR_SINGLE_QUOTE = 39;
2177
+ var CHAR_ASTERISK = 42;
2178
+ var CHAR_COMMA = 44;
2179
+ var CHAR_MINUS = 45;
2180
+ var CHAR_COLON = 58;
2181
+ var CHAR_EQUALS = 61;
2182
+ var CHAR_GREATER_THAN = 62;
2183
+ var CHAR_QUESTION = 63;
2184
+ var CHAR_COMMERCIAL_AT = 64;
2185
+ var CHAR_LEFT_SQUARE_BRACKET = 91;
2186
+ var CHAR_RIGHT_SQUARE_BRACKET = 93;
2187
+ var CHAR_GRAVE_ACCENT = 96;
2188
+ var CHAR_LEFT_CURLY_BRACKET = 123;
2189
+ var CHAR_VERTICAL_LINE = 124;
2190
+ var CHAR_RIGHT_CURLY_BRACKET = 125;
2191
+ var ESCAPE_SEQUENCES = {};
2192
+ ESCAPE_SEQUENCES[0] = "\\0";
2193
+ ESCAPE_SEQUENCES[7] = "\\a";
2194
+ ESCAPE_SEQUENCES[8] = "\\b";
2195
+ ESCAPE_SEQUENCES[9] = "\\t";
2196
+ ESCAPE_SEQUENCES[10] = "\\n";
2197
+ ESCAPE_SEQUENCES[11] = "\\v";
2198
+ ESCAPE_SEQUENCES[12] = "\\f";
2199
+ ESCAPE_SEQUENCES[13] = "\\r";
2200
+ ESCAPE_SEQUENCES[27] = "\\e";
2201
+ ESCAPE_SEQUENCES[34] = '\\"';
2202
+ ESCAPE_SEQUENCES[92] = "\\\\";
2203
+ ESCAPE_SEQUENCES[133] = "\\N";
2204
+ ESCAPE_SEQUENCES[160] = "\\_";
2205
+ ESCAPE_SEQUENCES[8232] = "\\L";
2206
+ ESCAPE_SEQUENCES[8233] = "\\P";
2207
+ var DEPRECATED_BOOLEANS_SYNTAX = [
2208
+ "y",
2209
+ "Y",
2210
+ "yes",
2211
+ "Yes",
2212
+ "YES",
2213
+ "on",
2214
+ "On",
2215
+ "ON",
2216
+ "n",
2217
+ "N",
2218
+ "no",
2219
+ "No",
2220
+ "NO",
2221
+ "off",
2222
+ "Off",
2223
+ "OFF"
2224
+ ];
2225
+ var DEPRECATED_BASE60_SYNTAX = /^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;
2226
+ function compileStyleMap(schema, map2) {
2227
+ var result, keys, index, length, tag, style, type;
2228
+ if (map2 === null) return {};
2229
+ result = {};
2230
+ keys = Object.keys(map2);
2231
+ for (index = 0, length = keys.length; index < length; index += 1) {
2232
+ tag = keys[index];
2233
+ style = String(map2[tag]);
2234
+ if (tag.slice(0, 2) === "!!") {
2235
+ tag = "tag:yaml.org,2002:" + tag.slice(2);
2236
+ }
2237
+ type = schema.compiledTypeMap["fallback"][tag];
2238
+ if (type && _hasOwnProperty.call(type.styleAliases, style)) {
2239
+ style = type.styleAliases[style];
2240
+ }
2241
+ result[tag] = style;
2242
+ }
2243
+ return result;
2244
+ }
2245
+ function encodeHex(character) {
2246
+ var string4, handle, length;
2247
+ string4 = character.toString(16).toUpperCase();
2248
+ if (character <= 255) {
2249
+ handle = "x";
2250
+ length = 2;
2251
+ } else if (character <= 65535) {
2252
+ handle = "u";
2253
+ length = 4;
2254
+ } else if (character <= 4294967295) {
2255
+ handle = "U";
2256
+ length = 8;
2257
+ } else {
2258
+ throw new YAMLException("code point within a string may not be greater than 0xFFFFFFFF");
2259
+ }
2260
+ return "\\" + handle + common.repeat("0", length - string4.length) + string4;
2261
+ }
2262
+ var QUOTING_TYPE_SINGLE = 1;
2263
+ var QUOTING_TYPE_DOUBLE = 2;
2264
+ function State(options) {
2265
+ this.schema = options["schema"] || DEFAULT_SCHEMA;
2266
+ this.indent = Math.max(1, options["indent"] || 2);
2267
+ this.noArrayIndent = options["noArrayIndent"] || false;
2268
+ this.skipInvalid = options["skipInvalid"] || false;
2269
+ this.flowLevel = common.isNothing(options["flowLevel"]) ? -1 : options["flowLevel"];
2270
+ this.styleMap = compileStyleMap(this.schema, options["styles"] || null);
2271
+ this.sortKeys = options["sortKeys"] || false;
2272
+ this.lineWidth = options["lineWidth"] || 80;
2273
+ this.noRefs = options["noRefs"] || false;
2274
+ this.noCompatMode = options["noCompatMode"] || false;
2275
+ this.condenseFlow = options["condenseFlow"] || false;
2276
+ this.quotingType = options["quotingType"] === '"' ? QUOTING_TYPE_DOUBLE : QUOTING_TYPE_SINGLE;
2277
+ this.forceQuotes = options["forceQuotes"] || false;
2278
+ this.replacer = typeof options["replacer"] === "function" ? options["replacer"] : null;
2279
+ this.implicitTypes = this.schema.compiledImplicit;
2280
+ this.explicitTypes = this.schema.compiledExplicit;
2281
+ this.tag = null;
2282
+ this.result = "";
2283
+ this.duplicates = [];
2284
+ this.usedDuplicates = null;
2285
+ }
2286
+ function indentString(string4, spaces) {
2287
+ var ind = common.repeat(" ", spaces), position = 0, next = -1, result = "", line, length = string4.length;
2288
+ while (position < length) {
2289
+ next = string4.indexOf("\n", position);
2290
+ if (next === -1) {
2291
+ line = string4.slice(position);
2292
+ position = length;
2293
+ } else {
2294
+ line = string4.slice(position, next + 1);
2295
+ position = next + 1;
2296
+ }
2297
+ if (line.length && line !== "\n") result += ind;
2298
+ result += line;
2299
+ }
2300
+ return result;
2301
+ }
2302
+ function generateNextLine(state, level) {
2303
+ return "\n" + common.repeat(" ", state.indent * level);
2304
+ }
2305
+ function testImplicitResolving(state, str) {
2306
+ var index, length, type;
2307
+ for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
2308
+ type = state.implicitTypes[index];
2309
+ if (type.resolve(str)) {
2310
+ return true;
2311
+ }
2312
+ }
2313
+ return false;
2314
+ }
2315
+ function isWhitespace(c) {
2316
+ return c === CHAR_SPACE || c === CHAR_TAB;
2317
+ }
2318
+ function isPrintable(c) {
2319
+ return 32 <= c && c <= 126 || 161 <= c && c <= 55295 && c !== 8232 && c !== 8233 || 57344 <= c && c <= 65533 && c !== CHAR_BOM || 65536 <= c && c <= 1114111;
2320
+ }
2321
+ function isNsCharOrWhitespace(c) {
2322
+ return isPrintable(c) && c !== CHAR_BOM && c !== CHAR_CARRIAGE_RETURN && c !== CHAR_LINE_FEED;
2323
+ }
2324
+ function isPlainSafe(c, prev, inblock) {
2325
+ var cIsNsCharOrWhitespace = isNsCharOrWhitespace(c);
2326
+ var cIsNsChar = cIsNsCharOrWhitespace && !isWhitespace(c);
2327
+ return (
2328
+ // ns-plain-safe
2329
+ (inblock ? (
2330
+ // c = flow-in
2331
+ cIsNsCharOrWhitespace
2332
+ ) : cIsNsCharOrWhitespace && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET) && c !== CHAR_SHARP && !(prev === CHAR_COLON && !cIsNsChar) || isNsCharOrWhitespace(prev) && !isWhitespace(prev) && c === CHAR_SHARP || prev === CHAR_COLON && cIsNsChar
2333
+ );
2334
+ }
2335
+ function isPlainSafeFirst(c) {
2336
+ return isPrintable(c) && c !== CHAR_BOM && !isWhitespace(c) && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_EQUALS && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;
2337
+ }
2338
+ function isPlainSafeLast(c) {
2339
+ return !isWhitespace(c) && c !== CHAR_COLON;
2340
+ }
2341
+ function codePointAt(string4, pos) {
2342
+ var first = string4.charCodeAt(pos), second;
2343
+ if (first >= 55296 && first <= 56319 && pos + 1 < string4.length) {
2344
+ second = string4.charCodeAt(pos + 1);
2345
+ if (second >= 56320 && second <= 57343) {
2346
+ return (first - 55296) * 1024 + second - 56320 + 65536;
2347
+ }
2348
+ }
2349
+ return first;
2350
+ }
2351
+ function needIndentIndicator(string4) {
2352
+ var leadingSpaceRe = /^\n* /;
2353
+ return leadingSpaceRe.test(string4);
2354
+ }
2355
+ var STYLE_PLAIN = 1;
2356
+ var STYLE_SINGLE = 2;
2357
+ var STYLE_LITERAL = 3;
2358
+ var STYLE_FOLDED = 4;
2359
+ var STYLE_DOUBLE = 5;
2360
+ function chooseScalarStyle(string4, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType, quotingType, forceQuotes, inblock) {
2361
+ var i;
2362
+ var char = 0;
2363
+ var prevChar = null;
2364
+ var hasLineBreak = false;
2365
+ var hasFoldableLine = false;
2366
+ var shouldTrackWidth = lineWidth !== -1;
2367
+ var previousLineBreak = -1;
2368
+ var plain = isPlainSafeFirst(codePointAt(string4, 0)) && isPlainSafeLast(codePointAt(string4, string4.length - 1));
2369
+ if (singleLineOnly || forceQuotes) {
2370
+ for (i = 0; i < string4.length; char >= 65536 ? i += 2 : i++) {
2371
+ char = codePointAt(string4, i);
2372
+ if (!isPrintable(char)) {
2373
+ return STYLE_DOUBLE;
2374
+ }
2375
+ plain = plain && isPlainSafe(char, prevChar, inblock);
2376
+ prevChar = char;
2377
+ }
2378
+ } else {
2379
+ for (i = 0; i < string4.length; char >= 65536 ? i += 2 : i++) {
2380
+ char = codePointAt(string4, i);
2381
+ if (char === CHAR_LINE_FEED) {
2382
+ hasLineBreak = true;
2383
+ if (shouldTrackWidth) {
2384
+ hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented.
2385
+ i - previousLineBreak - 1 > lineWidth && string4[previousLineBreak + 1] !== " ";
2386
+ previousLineBreak = i;
2387
+ }
2388
+ } else if (!isPrintable(char)) {
2389
+ return STYLE_DOUBLE;
2390
+ }
2391
+ plain = plain && isPlainSafe(char, prevChar, inblock);
2392
+ prevChar = char;
2393
+ }
2394
+ hasFoldableLine = hasFoldableLine || shouldTrackWidth && (i - previousLineBreak - 1 > lineWidth && string4[previousLineBreak + 1] !== " ");
2395
+ }
2396
+ if (!hasLineBreak && !hasFoldableLine) {
2397
+ if (plain && !forceQuotes && !testAmbiguousType(string4)) {
2398
+ return STYLE_PLAIN;
2399
+ }
2400
+ return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;
2401
+ }
2402
+ if (indentPerLevel > 9 && needIndentIndicator(string4)) {
2403
+ return STYLE_DOUBLE;
2404
+ }
2405
+ if (!forceQuotes) {
2406
+ return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;
2407
+ }
2408
+ return quotingType === QUOTING_TYPE_DOUBLE ? STYLE_DOUBLE : STYLE_SINGLE;
2409
+ }
2410
+ function writeScalar(state, string4, level, iskey, inblock) {
2411
+ state.dump = (function() {
2412
+ if (string4.length === 0) {
2413
+ return state.quotingType === QUOTING_TYPE_DOUBLE ? '""' : "''";
2414
+ }
2415
+ if (!state.noCompatMode) {
2416
+ if (DEPRECATED_BOOLEANS_SYNTAX.indexOf(string4) !== -1 || DEPRECATED_BASE60_SYNTAX.test(string4)) {
2417
+ return state.quotingType === QUOTING_TYPE_DOUBLE ? '"' + string4 + '"' : "'" + string4 + "'";
2418
+ }
2419
+ }
2420
+ var indent = state.indent * Math.max(1, level);
2421
+ var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);
2422
+ var singleLineOnly = iskey || state.flowLevel > -1 && level >= state.flowLevel;
2423
+ function testAmbiguity(string5) {
2424
+ return testImplicitResolving(state, string5);
2425
+ }
2426
+ switch (chooseScalarStyle(
2427
+ string4,
2428
+ singleLineOnly,
2429
+ state.indent,
2430
+ lineWidth,
2431
+ testAmbiguity,
2432
+ state.quotingType,
2433
+ state.forceQuotes && !iskey,
2434
+ inblock
2435
+ )) {
2436
+ case STYLE_PLAIN:
2437
+ return string4;
2438
+ case STYLE_SINGLE:
2439
+ return "'" + string4.replace(/'/g, "''") + "'";
2440
+ case STYLE_LITERAL:
2441
+ return "|" + blockHeader(string4, state.indent) + dropEndingNewline(indentString(string4, indent));
2442
+ case STYLE_FOLDED:
2443
+ return ">" + blockHeader(string4, state.indent) + dropEndingNewline(indentString(foldString(string4, lineWidth), indent));
2444
+ case STYLE_DOUBLE:
2445
+ return '"' + escapeString(string4, lineWidth) + '"';
2446
+ default:
2447
+ throw new YAMLException("impossible error: invalid scalar style");
2448
+ }
2449
+ })();
2450
+ }
2451
+ function blockHeader(string4, indentPerLevel) {
2452
+ var indentIndicator = needIndentIndicator(string4) ? String(indentPerLevel) : "";
2453
+ var clip = string4[string4.length - 1] === "\n";
2454
+ var keep = clip && (string4[string4.length - 2] === "\n" || string4 === "\n");
2455
+ var chomp = keep ? "+" : clip ? "" : "-";
2456
+ return indentIndicator + chomp + "\n";
2457
+ }
2458
+ function dropEndingNewline(string4) {
2459
+ return string4[string4.length - 1] === "\n" ? string4.slice(0, -1) : string4;
2460
+ }
2461
+ function foldString(string4, width) {
2462
+ var lineRe = /(\n+)([^\n]*)/g;
2463
+ var result = (function() {
2464
+ var nextLF = string4.indexOf("\n");
2465
+ nextLF = nextLF !== -1 ? nextLF : string4.length;
2466
+ lineRe.lastIndex = nextLF;
2467
+ return foldLine(string4.slice(0, nextLF), width);
2468
+ })();
2469
+ var prevMoreIndented = string4[0] === "\n" || string4[0] === " ";
2470
+ var moreIndented;
2471
+ var match;
2472
+ while (match = lineRe.exec(string4)) {
2473
+ var prefix = match[1], line = match[2];
2474
+ moreIndented = line[0] === " ";
2475
+ result += prefix + (!prevMoreIndented && !moreIndented && line !== "" ? "\n" : "") + foldLine(line, width);
2476
+ prevMoreIndented = moreIndented;
2477
+ }
2478
+ return result;
2479
+ }
2480
+ function foldLine(line, width) {
2481
+ if (line === "" || line[0] === " ") return line;
2482
+ var breakRe = / [^ ]/g;
2483
+ var match;
2484
+ var start = 0, end, curr = 0, next = 0;
2485
+ var result = "";
2486
+ while (match = breakRe.exec(line)) {
2487
+ next = match.index;
2488
+ if (next - start > width) {
2489
+ end = curr > start ? curr : next;
2490
+ result += "\n" + line.slice(start, end);
2491
+ start = end + 1;
2492
+ }
2493
+ curr = next;
2494
+ }
2495
+ result += "\n";
2496
+ if (line.length - start > width && curr > start) {
2497
+ result += line.slice(start, curr) + "\n" + line.slice(curr + 1);
2498
+ } else {
2499
+ result += line.slice(start);
2500
+ }
2501
+ return result.slice(1);
2502
+ }
2503
+ function escapeString(string4) {
2504
+ var result = "";
2505
+ var char = 0;
2506
+ var escapeSeq;
2507
+ for (var i = 0; i < string4.length; char >= 65536 ? i += 2 : i++) {
2508
+ char = codePointAt(string4, i);
2509
+ escapeSeq = ESCAPE_SEQUENCES[char];
2510
+ if (!escapeSeq && isPrintable(char)) {
2511
+ result += string4[i];
2512
+ if (char >= 65536) result += string4[i + 1];
2513
+ } else {
2514
+ result += escapeSeq || encodeHex(char);
2515
+ }
2516
+ }
2517
+ return result;
2518
+ }
2519
+ function writeFlowSequence(state, level, object2) {
2520
+ var _result = "", _tag = state.tag, index, length, value;
2521
+ for (index = 0, length = object2.length; index < length; index += 1) {
2522
+ value = object2[index];
2523
+ if (state.replacer) {
2524
+ value = state.replacer.call(object2, String(index), value);
2525
+ }
2526
+ if (writeNode(state, level, value, false, false) || typeof value === "undefined" && writeNode(state, level, null, false, false)) {
2527
+ if (_result !== "") _result += "," + (!state.condenseFlow ? " " : "");
2528
+ _result += state.dump;
2529
+ }
2530
+ }
2531
+ state.tag = _tag;
2532
+ state.dump = "[" + _result + "]";
2533
+ }
2534
+ function writeBlockSequence(state, level, object2, compact) {
2535
+ var _result = "", _tag = state.tag, index, length, value;
2536
+ for (index = 0, length = object2.length; index < length; index += 1) {
2537
+ value = object2[index];
2538
+ if (state.replacer) {
2539
+ value = state.replacer.call(object2, String(index), value);
2540
+ }
2541
+ if (writeNode(state, level + 1, value, true, true, false, true) || typeof value === "undefined" && writeNode(state, level + 1, null, true, true, false, true)) {
2542
+ if (!compact || _result !== "") {
2543
+ _result += generateNextLine(state, level);
2544
+ }
2545
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
2546
+ _result += "-";
2547
+ } else {
2548
+ _result += "- ";
2549
+ }
2550
+ _result += state.dump;
2551
+ }
2552
+ }
2553
+ state.tag = _tag;
2554
+ state.dump = _result || "[]";
2555
+ }
2556
+ function writeFlowMapping(state, level, object2) {
2557
+ var _result = "", _tag = state.tag, objectKeyList = Object.keys(object2), index, length, objectKey, objectValue, pairBuffer;
2558
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
2559
+ pairBuffer = "";
2560
+ if (_result !== "") pairBuffer += ", ";
2561
+ if (state.condenseFlow) pairBuffer += '"';
2562
+ objectKey = objectKeyList[index];
2563
+ objectValue = object2[objectKey];
2564
+ if (state.replacer) {
2565
+ objectValue = state.replacer.call(object2, objectKey, objectValue);
2566
+ }
2567
+ if (!writeNode(state, level, objectKey, false, false)) {
2568
+ continue;
2569
+ }
2570
+ if (state.dump.length > 1024) pairBuffer += "? ";
2571
+ pairBuffer += state.dump + (state.condenseFlow ? '"' : "") + ":" + (state.condenseFlow ? "" : " ");
2572
+ if (!writeNode(state, level, objectValue, false, false)) {
2573
+ continue;
2574
+ }
2575
+ pairBuffer += state.dump;
2576
+ _result += pairBuffer;
2577
+ }
2578
+ state.tag = _tag;
2579
+ state.dump = "{" + _result + "}";
2580
+ }
2581
+ function writeBlockMapping(state, level, object2, compact) {
2582
+ var _result = "", _tag = state.tag, objectKeyList = Object.keys(object2), index, length, objectKey, objectValue, explicitPair, pairBuffer;
2583
+ if (state.sortKeys === true) {
2584
+ objectKeyList.sort();
2585
+ } else if (typeof state.sortKeys === "function") {
2586
+ objectKeyList.sort(state.sortKeys);
2587
+ } else if (state.sortKeys) {
2588
+ throw new YAMLException("sortKeys must be a boolean or a function");
2589
+ }
2590
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
2591
+ pairBuffer = "";
2592
+ if (!compact || _result !== "") {
2593
+ pairBuffer += generateNextLine(state, level);
2594
+ }
2595
+ objectKey = objectKeyList[index];
2596
+ objectValue = object2[objectKey];
2597
+ if (state.replacer) {
2598
+ objectValue = state.replacer.call(object2, objectKey, objectValue);
2599
+ }
2600
+ if (!writeNode(state, level + 1, objectKey, true, true, true)) {
2601
+ continue;
2602
+ }
2603
+ explicitPair = state.tag !== null && state.tag !== "?" || state.dump && state.dump.length > 1024;
2604
+ if (explicitPair) {
2605
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
2606
+ pairBuffer += "?";
2607
+ } else {
2608
+ pairBuffer += "? ";
2609
+ }
2610
+ }
2611
+ pairBuffer += state.dump;
2612
+ if (explicitPair) {
2613
+ pairBuffer += generateNextLine(state, level);
2614
+ }
2615
+ if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
2616
+ continue;
2617
+ }
2618
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
2619
+ pairBuffer += ":";
2620
+ } else {
2621
+ pairBuffer += ": ";
2622
+ }
2623
+ pairBuffer += state.dump;
2624
+ _result += pairBuffer;
2625
+ }
2626
+ state.tag = _tag;
2627
+ state.dump = _result || "{}";
2628
+ }
2629
+ function detectType(state, object2, explicit) {
2630
+ var _result, typeList, index, length, type, style;
2631
+ typeList = explicit ? state.explicitTypes : state.implicitTypes;
2632
+ for (index = 0, length = typeList.length; index < length; index += 1) {
2633
+ type = typeList[index];
2634
+ if ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object2 === "object" && object2 instanceof type.instanceOf) && (!type.predicate || type.predicate(object2))) {
2635
+ if (explicit) {
2636
+ if (type.multi && type.representName) {
2637
+ state.tag = type.representName(object2);
2638
+ } else {
2639
+ state.tag = type.tag;
2640
+ }
2641
+ } else {
2642
+ state.tag = "?";
2643
+ }
2644
+ if (type.represent) {
2645
+ style = state.styleMap[type.tag] || type.defaultStyle;
2646
+ if (_toString.call(type.represent) === "[object Function]") {
2647
+ _result = type.represent(object2, style);
2648
+ } else if (_hasOwnProperty.call(type.represent, style)) {
2649
+ _result = type.represent[style](object2, style);
2650
+ } else {
2651
+ throw new YAMLException("!<" + type.tag + '> tag resolver accepts not "' + style + '" style');
2652
+ }
2653
+ state.dump = _result;
2654
+ }
2655
+ return true;
2656
+ }
2657
+ }
2658
+ return false;
2659
+ }
2660
+ function writeNode(state, level, object2, block, compact, iskey, isblockseq) {
2661
+ state.tag = null;
2662
+ state.dump = object2;
2663
+ if (!detectType(state, object2, false)) {
2664
+ detectType(state, object2, true);
2665
+ }
2666
+ var type = _toString.call(state.dump);
2667
+ var inblock = block;
2668
+ var tagStr;
2669
+ if (block) {
2670
+ block = state.flowLevel < 0 || state.flowLevel > level;
2671
+ }
2672
+ var objectOrArray = type === "[object Object]" || type === "[object Array]", duplicateIndex, duplicate;
2673
+ if (objectOrArray) {
2674
+ duplicateIndex = state.duplicates.indexOf(object2);
2675
+ duplicate = duplicateIndex !== -1;
2676
+ }
2677
+ if (state.tag !== null && state.tag !== "?" || duplicate || state.indent !== 2 && level > 0) {
2678
+ compact = false;
2679
+ }
2680
+ if (duplicate && state.usedDuplicates[duplicateIndex]) {
2681
+ state.dump = "*ref_" + duplicateIndex;
2682
+ } else {
2683
+ if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
2684
+ state.usedDuplicates[duplicateIndex] = true;
2685
+ }
2686
+ if (type === "[object Object]") {
2687
+ if (block && Object.keys(state.dump).length !== 0) {
2688
+ writeBlockMapping(state, level, state.dump, compact);
2689
+ if (duplicate) {
2690
+ state.dump = "&ref_" + duplicateIndex + state.dump;
2691
+ }
2692
+ } else {
2693
+ writeFlowMapping(state, level, state.dump);
2694
+ if (duplicate) {
2695
+ state.dump = "&ref_" + duplicateIndex + " " + state.dump;
2696
+ }
2697
+ }
2698
+ } else if (type === "[object Array]") {
2699
+ if (block && state.dump.length !== 0) {
2700
+ if (state.noArrayIndent && !isblockseq && level > 0) {
2701
+ writeBlockSequence(state, level - 1, state.dump, compact);
2702
+ } else {
2703
+ writeBlockSequence(state, level, state.dump, compact);
2704
+ }
2705
+ if (duplicate) {
2706
+ state.dump = "&ref_" + duplicateIndex + state.dump;
2707
+ }
2708
+ } else {
2709
+ writeFlowSequence(state, level, state.dump);
2710
+ if (duplicate) {
2711
+ state.dump = "&ref_" + duplicateIndex + " " + state.dump;
2712
+ }
2713
+ }
2714
+ } else if (type === "[object String]") {
2715
+ if (state.tag !== "?") {
2716
+ writeScalar(state, state.dump, level, iskey, inblock);
2717
+ }
2718
+ } else if (type === "[object Undefined]") {
2719
+ return false;
2720
+ } else {
2721
+ if (state.skipInvalid) return false;
2722
+ throw new YAMLException("unacceptable kind of an object to dump " + type);
2723
+ }
2724
+ if (state.tag !== null && state.tag !== "?") {
2725
+ tagStr = encodeURI(
2726
+ state.tag[0] === "!" ? state.tag.slice(1) : state.tag
2727
+ ).replace(/!/g, "%21");
2728
+ if (state.tag[0] === "!") {
2729
+ tagStr = "!" + tagStr;
2730
+ } else if (tagStr.slice(0, 18) === "tag:yaml.org,2002:") {
2731
+ tagStr = "!!" + tagStr.slice(18);
2732
+ } else {
2733
+ tagStr = "!<" + tagStr + ">";
2734
+ }
2735
+ state.dump = tagStr + " " + state.dump;
2736
+ }
2737
+ }
2738
+ return true;
2739
+ }
2740
+ function getDuplicateReferences(object2, state) {
2741
+ var objects = [], duplicatesIndexes = [], index, length;
2742
+ inspectNode(object2, objects, duplicatesIndexes);
2743
+ for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
2744
+ state.duplicates.push(objects[duplicatesIndexes[index]]);
2745
+ }
2746
+ state.usedDuplicates = new Array(length);
2747
+ }
2748
+ function inspectNode(object2, objects, duplicatesIndexes) {
2749
+ var objectKeyList, index, length;
2750
+ if (object2 !== null && typeof object2 === "object") {
2751
+ index = objects.indexOf(object2);
2752
+ if (index !== -1) {
2753
+ if (duplicatesIndexes.indexOf(index) === -1) {
2754
+ duplicatesIndexes.push(index);
2755
+ }
2756
+ } else {
2757
+ objects.push(object2);
2758
+ if (Array.isArray(object2)) {
2759
+ for (index = 0, length = object2.length; index < length; index += 1) {
2760
+ inspectNode(object2[index], objects, duplicatesIndexes);
2761
+ }
2762
+ } else {
2763
+ objectKeyList = Object.keys(object2);
2764
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
2765
+ inspectNode(object2[objectKeyList[index]], objects, duplicatesIndexes);
2766
+ }
2767
+ }
2768
+ }
2769
+ }
2770
+ }
2771
+ function dump(input, options) {
2772
+ options = options || {};
2773
+ var state = new State(options);
2774
+ if (!state.noRefs) getDuplicateReferences(input, state);
2775
+ var value = input;
2776
+ if (state.replacer) {
2777
+ value = state.replacer.call({ "": value }, "", value);
2778
+ }
2779
+ if (writeNode(state, 0, value, true, true)) return state.dump + "\n";
2780
+ return "";
2781
+ }
2782
+ module2.exports.dump = dump;
2783
+ }
2784
+ });
2785
+
2786
+ // node_modules/js-yaml/index.js
2787
+ var require_js_yaml = __commonJS({
2788
+ "node_modules/js-yaml/index.js"(exports2, module2) {
2789
+ "use strict";
2790
+ var loader = require_loader();
2791
+ var dumper = require_dumper();
2792
+ function renamed(from, to) {
2793
+ return function() {
2794
+ throw new Error("Function yaml." + from + " is removed in js-yaml 4. Use yaml." + to + " instead, which is now safe by default.");
2795
+ };
2796
+ }
2797
+ module2.exports.Type = require_type();
2798
+ module2.exports.Schema = require_schema();
2799
+ module2.exports.FAILSAFE_SCHEMA = require_failsafe();
2800
+ module2.exports.JSON_SCHEMA = require_json();
2801
+ module2.exports.CORE_SCHEMA = require_core();
2802
+ module2.exports.DEFAULT_SCHEMA = require_default();
2803
+ module2.exports.load = loader.load;
2804
+ module2.exports.loadAll = loader.loadAll;
2805
+ module2.exports.dump = dumper.dump;
2806
+ module2.exports.YAMLException = require_exception();
2807
+ module2.exports.types = {
2808
+ binary: require_binary(),
2809
+ float: require_float(),
2810
+ map: require_map(),
2811
+ null: require_null(),
2812
+ pairs: require_pairs(),
2813
+ set: require_set(),
2814
+ timestamp: require_timestamp(),
2815
+ bool: require_bool(),
2816
+ int: require_int(),
2817
+ merge: require_merge(),
2818
+ omap: require_omap(),
2819
+ seq: require_seq(),
2820
+ str: require_str()
2821
+ };
2822
+ module2.exports.safeLoad = renamed("safeLoad", "load");
2823
+ module2.exports.safeLoadAll = renamed("safeLoadAll", "loadAll");
2824
+ module2.exports.safeDump = renamed("safeDump", "dump");
2825
+ }
2826
+ });
2827
+
32
2828
  // node_modules/chardet/lib/fs/node.js
33
2829
  var require_node = __commonJS({
34
2830
  "node_modules/chardet/lib/fs/node.js"(exports2, module2) {
@@ -5607,10 +8403,10 @@ var require_lib = __commonJS({
5607
8403
  exports2.analyse = analyse;
5608
8404
  var detectFile = (filepath, opts = {}) => new Promise((resolve, reject) => {
5609
8405
  let fd;
5610
- const fs12 = (0, node_1.default)();
8406
+ const fs20 = (0, node_1.default)();
5611
8407
  const handler = (err, buffer) => {
5612
8408
  if (fd) {
5613
- fs12.closeSync(fd);
8409
+ fs20.closeSync(fd);
5614
8410
  }
5615
8411
  if (err) {
5616
8412
  reject(err);
@@ -5622,9 +8418,9 @@ var require_lib = __commonJS({
5622
8418
  };
5623
8419
  const sampleSize = (opts === null || opts === void 0 ? void 0 : opts.sampleSize) || 0;
5624
8420
  if (sampleSize > 0) {
5625
- fd = fs12.openSync(filepath, "r");
8421
+ fd = fs20.openSync(filepath, "r");
5626
8422
  let sample = Buffer.allocUnsafe(sampleSize);
5627
- fs12.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
8423
+ fs20.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
5628
8424
  if (err) {
5629
8425
  handler(err, null);
5630
8426
  } else {
@@ -5636,22 +8432,22 @@ var require_lib = __commonJS({
5636
8432
  });
5637
8433
  return;
5638
8434
  }
5639
- fs12.readFile(filepath, handler);
8435
+ fs20.readFile(filepath, handler);
5640
8436
  });
5641
8437
  exports2.detectFile = detectFile;
5642
8438
  var detectFileSync = (filepath, opts = {}) => {
5643
- const fs12 = (0, node_1.default)();
8439
+ const fs20 = (0, node_1.default)();
5644
8440
  if (opts && opts.sampleSize) {
5645
- const fd = fs12.openSync(filepath, "r");
8441
+ const fd = fs20.openSync(filepath, "r");
5646
8442
  let sample = Buffer.allocUnsafe(opts.sampleSize);
5647
- const bytesRead = fs12.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
8443
+ const bytesRead = fs20.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
5648
8444
  if (bytesRead < opts.sampleSize) {
5649
8445
  sample = sample.subarray(0, bytesRead);
5650
8446
  }
5651
- fs12.closeSync(fd);
8447
+ fs20.closeSync(fd);
5652
8448
  return (0, exports2.detect)(sample);
5653
8449
  }
5654
- return (0, exports2.detect)(fs12.readFileSync(filepath));
8450
+ return (0, exports2.detect)(fs20.readFileSync(filepath));
5655
8451
  };
5656
8452
  exports2.detectFileSync = detectFileSync;
5657
8453
  exports2.default = {
@@ -5760,6 +8556,9 @@ function getCodePath() {
5760
8556
  }
5761
8557
  return import_path2.default.resolve(dir, "../../../");
5762
8558
  }
8559
+ function getWorkspacePath() {
8560
+ return WORKSPACE_DIR;
8561
+ }
5763
8562
  function getConfigPath() {
5764
8563
  return import_path2.default.join(HOME_DIR, "config.json5");
5765
8564
  }
@@ -5773,6 +8572,10 @@ function getSessionPath(agentId) {
5773
8572
  const sessionsPath = getSessionsPath();
5774
8573
  return import_path2.default.join(sessionsPath, agentId);
5775
8574
  }
8575
+ function getSessionMsgQueuePath(agentId) {
8576
+ const sessionDir = getSessionPath(agentId);
8577
+ return import_path2.default.join(sessionDir, "main-msg-queue.json");
8578
+ }
5776
8579
  function getUserStorePath() {
5777
8580
  const userPath = getUserPath();
5778
8581
  const cachePath = import_path2.default.join(userPath, "cache");
@@ -5896,11 +8699,11 @@ async function startServer(options = {}) {
5896
8699
  var import_ws2 = require("ws");
5897
8700
 
5898
8701
  // src/cli/cli-utils/init-agent.ts
5899
- var import_fs_extra10 = __toESM(require("fs-extra"));
5900
- var import_path7 = __toESM(require("path"));
8702
+ var import_fs_extra17 = __toESM(require("fs-extra"));
8703
+ var import_path12 = __toESM(require("path"));
5901
8704
 
5902
8705
  // src/agent/AIAgent/index.ts
5903
- var import_langchain6 = require("langchain");
8706
+ var import_langchain16 = require("langchain");
5904
8707
  var import_deepagents = require("deepagents");
5905
8708
 
5906
8709
  // src/agent/AIAgent/utils/langgraph-checkpoint-filesystem/filesystem-saver.ts
@@ -6713,10 +9516,10 @@ function mergeDefs(...defs) {
6713
9516
  function cloneDef(schema) {
6714
9517
  return mergeDefs(schema._zod.def);
6715
9518
  }
6716
- function getElementAtPath(obj, path8) {
6717
- if (!path8)
9519
+ function getElementAtPath(obj, path14) {
9520
+ if (!path14)
6718
9521
  return obj;
6719
- return path8.reduce((acc, key) => acc?.[key], obj);
9522
+ return path14.reduce((acc, key) => acc?.[key], obj);
6720
9523
  }
6721
9524
  function promiseAllObject(promisesObj) {
6722
9525
  const keys = Object.keys(promisesObj);
@@ -7125,11 +9928,11 @@ function explicitlyAborted(x, startIndex = 0) {
7125
9928
  }
7126
9929
  return false;
7127
9930
  }
7128
- function prefixIssues(path8, issues) {
9931
+ function prefixIssues(path14, issues) {
7129
9932
  return issues.map((iss) => {
7130
9933
  var _a3;
7131
9934
  (_a3 = iss).path ?? (_a3.path = []);
7132
- iss.path.unshift(path8);
9935
+ iss.path.unshift(path14);
7133
9936
  return iss;
7134
9937
  });
7135
9938
  }
@@ -7276,16 +10079,16 @@ function flattenError(error51, mapper = (issue2) => issue2.message) {
7276
10079
  }
7277
10080
  function formatError(error51, mapper = (issue2) => issue2.message) {
7278
10081
  const fieldErrors = { _errors: [] };
7279
- const processError = (error52, path8 = []) => {
10082
+ const processError = (error52, path14 = []) => {
7280
10083
  for (const issue2 of error52.issues) {
7281
10084
  if (issue2.code === "invalid_union" && issue2.errors.length) {
7282
- issue2.errors.map((issues) => processError({ issues }, [...path8, ...issue2.path]));
10085
+ issue2.errors.map((issues) => processError({ issues }, [...path14, ...issue2.path]));
7283
10086
  } else if (issue2.code === "invalid_key") {
7284
- processError({ issues: issue2.issues }, [...path8, ...issue2.path]);
10087
+ processError({ issues: issue2.issues }, [...path14, ...issue2.path]);
7285
10088
  } else if (issue2.code === "invalid_element") {
7286
- processError({ issues: issue2.issues }, [...path8, ...issue2.path]);
10089
+ processError({ issues: issue2.issues }, [...path14, ...issue2.path]);
7287
10090
  } else {
7288
- const fullpath = [...path8, ...issue2.path];
10091
+ const fullpath = [...path14, ...issue2.path];
7289
10092
  if (fullpath.length === 0) {
7290
10093
  fieldErrors._errors.push(mapper(issue2));
7291
10094
  } else {
@@ -7312,17 +10115,17 @@ function formatError(error51, mapper = (issue2) => issue2.message) {
7312
10115
  }
7313
10116
  function treeifyError(error51, mapper = (issue2) => issue2.message) {
7314
10117
  const result = { errors: [] };
7315
- const processError = (error52, path8 = []) => {
10118
+ const processError = (error52, path14 = []) => {
7316
10119
  var _a3, _b;
7317
10120
  for (const issue2 of error52.issues) {
7318
10121
  if (issue2.code === "invalid_union" && issue2.errors.length) {
7319
- issue2.errors.map((issues) => processError({ issues }, [...path8, ...issue2.path]));
10122
+ issue2.errors.map((issues) => processError({ issues }, [...path14, ...issue2.path]));
7320
10123
  } else if (issue2.code === "invalid_key") {
7321
- processError({ issues: issue2.issues }, [...path8, ...issue2.path]);
10124
+ processError({ issues: issue2.issues }, [...path14, ...issue2.path]);
7322
10125
  } else if (issue2.code === "invalid_element") {
7323
- processError({ issues: issue2.issues }, [...path8, ...issue2.path]);
10126
+ processError({ issues: issue2.issues }, [...path14, ...issue2.path]);
7324
10127
  } else {
7325
- const fullpath = [...path8, ...issue2.path];
10128
+ const fullpath = [...path14, ...issue2.path];
7326
10129
  if (fullpath.length === 0) {
7327
10130
  result.errors.push(mapper(issue2));
7328
10131
  continue;
@@ -7354,8 +10157,8 @@ function treeifyError(error51, mapper = (issue2) => issue2.message) {
7354
10157
  }
7355
10158
  function toDotPath(_path) {
7356
10159
  const segs = [];
7357
- const path8 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
7358
- for (const seg of path8) {
10160
+ const path14 = _path.map((seg) => typeof seg === "object" ? seg.key : seg);
10161
+ for (const seg of path14) {
7359
10162
  if (typeof seg === "number")
7360
10163
  segs.push(`[${seg}]`);
7361
10164
  else if (typeof seg === "symbol")
@@ -20047,13 +22850,13 @@ function resolveRef(ref, ctx) {
20047
22850
  if (!ref.startsWith("#")) {
20048
22851
  throw new Error("External $ref is not supported, only local refs (#/...) are allowed");
20049
22852
  }
20050
- const path8 = ref.slice(1).split("/").filter(Boolean);
20051
- if (path8.length === 0) {
22853
+ const path14 = ref.slice(1).split("/").filter(Boolean);
22854
+ if (path14.length === 0) {
20052
22855
  return ctx.rootSchema;
20053
22856
  }
20054
22857
  const defsKey = ctx.version === "draft-2020-12" ? "$defs" : "definitions";
20055
- if (path8[0] === defsKey) {
20056
- const key = path8[1];
22858
+ if (path14[0] === defsKey) {
22859
+ const key = path14[1];
20057
22860
  if (!key || !ctx.defs[key]) {
20058
22861
  throw new Error(`Reference not found: ${ref}`);
20059
22862
  }
@@ -20467,12 +23270,179 @@ var import_eventemitter_super = require("eventemitter-super");
20467
23270
  // src/agent/AIAgent/middleware/eventEmitMiddleware.ts
20468
23271
  var import_langchain = require("langchain");
20469
23272
 
23273
+ // src/agent/AIAgent/utils/skill-parser.ts
23274
+ var fs5 = require("fs-extra");
23275
+ var path5 = require("path");
23276
+ var yaml = require_js_yaml();
23277
+
23278
+ // src/agent/AIAgent/system-prompt.ts
23279
+ var import_fs_extra4 = __toESM(require("fs-extra"));
23280
+
20470
23281
  // src/agent/tools/executeCommand.ts
20471
23282
  var import_child_process = require("child_process");
20472
23283
  var import_chardet = __toESM(require_lib());
20473
23284
  var import_os3 = __toESM(require("os"));
20474
23285
  var import_iconv_lite = __toESM(require("iconv-lite"));
23286
+ var import_langchain3 = require("langchain");
23287
+
23288
+ // src/agent/tools/utils.ts
20475
23289
  var import_langchain2 = require("langchain");
23290
+ var import_fs_extra6 = __toESM(require("fs-extra"));
23291
+
23292
+ // src/agent/tools/fileTools.ts
23293
+ var import_fs_extra5 = __toESM(require("fs-extra"));
23294
+ var import_path5 = __toESM(require("path"));
23295
+ var DEFAULT_MAX_OUTPUT = 6e4;
23296
+ var TEXT_FILE_EXTENSIONS = /* @__PURE__ */ new Set([
23297
+ ".txt",
23298
+ ".md",
23299
+ ".json",
23300
+ ".json5",
23301
+ ".js",
23302
+ ".jsx",
23303
+ ".ts",
23304
+ ".tsx",
23305
+ ".mjs",
23306
+ ".cjs",
23307
+ ".css",
23308
+ ".less",
23309
+ ".scss",
23310
+ ".html",
23311
+ ".xml",
23312
+ ".yaml",
23313
+ ".yml",
23314
+ ".toml",
23315
+ ".ini",
23316
+ ".env",
23317
+ ".gitignore",
23318
+ ".sql",
23319
+ ".py",
23320
+ ".java",
23321
+ ".c",
23322
+ ".cpp",
23323
+ ".h",
23324
+ ".hpp",
23325
+ ".cs",
23326
+ ".go",
23327
+ ".rs",
23328
+ ".php",
23329
+ ".rb",
23330
+ ".sh",
23331
+ ".bat",
23332
+ ".ps1",
23333
+ ".vue",
23334
+ ".svelte",
23335
+ ".log",
23336
+ ".csv"
23337
+ ]);
23338
+ function resolveWorkspacePath(inputPath, cwd = getTrueCwd()) {
23339
+ if (!inputPath?.trim()) {
23340
+ throw new Error("\u8DEF\u5F84\u4E0D\u80FD\u4E3A\u7A7A");
23341
+ }
23342
+ return import_path5.default.resolve(cwd, inputPath);
23343
+ }
23344
+ function normalizePathForMatch(filePath) {
23345
+ return filePath.replace(/\\/g, "/");
23346
+ }
23347
+ function truncateOutput(content, maxLength = DEFAULT_MAX_OUTPUT) {
23348
+ if (content.length <= maxLength) {
23349
+ return content;
23350
+ }
23351
+ return `${content.slice(0, maxLength)}
23352
+
23353
+ [\u5185\u5BB9\u5DF2\u622A\u65AD\uFF0C\u4EC5\u663E\u793A\u524D ${maxLength} \u4E2A\u5B57\u7B26\uFF0C\u603B\u957F\u5EA6 ${content.length} \u4E2A\u5B57\u7B26]`;
23354
+ }
23355
+ function isProbablyTextFile(filePath) {
23356
+ const ext = import_path5.default.extname(filePath).toLowerCase();
23357
+ const base = import_path5.default.basename(filePath).toLowerCase();
23358
+ return TEXT_FILE_EXTENSIONS.has(ext) || TEXT_FILE_EXTENSIONS.has(base) || base.startsWith(".env");
23359
+ }
23360
+ function globToRegExp(pattern) {
23361
+ const normalized = normalizePathForMatch(pattern);
23362
+ let regex = "^";
23363
+ for (let i = 0; i < normalized.length; i++) {
23364
+ const char = normalized[i];
23365
+ const next = normalized[i + 1];
23366
+ if (char === "*") {
23367
+ if (next === "*") {
23368
+ const after = normalized[i + 2];
23369
+ if (after === "/") {
23370
+ regex += "(?:.*/)?";
23371
+ i += 2;
23372
+ } else {
23373
+ regex += ".*";
23374
+ i += 1;
23375
+ }
23376
+ } else {
23377
+ regex += "[^/]*";
23378
+ }
23379
+ } else if (char === "?") {
23380
+ regex += "[^/]";
23381
+ } else {
23382
+ regex += char.replace(/[|\\{}()[\]^$+?.]/g, "\\$&");
23383
+ }
23384
+ }
23385
+ regex += "$";
23386
+ return new RegExp(regex, "i");
23387
+ }
23388
+ function matchesGlob(relativePath, pattern) {
23389
+ return globToRegExp(pattern).test(normalizePathForMatch(relativePath));
23390
+ }
23391
+ async function walkFiles(rootDir, options = {}) {
23392
+ const files = [];
23393
+ const includeHidden = options.includeHidden ?? false;
23394
+ const maxFiles = options.maxFiles ?? 5e3;
23395
+ async function walk(currentDir) {
23396
+ if (files.length >= maxFiles) {
23397
+ return;
23398
+ }
23399
+ const entries = await import_fs_extra5.default.readdir(currentDir, { withFileTypes: true });
23400
+ for (const entry of entries) {
23401
+ if (files.length >= maxFiles) {
23402
+ return;
23403
+ }
23404
+ if (!includeHidden && entry.name.startsWith(".")) {
23405
+ continue;
23406
+ }
23407
+ if (entry.name === "node_modules" || entry.name === "dist" || entry.name === ".git") {
23408
+ continue;
23409
+ }
23410
+ const fullPath = import_path5.default.join(currentDir, entry.name);
23411
+ if (entry.isDirectory()) {
23412
+ await walk(fullPath);
23413
+ } else if (entry.isFile()) {
23414
+ files.push(fullPath);
23415
+ }
23416
+ }
23417
+ }
23418
+ await walk(rootDir);
23419
+ return files;
23420
+ }
23421
+ function formatJson(data) {
23422
+ return JSON.stringify(data, null, 2);
23423
+ }
23424
+
23425
+ // src/agent/tools/utils.ts
23426
+ function successResult(data) {
23427
+ return { success: true, data };
23428
+ }
23429
+ function errorResult(error51, data) {
23430
+ const message = error51 instanceof Error ? error51.message : String(error51);
23431
+ return data === void 0 ? { success: false, error: message } : { success: false, error: message, data };
23432
+ }
23433
+ function serializeToolResult(result) {
23434
+ return truncateOutput(JSON.stringify(result, null, 2));
23435
+ }
23436
+ async function safeTool(handler) {
23437
+ try {
23438
+ const data = await handler();
23439
+ return serializeToolResult(successResult(data));
23440
+ } catch (error51) {
23441
+ return serializeToolResult(errorResult(error51));
23442
+ }
23443
+ }
23444
+
23445
+ // src/agent/tools/executeCommand.ts
20476
23446
  function executeCommand(command, timeout = -1, cwd) {
20477
23447
  logSuccess(`Executing system command: ${command}; ${timeout > 0 ? `Timeout: ${timeout}ms` : "No timeout limit"}`);
20478
23448
  try {
@@ -20492,16 +23462,14 @@ function executeCommand(command, timeout = -1, cwd) {
20492
23462
  const stderr = import_iconv_lite.default.decode(result.stderr, targetEncoding);
20493
23463
  const code = result.status;
20494
23464
  if (stderr && !stderr.trim().startsWith("WARNING")) {
20495
- const error51 = new Error(`Command failed (code ${code}): ${stderr.trim()}`);
20496
- logError(`Execute error: ${error51.message}`);
20497
- return `Execute error: ${error51.message}`;
23465
+ throw new Error(`Command failed (code ${code}): ${stderr.trim()}`);
20498
23466
  }
20499
23467
  logSuccess(`${stdout}
20500
23468
  Command executed successfully`);
20501
23469
  return stdout || "Command executed successfully";
20502
- } catch (decodeError) {
20503
- logError(`Encoding convert error: ${decodeError.message}`);
20504
- return `Failed to parse command output: ${decodeError.message}`;
23470
+ } catch (error51) {
23471
+ logError(`Execute error: ${error51.message}`);
23472
+ throw error51;
20505
23473
  }
20506
23474
  }
20507
23475
  function detectEncoding(buffer) {
@@ -20518,24 +23486,19 @@ function detectEncoding(buffer) {
20518
23486
  }
20519
23487
  return import_os3.default.platform() === "win32" ? "gbk" : "utf-8";
20520
23488
  }
20521
- var executeCommandTool = (0, import_langchain2.tool)(
20522
- ({ command, timeout }, config2) => {
20523
- return executeCommand(command, timeout);
20524
- },
20525
- {
20526
- name: "execute_command",
20527
- description: `\u5728\u672C\u5730\u7CFB\u7EDF(${import_os3.default.platform()})\u4E0A\u6267\u884C\u4E00\u6761 shell \u547D\u4EE4\u5E76\u8FD4\u56DE\u8F93\u51FA\u7ED3\u679C\u3002\u9002\u7528\u4E8Erunning\u811A\u672C\u3001\u64CD\u4F5C\u6587\u4EF6\u7CFB\u7EDF\u3001\u542F\u52A8\u8FDB\u7A0B\u7B49\u573A\u666F\u3002\u5FC5\u987B\u6CE8\u610F\u64CD\u4F5C\u7CFB\u7EDF\u7684\u517C\u5BB9\u6027\uFF0C\u5F53\u524D\u64CD\u4F5C\u7CFB\u7EDF\u4E3A ${import_os3.default.platform()}\u3002`,
20528
- schema: external_exports.object({
20529
- command: external_exports.string().describe("\u8981\u6267\u884C\u7684 shell \u547D\u4EE4"),
20530
- timeout: external_exports.number().default(-1).describe("\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\uFF0C-1 \u8868\u793A\u4E0D\u9650\u5236")
20531
- })
20532
- }
20533
- );
23489
+ var executeCommandTool = (0, import_langchain3.tool)(({ command, timeout }) => safeTool(() => executeCommand(command, timeout)), {
23490
+ name: "execute_command",
23491
+ description: `\u5728\u672C\u5730\u7CFB\u7EDF(${import_os3.default.platform()})\u4E0A\u6267\u884C\u4E00\u6761 shell \u547D\u4EE4\u5E76\u8FD4\u56DE\u8F93\u51FA\u7ED3\u679C\u3002\u9002\u7528\u4E8Erunning\u811A\u672C\u3001\u64CD\u4F5C\u6587\u4EF6\u7CFB\u7EDF\u3001\u542F\u52A8\u8FDB\u7A0B\u7B49\u573A\u666F\u3002\u5FC5\u987B\u6CE8\u610F\u64CD\u4F5C\u7CFB\u7EDF\u7684\u517C\u5BB9\u6027\uFF0C\u5F53\u524D\u64CD\u4F5C\u7CFB\u7EDF\u4E3A ${import_os3.default.platform()}\u3002`,
23492
+ schema: external_exports.object({
23493
+ command: external_exports.string().describe("\u8981\u6267\u884C\u7684 shell \u547D\u4EE4"),
23494
+ timeout: external_exports.number().default(-1).describe("\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09\uFF0C-1 \u8868\u793A\u4E0D\u9650\u5236")
23495
+ })
23496
+ });
20534
23497
 
20535
23498
  // src/agent/tools/executeJSCode.ts
20536
- var import_langchain3 = require("langchain");
20537
- var import_path5 = __toESM(require("path"));
20538
- var import_fs_extra4 = __toESM(require("fs-extra"));
23499
+ var import_langchain4 = require("langchain");
23500
+ var import_path6 = __toESM(require("path"));
23501
+ var import_fs_extra7 = __toESM(require("fs-extra"));
20539
23502
  var _require = require;
20540
23503
  async function executeJSCode(code) {
20541
23504
  logInfo("Executing JavaScript code: ");
@@ -20554,25 +23517,25 @@ async function executeJSCode(code) {
20554
23517
  throw error51;
20555
23518
  }
20556
23519
  }
20557
- var getInstalledPackagesTool = (0, import_langchain3.tool)(
20558
- async () => {
20559
- const packageJson = import_path5.default.join(getCodePath(), "./package.json");
20560
- const pkg = import_fs_extra4.default.readJsonSync(packageJson);
20561
- return JSON.stringify(pkg.dependencies);
20562
- },
23520
+ var getInstalledPackagesTool = (0, import_langchain4.tool)(
23521
+ async () => safeTool(() => {
23522
+ const packageJson = import_path6.default.join(getCodePath(), "./package.json");
23523
+ const pkg = import_fs_extra7.default.readJsonSync(packageJson);
23524
+ return pkg.dependencies;
23525
+ }),
20563
23526
  {
20564
23527
  name: "get_installed_packages",
20565
23528
  description: "\u83B7\u53D6 deepfish-ai CLI \u5DE5\u5177\u81EA\u8EAB\u5DF2\u5B89\u88C5\u7684 npm \u4F9D\u8D56\u5305\u5217\u8868",
20566
23529
  schema: external_exports.object({})
20567
23530
  }
20568
23531
  );
20569
- var checkPackageInstalledTool = (0, import_langchain3.tool)(
20570
- async ({ packageName }) => {
20571
- const packageJson = import_path5.default.join(getCodePath(), "./package.json");
20572
- const pkg = import_fs_extra4.default.readJsonSync(packageJson);
23532
+ var checkPackageInstalledTool = (0, import_langchain4.tool)(
23533
+ async ({ packageName }) => safeTool(() => {
23534
+ const packageJson = import_path6.default.join(getCodePath(), "./package.json");
23535
+ const pkg = import_fs_extra7.default.readJsonSync(packageJson);
20573
23536
  const installed = Object.prototype.hasOwnProperty.call(pkg.dependencies, packageName);
20574
- return installed ? `Package "${packageName}" is installed.` : `Package "${packageName}" is NOT installed.`;
20575
- },
23537
+ return { packageName, installed };
23538
+ }),
20576
23539
  {
20577
23540
  name: "check_package_installed",
20578
23541
  description: "\u68C0\u67E5\u6307\u5B9A\u7684 npm \u5305\u662F\u5426\u5DF2\u5728 deepfish-ai CLI \u5DE5\u5177\u4E2D\u5B89\u88C5",
@@ -20581,15 +23544,15 @@ var checkPackageInstalledTool = (0, import_langchain3.tool)(
20581
23544
  })
20582
23545
  }
20583
23546
  );
20584
- var installPackageTool = (0, import_langchain3.tool)(
20585
- async ({ packageName }) => {
20586
- const packageJson = import_path5.default.join(getCodePath(), "./package.json");
20587
- const pkg = import_fs_extra4.default.readJsonSync(packageJson);
23547
+ var installPackageTool = (0, import_langchain4.tool)(
23548
+ async ({ packageName }) => safeTool(() => {
23549
+ const packageJson = import_path6.default.join(getCodePath(), "./package.json");
23550
+ const pkg = import_fs_extra7.default.readJsonSync(packageJson);
20588
23551
  if (Object.prototype.hasOwnProperty.call(pkg.dependencies, packageName)) {
20589
23552
  return `Package "${packageName}" is already installed.`;
20590
23553
  }
20591
23554
  return executeCommand(`npm install ${packageName}`, 12e4, getCodePath());
20592
- },
23555
+ }),
20593
23556
  {
20594
23557
  name: "install_package",
20595
23558
  description: "\u5728 deepfish-ai CLI \u5DE5\u5177\u4E2D\u5B89\u88C5\u6307\u5B9A\u7684 npm \u5305\uFF0C\u4F7F execute_js_code \u53EF\u4EE5 require \u8BE5\u5305",
@@ -20598,52 +23561,47 @@ var installPackageTool = (0, import_langchain3.tool)(
20598
23561
  })
20599
23562
  }
20600
23563
  );
20601
- var executeJSCodeTool = (0, import_langchain3.tool)(
20602
- async ({ code }) => {
20603
- const result = await executeJSCode(code);
20604
- return result;
20605
- },
20606
- {
20607
- name: "execute_js_code",
20608
- description: `\u5728\u5F53\u524D Node.js \u73AF\u5883\u4E2D\u6267\u884C\u4E00\u6BB5 JavaScript \u4EE3\u7801\u5B57\u7B26\u4E32\u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C\u3002\u6CE8\u610F\uFF1A\u4EE3\u7801\u5FC5\u987B\u5305\u542B\u4E00\u4E2A__main()\u51FD\u6570\u4F5C\u4E3A\u6267\u884C\u5165\u53E3\uFF0C__main()\u51FD\u6570\u5185\u5FC5\u987B\u662F\u4E00\u4E2A\u4F7F\u7528async\u524D\u7F00\u7684\u51FD\u6570\u3002\u793A\u4F8B\u4EE3\u7801\uFF1A
23564
+ var executeJSCodeTool = (0, import_langchain4.tool)(async ({ code }) => safeTool(() => executeJSCode(code)), {
23565
+ name: "execute_js_code",
23566
+ description: `\u6267\u884C\u4E00\u6BB5Node.js\u4EE3\u7801\u5E76\u8FD4\u56DE\u6267\u884C\u7ED3\u679C\u3002\u6CE8\u610F\uFF1A\u4EE3\u7801\u5FC5\u987B\u5305\u542B\u4E00\u4E2A__main()\u51FD\u6570\u4F5C\u4E3A\u6267\u884C\u5165\u53E3\uFF0C__main()\u51FD\u6570\u5185\u5FC5\u987B\u662F\u4E00\u4E2A\u4F7F\u7528async\u524D\u7F00\u7684\u51FD\u6570\u3002\u793A\u4F8B\u4EE3\u7801\uFF1A
20609
23567
  async function __main() {
20610
23568
  const data = await fs.readFile("data.txt", "utf-8")
20611
23569
  return data
20612
23570
  }
20613
23571
  `,
20614
- schema: external_exports.object({
20615
- code: external_exports.string().describe("\u8981\u6267\u884C\u7684 JavaScript \u4EE3\u7801")
20616
- })
20617
- }
20618
- );
23572
+ schema: external_exports.object({
23573
+ code: external_exports.string().describe("\u8981\u6267\u884C\u7684Node.js\u4EE3\u7801")
23574
+ })
23575
+ });
23576
+ var packageTools = [getInstalledPackagesTool, checkPackageInstalledTool, installPackageTool, executeJSCodeTool];
20619
23577
 
20620
23578
  // src/cli/cli-utils/UserCache.ts
20621
- var import_path6 = __toESM(require("path"));
20622
- var import_fs_extra5 = __toESM(require("fs-extra"));
23579
+ var import_path7 = __toESM(require("path"));
23580
+ var import_fs_extra8 = __toESM(require("fs-extra"));
20623
23581
  var import_crypto = require("crypto");
20624
23582
  var UserCache = class {
20625
23583
  cacheDir;
20626
23584
  catalogPath;
20627
23585
  constructor() {
20628
23586
  const cacheDir = getUserStorePath();
20629
- const catalog = import_path6.default.join(cacheDir, "catalog.json");
20630
- import_fs_extra5.default.ensureFileSync(catalog);
23587
+ const catalog = import_path7.default.join(cacheDir, "catalog.json");
23588
+ import_fs_extra8.default.ensureFileSync(catalog);
20631
23589
  this.cacheDir = cacheDir;
20632
23590
  this.catalogPath = catalog;
20633
23591
  }
20634
23592
  getCatalog() {
20635
- return import_fs_extra5.default.readJSONSync(this.catalogPath, { throws: false }) || [];
23593
+ return import_fs_extra8.default.readJSONSync(this.catalogPath, { throws: false }) || [];
20636
23594
  }
20637
23595
  getCatalogFilePath() {
20638
23596
  return this.catalogPath;
20639
23597
  }
20640
23598
  updateCatalog(catalog) {
20641
- import_fs_extra5.default.writeJSONSync(this.catalogPath, catalog);
23599
+ import_fs_extra8.default.writeJSONSync(this.catalogPath, catalog);
20642
23600
  }
20643
23601
  add(description, content) {
20644
23602
  const id = (0, import_crypto.randomUUID)();
20645
- const filePath = import_path6.default.join(this.cacheDir, `${id}.md`);
20646
- import_fs_extra5.default.writeFileSync(filePath, content, "utf-8");
23603
+ const filePath = import_path7.default.join(this.cacheDir, `${id}.md`);
23604
+ import_fs_extra8.default.writeFileSync(filePath, content, "utf-8");
20647
23605
  const catalog = this.getCatalog();
20648
23606
  catalog.push({ id, description });
20649
23607
  this.updateCatalog(catalog);
@@ -20652,9 +23610,9 @@ var UserCache = class {
20652
23610
  const catalog = this.getCatalog();
20653
23611
  const item = catalog.find((item2) => item2.id === id);
20654
23612
  if (item) {
20655
- const filePath = import_path6.default.join(this.cacheDir, `${id}.md`);
20656
- if (import_fs_extra5.default.existsSync(filePath)) {
20657
- return { description: item.description, content: import_fs_extra5.default.readFileSync(filePath, "utf-8") };
23613
+ const filePath = import_path7.default.join(this.cacheDir, `${id}.md`);
23614
+ if (import_fs_extra8.default.existsSync(filePath)) {
23615
+ return { description: item.description, content: import_fs_extra8.default.readFileSync(filePath, "utf-8") };
20658
23616
  }
20659
23617
  }
20660
23618
  return { description: "", content: "" };
@@ -20677,9 +23635,9 @@ var UserCache = class {
20677
23635
  }
20678
23636
  catalog.splice(idx, 1);
20679
23637
  this.updateCatalog(catalog);
20680
- const filePath = import_path6.default.join(this.cacheDir, `${id}.md`);
20681
- if (import_fs_extra5.default.existsSync(filePath)) {
20682
- import_fs_extra5.default.removeSync(filePath);
23638
+ const filePath = import_path7.default.join(this.cacheDir, `${id}.md`);
23639
+ if (import_fs_extra8.default.existsSync(filePath)) {
23640
+ import_fs_extra8.default.removeSync(filePath);
20683
23641
  }
20684
23642
  return true;
20685
23643
  }
@@ -20697,20 +23655,20 @@ var UserCache = class {
20697
23655
  if (!item) {
20698
23656
  return false;
20699
23657
  }
20700
- const filePath = import_path6.default.join(this.cacheDir, `${id}.md`);
20701
- import_fs_extra5.default.writeFileSync(filePath, content, "utf-8");
23658
+ const filePath = import_path7.default.join(this.cacheDir, `${id}.md`);
23659
+ import_fs_extra8.default.writeFileSync(filePath, content, "utf-8");
20702
23660
  return true;
20703
23661
  }
20704
23662
  };
20705
23663
 
20706
23664
  // src/agent/tools/learn-self.ts
20707
- var import_langchain4 = require("langchain");
23665
+ var import_langchain5 = require("langchain");
20708
23666
  var userCache = new UserCache();
20709
- var learnSelfTool = (0, import_langchain4.tool)(
20710
- ({ description, content }) => {
23667
+ var learnSelfTool = (0, import_langchain5.tool)(
23668
+ ({ description, content }) => safeTool(() => {
20711
23669
  userCache.add(description, content);
20712
23670
  return `\u5DF2\u7F13\u5B58\u89E3\u51B3\u65B9\u6848: ${description}`;
20713
- },
23671
+ }),
20714
23672
  {
20715
23673
  name: "learn_self",
20716
23674
  description: "\u5C06\u89E3\u51B3\u590D\u6742\u95EE\u9898\u7684\u65B9\u6848\u7F13\u5B58\u5230\u672C\u5730\u77E5\u8BC6\u5E93\u3002\u5F53\u4F60\u6210\u529F\u89E3\u51B3\u4E86\u4E00\u4E2A\u590D\u6742\u95EE\u9898\u540E\uFF0C\u8C03\u7528\u6B64\u5DE5\u5177\u4FDD\u5B58\u89E3\u51B3\u65B9\u6848\uFF0C\u4EE5\u4FBF\u5C06\u6765\u9047\u5230\u7C7B\u4F3C\u95EE\u9898\u65F6\u53EF\u4EE5\u590D\u7528\u3002description \u5FC5\u987B\u7B80\u6D01\uFF0C\u4E0D\u8D85\u8FC750\u5B57\uFF1Bcontent \u5FC5\u987B\u4F7F\u7528 Markdown \u683C\u5F0F\u7F16\u5199\uFF0C\u5305\u542B\u5B8C\u6574\u7684\u89E3\u51B3\u6B65\u9AA4\u548C\u5173\u952E\u4FE1\u606F\u3002",
@@ -20720,27 +23678,27 @@ var learnSelfTool = (0, import_langchain4.tool)(
20720
23678
  })
20721
23679
  }
20722
23680
  );
20723
- var getLearnedDetailTool = (0, import_langchain4.tool)(
20724
- ({ indexOrId }) => {
23681
+ var getLearnedDetailTool = (0, import_langchain5.tool)(
23682
+ ({ indexOrId }) => safeTool(() => {
20725
23683
  const index = Number(indexOrId);
20726
23684
  let item;
20727
23685
  if (!isNaN(index) && Number.isInteger(index)) {
20728
23686
  item = userCache.getByIndex(index);
20729
23687
  if (!item) {
20730
- return `\u65E0\u6548\u7684\u7D22\u5F15: ${indexOrId}\uFF0C\u8BF7\u8BFB\u53D6 catalog.json \u67E5\u770B\u6709\u6548\u7D22\u5F15\u3002`;
23688
+ throw new Error(`\u65E0\u6548\u7684\u7D22\u5F15: ${indexOrId}\uFF0C\u8BF7\u8BFB\u53D6 catalog.json \u67E5\u770B\u6709\u6548\u7D22\u5F15\u3002`);
20731
23689
  }
20732
23690
  } else {
20733
23691
  const catalog = userCache.list();
20734
23692
  item = catalog.find((c) => c.id === indexOrId);
20735
23693
  if (!item) {
20736
- return `\u672A\u627E\u5230 id \u4E3A "${indexOrId}" \u7684\u7F13\u5B58\u9879\uFF0C\u8BF7\u8BFB\u53D6 catalog.json \u67E5\u770B\u6240\u6709\u7F13\u5B58\u3002`;
23694
+ throw new Error(`\u672A\u627E\u5230 id \u4E3A "${indexOrId}" \u7684\u7F13\u5B58\u9879\uFF0C\u8BF7\u8BFB\u53D6 catalog.json \u67E5\u770B\u6240\u6709\u7F13\u5B58\u3002`);
20737
23695
  }
20738
23696
  }
20739
23697
  const detail = userCache.getContentById(item.id);
20740
23698
  return `## ${detail.description}
20741
23699
 
20742
23700
  ${detail.content}`;
20743
- },
23701
+ }),
20744
23702
  {
20745
23703
  name: "get_learned_detail",
20746
23704
  description: "\u8BFB\u53D6\u6307\u5B9A\u7F13\u5B58\u65B9\u6848\u7684\u5B8C\u6574\u8BE6\u7EC6\u4FE1\u606F\u3002\u4F20\u5165\u7D22\u5F15\u53F7\uFF08\u6570\u5B57\uFF09\u6216 id\uFF08uuid \u5B57\u7B26\u4E32\uFF09\u6765\u83B7\u53D6\u65B9\u6848\u7684\u5B8C\u6574\u5185\u5BB9\u3002",
@@ -20749,14 +23707,14 @@ ${detail.content}`;
20749
23707
  })
20750
23708
  }
20751
23709
  );
20752
- var updateLearnContentTool = (0, import_langchain4.tool)(
20753
- ({ id, content }) => {
23710
+ var updateLearnContentTool = (0, import_langchain5.tool)(
23711
+ ({ id, content }) => safeTool(() => {
20754
23712
  const success2 = userCache.update(id, content);
20755
23713
  if (!success2) {
20756
- return `\u66F4\u65B0\u5931\u8D25: \u672A\u627E\u5230 id \u4E3A "${id}" \u7684\u7F13\u5B58\u9879\uFF0C\u8BF7\u8BFB\u53D6 catalog.json \u67E5\u770B\u6240\u6709\u7F13\u5B58\u3002`;
23714
+ throw new Error(`\u66F4\u65B0\u5931\u8D25: \u672A\u627E\u5230 id \u4E3A "${id}" \u7684\u7F13\u5B58\u9879\uFF0C\u8BF7\u8BFB\u53D6 catalog.json \u67E5\u770B\u6240\u6709\u7F13\u5B58\u3002`);
20757
23715
  }
20758
23716
  return `\u5DF2\u66F4\u65B0\u7F13\u5B58\u65B9\u6848: ${id}`;
20759
- },
23717
+ }),
20760
23718
  {
20761
23719
  name: "update_learned_content",
20762
23720
  description: "\u66F4\u65B0\u5DF2\u6709\u7F13\u5B58\u65B9\u6848\u7684\u5185\u5BB9\u3002\u4F20\u5165\u7F13\u5B58\u9879\u7684 id\uFF08uuid \u5B57\u7B26\u4E32\uFF09\u548C\u65B0\u7684 Markdown \u5185\u5BB9\uFF0C\u8986\u76D6\u539F\u6709\u6587\u4EF6\u3002\u9002\u7528\u4E8E\u8865\u5145\u66F4\u591A\u7EC6\u8282\u6216\u4FEE\u6B63\u4E4B\u524D\u7684\u65B9\u6848\u3002",
@@ -20766,32 +23724,444 @@ var updateLearnContentTool = (0, import_langchain4.tool)(
20766
23724
  })
20767
23725
  }
20768
23726
  );
20769
- var getCatalogFilePathTool = (0, import_langchain4.tool)(
20770
- () => {
20771
- return userCache.getCatalogFilePath();
20772
- },
23727
+ var getCatalogFilePathTool = (0, import_langchain5.tool)(() => safeTool(() => userCache.getCatalogFilePath()), {
23728
+ name: "get_catalog_file_path",
23729
+ description: "\u83B7\u53D6\u7F13\u5B58\u7D22\u5F15\u6587\u4EF6 catalog.json \u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\u8BE5\u6587\u4EF6\u5305\u542B\u6240\u6709\u5DF2\u7F13\u5B58\u65B9\u6848\u7684 id \u548C description \u5217\u8868\u3002\u83B7\u53D6\u8DEF\u5F84\u540E\uFF0C\u4F7F\u7528 read_file \u5DE5\u5177\u8BFB\u53D6\u8BE5\u6587\u4EF6\u5373\u53EF\u67E5\u770B\u6240\u6709\u7F13\u5B58\u9879\u3002",
23730
+ schema: external_exports.object({})
23731
+ });
23732
+ var learnTools = [learnSelfTool, getLearnedDetailTool, updateLearnContentTool, getCatalogFilePathTool];
23733
+
23734
+ // src/agent/tools/mcp.ts
23735
+ var import_mcp_adapters = require("@langchain/mcp-adapters");
23736
+ var import_fs_extra9 = __toESM(require("fs-extra"));
23737
+ var import_langchain6 = require("langchain");
23738
+
23739
+ // src/agent/tools/edit.ts
23740
+ var import_fs_extra10 = __toESM(require("fs-extra"));
23741
+ var import_langchain7 = require("langchain");
23742
+ async function editFileByReplace(filePath, oldString, newString, replaceAll = false) {
23743
+ const absPath = resolveWorkspacePath(filePath);
23744
+ if (!await import_fs_extra10.default.pathExists(absPath)) {
23745
+ throw new Error(`\u6587\u4EF6\u4E0D\u5B58\u5728 ${absPath}`);
23746
+ }
23747
+ const content = await import_fs_extra10.default.readFile(absPath, "utf-8");
23748
+ const matches = content.split(oldString).length - 1;
23749
+ if (!oldString) {
23750
+ throw new Error("oldString \u4E0D\u80FD\u4E3A\u7A7A");
23751
+ }
23752
+ if (matches === 0) {
23753
+ throw new Error("\u672A\u627E\u5230 oldString\uFF0C\u8BF7\u5148\u8BFB\u53D6\u6587\u4EF6\u786E\u8BA4\u7CBE\u786E\u5185\u5BB9");
23754
+ }
23755
+ if (!replaceAll && matches > 1) {
23756
+ throw new Error(`oldString \u5339\u914D\u5230 ${matches} \u5904\u3002\u8BF7\u63D0\u4F9B\u66F4\u591A\u4E0A\u4E0B\u6587\u4F7F\u5176\u552F\u4E00\uFF0C\u6216\u8BBE\u7F6E replaceAll=true`);
23757
+ }
23758
+ const nextContent = replaceAll ? content.split(oldString).join(newString) : content.replace(oldString, newString);
23759
+ await import_fs_extra10.default.writeFile(absPath, nextContent, "utf-8");
23760
+ return `\u5DF2\u7F16\u8F91\u6587\u4EF6: ${absPath}\uFF0C\u66FF\u6362 ${replaceAll ? matches : 1} \u5904`;
23761
+ }
23762
+ var editFileTool = (0, import_langchain7.tool)(
23763
+ async ({ filePath, oldString, newString, replaceAll }) => safeTool(() => editFileByReplace(filePath, oldString, newString, replaceAll)),
20773
23764
  {
20774
- name: "get_catalog_file_path",
20775
- description: "\u83B7\u53D6\u7F13\u5B58\u7D22\u5F15\u6587\u4EF6 catalog.json \u7684\u7EDD\u5BF9\u8DEF\u5F84\u3002\u8BE5\u6587\u4EF6\u5305\u542B\u6240\u6709\u5DF2\u7F13\u5B58\u65B9\u6848\u7684 id \u548C description \u5217\u8868\u3002\u83B7\u53D6\u8DEF\u5F84\u540E\uFF0C\u4F7F\u7528 read_file \u5DE5\u5177\u8BFB\u53D6\u8BE5\u6587\u4EF6\u5373\u53EF\u67E5\u770B\u6240\u6709\u7F13\u5B58\u9879\u3002",
20776
- schema: external_exports.object({})
23765
+ name: "edit_file",
23766
+ description: "\u7F16\u8F91\u5DF2\u6709\u6587\u672C\u6587\u4EF6\uFF1A\u4F7F\u7528\u7CBE\u786E oldString \u66FF\u6362\u4E3A newString\u3002\u9ED8\u8BA4\u8981\u6C42 oldString \u5728\u6587\u4EF6\u4E2D\u552F\u4E00\uFF0C\u4EE5\u907F\u514D\u8BEF\u6539\u3002",
23767
+ schema: external_exports.object({
23768
+ filePath: external_exports.string().describe("\u8981\u7F16\u8F91\u7684\u6587\u4EF6\u8DEF\u5F84\uFF0C\u652F\u6301\u7EDD\u5BF9\u8DEF\u5F84\u6216\u76F8\u5BF9\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u7684\u8DEF\u5F84"),
23769
+ oldString: external_exports.string().describe("\u8981\u66FF\u6362\u7684\u539F\u59CB\u6587\u672C\uFF0C\u5FC5\u987B\u4E0E\u6587\u4EF6\u5185\u5BB9\u5B8C\u5168\u4E00\u81F4\uFF1B\u5EFA\u8BAE\u5305\u542B\u8DB3\u591F\u4E0A\u4E0B\u6587\u4FDD\u8BC1\u552F\u4E00"),
23770
+ newString: external_exports.string().describe("\u66FF\u6362\u540E\u7684\u65B0\u6587\u672C"),
23771
+ replaceAll: external_exports.boolean().default(false).describe("\u662F\u5426\u66FF\u6362\u5168\u90E8\u5339\u914D\u9879\uFF1B\u9ED8\u8BA4 false\uFF0C\u4EC5\u5141\u8BB8\u552F\u4E00\u5339\u914D")
23772
+ })
20777
23773
  }
20778
23774
  );
20779
23775
 
20780
- // src/agent/tools/mcp.ts
20781
- var import_mcp_adapters = require("@langchain/mcp-adapters");
20782
- var import_fs_extra6 = __toESM(require("fs-extra"));
23776
+ // src/agent/tools/glob.ts
23777
+ var import_path8 = __toESM(require("path"));
23778
+ var import_langchain8 = require("langchain");
23779
+ async function globFiles(pattern, cwd, maxResults = 200, includeHidden = false) {
23780
+ const rootDir = resolveWorkspacePath(cwd || ".");
23781
+ const allFiles = await walkFiles(rootDir, { includeHidden, maxFiles: Math.max(maxResults * 20, 1e3) });
23782
+ const normalizedPattern = normalizePathForMatch(pattern);
23783
+ const matches = allFiles.map((file2) => normalizePathForMatch(import_path8.default.relative(rootDir, file2))).filter((relativePath) => matchesGlob(relativePath, normalizedPattern)).slice(0, maxResults);
23784
+ return truncateOutput(formatJson({ cwd: rootDir, pattern, count: matches.length, files: matches }));
23785
+ }
23786
+ var globTool = (0, import_langchain8.tool)(
23787
+ async ({ pattern, cwd, maxResults, includeHidden }) => safeTool(() => globFiles(pattern, cwd, maxResults, includeHidden)),
23788
+ {
23789
+ name: "glob_files",
23790
+ description: "\u6309 glob \u6A21\u5F0F\u67E5\u627E\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u4E0B\u7684\u6587\u4EF6\uFF0C\u4F8B\u5982 **/*.ts\u3001src/**/*.tsx\u3002\u9ED8\u8BA4\u5FFD\u7565\u9690\u85CF\u76EE\u5F55\u3001node_modules\u3001dist\u3001.git\u3002",
23791
+ schema: external_exports.object({
23792
+ pattern: external_exports.string().describe("glob \u6587\u4EF6\u5339\u914D\u6A21\u5F0F\uFF0C\u4F8B\u5982 **/*.ts \u6216 src/**/*.tsx"),
23793
+ cwd: external_exports.string().optional().describe("\u641C\u7D22\u6839\u76EE\u5F55\uFF0C\u9ED8\u8BA4\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55"),
23794
+ maxResults: external_exports.number().default(200).describe("\u6700\u5927\u8FD4\u56DE\u6570\u91CF"),
23795
+ includeHidden: external_exports.boolean().default(false).describe("\u662F\u5426\u5305\u542B\u9690\u85CF\u6587\u4EF6\u6216\u9690\u85CF\u76EE\u5F55")
23796
+ })
23797
+ }
23798
+ );
20783
23799
 
20784
- // src/agent/tools/utils.ts
20785
- var import_langchain5 = require("langchain");
20786
- var import_fs_extra7 = __toESM(require("fs-extra"));
23800
+ // src/agent/tools/grep.ts
23801
+ var import_fs_extra11 = __toESM(require("fs-extra"));
23802
+ var import_path9 = __toESM(require("path"));
23803
+ var import_langchain9 = require("langchain");
23804
+ async function grepFiles(query, cwd, includePattern = "**/*", isRegexp = false, maxResults = 100, includeHidden = false) {
23805
+ const rootDir = resolveWorkspacePath(cwd || ".");
23806
+ const matcher = isRegexp ? new RegExp(query, "i") : null;
23807
+ const files = await walkFiles(rootDir, { includeHidden, maxFiles: Math.max(maxResults * 50, 1e3) });
23808
+ const matches = [];
23809
+ for (const file2 of files) {
23810
+ if (matches.length >= maxResults) break;
23811
+ const relativePath = normalizePathForMatch(import_path9.default.relative(rootDir, file2));
23812
+ if (!matchesGlob(relativePath, includePattern) || !isProbablyTextFile(file2)) {
23813
+ continue;
23814
+ }
23815
+ const content = await import_fs_extra11.default.readFile(file2, "utf-8").catch(() => "");
23816
+ const lines = content.split(/\r?\n/);
23817
+ for (let index = 0; index < lines.length; index++) {
23818
+ const line = lines[index];
23819
+ const ok = matcher ? matcher.test(line) : line.toLowerCase().includes(query.toLowerCase());
23820
+ if (ok) {
23821
+ matches.push({ filePath: relativePath, line: index + 1, text: line.trim() });
23822
+ if (matches.length >= maxResults) break;
23823
+ }
23824
+ }
23825
+ }
23826
+ return truncateOutput(formatJson({ cwd: rootDir, query, includePattern, count: matches.length, matches }));
23827
+ }
23828
+ var grepTool = (0, import_langchain9.tool)(
23829
+ async ({ query, pattern, cwd, includePattern, isRegexp, maxResults, includeHidden }) => safeTool(() => {
23830
+ const searchQuery = query || pattern;
23831
+ if (!searchQuery) {
23832
+ throw new Error("query \u6216 pattern \u81F3\u5C11\u9700\u8981\u63D0\u4F9B\u4E00\u4E2A");
23833
+ }
23834
+ return grepFiles(searchQuery, cwd, includePattern, isRegexp, maxResults, includeHidden);
23835
+ }),
23836
+ {
23837
+ name: "grep_files",
23838
+ description: "\u5728\u6587\u672C\u6587\u4EF6\u4E2D\u641C\u7D22\u5185\u5BB9\uFF0C\u652F\u6301\u666E\u901A\u5B57\u7B26\u4E32\u6216\u6B63\u5219\u8868\u8FBE\u5F0F\uFF0C\u53EF\u7528 includePattern \u9650\u5B9A\u6587\u4EF6\u8303\u56F4\u3002query \u4E3A\u641C\u7D22\u5185\u5BB9\uFF1B\u517C\u5BB9 pattern \u4F5C\u4E3A query \u7684\u522B\u540D\u3002",
23839
+ schema: external_exports.object({
23840
+ query: external_exports.string().optional().describe("\u8981\u641C\u7D22\u7684\u5B57\u7B26\u4E32\u6216\u6B63\u5219\u8868\u8FBE\u5F0F"),
23841
+ pattern: external_exports.string().optional().describe("query \u7684\u517C\u5BB9\u522B\u540D\uFF0C\u8981\u641C\u7D22\u7684\u5B57\u7B26\u4E32\u6216\u6B63\u5219\u8868\u8FBE\u5F0F"),
23842
+ cwd: external_exports.string().optional().describe("\u641C\u7D22\u6839\u76EE\u5F55\uFF0C\u9ED8\u8BA4\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55"),
23843
+ includePattern: external_exports.string().default("**/*").describe("\u9650\u5B9A\u641C\u7D22\u6587\u4EF6\u7684 glob \u6A21\u5F0F\uFF0C\u4F8B\u5982 src/**/*.ts"),
23844
+ isRegexp: external_exports.boolean().default(false).describe("query/pattern \u662F\u5426\u4E3A\u6B63\u5219\u8868\u8FBE\u5F0F"),
23845
+ maxResults: external_exports.number().default(100).describe("\u6700\u5927\u8FD4\u56DE\u5339\u914D\u6570\u91CF"),
23846
+ includeHidden: external_exports.boolean().default(false).describe("\u662F\u5426\u5305\u542B\u9690\u85CF\u6587\u4EF6\u6216\u9690\u85CF\u76EE\u5F55")
23847
+ }).refine((input) => input.query || input.pattern, {
23848
+ message: "query \u6216 pattern \u81F3\u5C11\u9700\u8981\u63D0\u4F9B\u4E00\u4E2A",
23849
+ path: ["query"]
23850
+ })
23851
+ }
23852
+ );
20787
23853
 
20788
- // src/cli/cli-core/skills.ts
23854
+ // src/agent/tools/question.ts
20789
23855
  var import_inquirer = __toESM(require("inquirer"));
20790
- var import_fs_extra8 = __toESM(require("fs-extra"));
23856
+ var import_langchain10 = require("langchain");
23857
+ async function askQuestion(question, type = "input", choices = []) {
23858
+ const promptType = type === "select" ? "list" : type;
23859
+ const answer = await import_inquirer.default.prompt([
23860
+ {
23861
+ name: "value",
23862
+ type: promptType,
23863
+ message: question,
23864
+ choices: type === "select" ? choices : void 0
23865
+ }
23866
+ ]);
23867
+ const value = answer["value"];
23868
+ return typeof value === "string" ? value : JSON.stringify(value);
23869
+ }
23870
+ var questionTool = (0, import_langchain10.tool)(async ({ question, type, choices }) => safeTool(() => askQuestion(question, type, choices)), {
23871
+ name: "ask_question",
23872
+ description: "\u5F53\u7EE7\u7EED\u4EFB\u52A1\u5FC5\u987B\u83B7\u53D6\u7528\u6237\u6F84\u6E05\u3001\u786E\u8BA4\u6216\u9009\u62E9\u65F6\uFF0C\u5411\u7528\u6237\u53D1\u8D77\u547D\u4EE4\u884C\u63D0\u95EE\u5E76\u8FD4\u56DE\u7B54\u6848\u3002\u4E0D\u8981\u8BE2\u95EE\u5BC6\u7801\u3001\u5BC6\u94A5\u7B49\u654F\u611F\u4FE1\u606F\u3002",
23873
+ schema: external_exports.object({
23874
+ question: external_exports.string().describe("\u8981\u8BE2\u95EE\u7528\u6237\u7684\u95EE\u9898"),
23875
+ type: external_exports.enum(["input", "confirm", "select"]).default("input").describe("\u95EE\u9898\u7C7B\u578B\uFF1Ainput \u6587\u672C\u8F93\u5165\u3001confirm \u786E\u8BA4\u3001select \u5355\u9009"),
23876
+ choices: external_exports.array(external_exports.string()).default([]).describe("select \u5355\u9009\u9879\u5217\u8868\uFF1B\u975E select \u7C7B\u578B\u53EF\u4E3A\u7A7A")
23877
+ })
23878
+ });
23879
+
23880
+ // src/agent/tools/read.ts
23881
+ var import_fs_extra12 = __toESM(require("fs-extra"));
23882
+ var import_iconv_lite2 = __toESM(require("iconv-lite"));
23883
+ var import_langchain11 = require("langchain");
23884
+ async function readFile(filePath, startLine = 1, endLine = -1, encoding) {
23885
+ const absPath = resolveWorkspacePath(filePath);
23886
+ if (!await import_fs_extra12.default.pathExists(absPath)) {
23887
+ throw new Error(`\u6587\u4EF6\u4E0D\u5B58\u5728 ${absPath}`);
23888
+ }
23889
+ const stat = await import_fs_extra12.default.stat(absPath);
23890
+ if (!stat.isFile()) {
23891
+ throw new Error(`\u8DEF\u5F84\u4E0D\u662F\u6587\u4EF6 ${absPath}`);
23892
+ }
23893
+ const buffer = await import_fs_extra12.default.readFile(absPath);
23894
+ const targetEncoding = encoding || getEncoding() || "utf-8";
23895
+ const content = import_iconv_lite2.default.decode(buffer, targetEncoding === "auto" ? "utf-8" : targetEncoding);
23896
+ const lines = content.split(/\r?\n/);
23897
+ const safeStart = Math.max(1, startLine || 1);
23898
+ const safeEnd = endLine && endLine > 0 ? Math.min(endLine, lines.length) : lines.length;
23899
+ if (safeStart > safeEnd) {
23900
+ throw new Error(`\u884C\u53F7\u8303\u56F4\u65E0\u6548\uFF0C\u6587\u4EF6\u5171 ${lines.length} \u884C`);
23901
+ }
23902
+ const selected = lines.slice(safeStart - 1, safeEnd).map((line, index) => `${safeStart + index}: ${line}`).join("\n");
23903
+ return truncateOutput(formatJson({ filePath: absPath, totalLines: lines.length, startLine: safeStart, endLine: safeEnd, content: selected }));
23904
+ }
23905
+ var readFileTool = (0, import_langchain11.tool)(
23906
+ async ({ filePath, startLine, endLine, encoding }) => safeTool(() => readFile(filePath, startLine, endLine, encoding)),
23907
+ {
23908
+ name: "read_file",
23909
+ description: "\u8BFB\u53D6\u672C\u5730\u6587\u672C\u6587\u4EF6\u5185\u5BB9\u3002\u652F\u6301\u7EDD\u5BF9\u8DEF\u5F84\u6216\u76F8\u5BF9\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u7684\u8DEF\u5F84\uFF0C\u53EF\u6307\u5B9A\u8D77\u6B62\u884C\u53F7\uFF1B\u8FD4\u56DE\u5E26\u884C\u53F7\u7684\u5185\u5BB9\u3002",
23910
+ schema: external_exports.object({
23911
+ filePath: external_exports.string().describe("\u8981\u8BFB\u53D6\u7684\u6587\u4EF6\u8DEF\u5F84\uFF0C\u652F\u6301\u7EDD\u5BF9\u8DEF\u5F84\u6216\u76F8\u5BF9\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u7684\u8DEF\u5F84"),
23912
+ startLine: external_exports.number().default(1).describe("\u8D77\u59CB\u884C\u53F7\uFF0C\u9ED8\u8BA4 1"),
23913
+ endLine: external_exports.number().default(-1).describe("\u7ED3\u675F\u884C\u53F7\uFF0C-1 \u8868\u793A\u8BFB\u53D6\u5230\u6587\u4EF6\u672B\u5C3E"),
23914
+ encoding: external_exports.string().optional().describe("\u6587\u4EF6\u7F16\u7801\uFF0C\u4F8B\u5982 utf-8\u3001gbk\uFF1B\u4E0D\u586B\u5219\u4F7F\u7528\u5168\u5C40\u7F16\u7801\u914D\u7F6E")
23915
+ })
23916
+ }
23917
+ );
23918
+
23919
+ // src/agent/tools/semanticMemory.ts
23920
+ var import_fs_extra13 = __toESM(require("fs-extra"));
23921
+ var import_path10 = __toESM(require("path"));
23922
+ var import_langchain12 = require("langchain");
23923
+ var DEFAULT_MEMORY_MARKDOWN = `# \u7528\u6237\u8BED\u4E49\u8BB0\u5FC6
23924
+
23925
+ > \u8BE5\u6587\u4EF6\u7531\u8BED\u4E49\u8BB0\u5FC6\u5DE5\u5177\u7EF4\u62A4\u3002\u4EC5\u8BB0\u5F55\u53EF\u957F\u671F\u590D\u7528\u7684\u7528\u6237\u4FE1\u606F\u3001\u4E60\u60EF\u548C\u504F\u597D\uFF1B\u4E0D\u8981\u8BB0\u5F55\u5BC6\u7801\u3001\u5BC6\u94A5\u3001\u4EE4\u724C\u7B49\u654F\u611F\u4FE1\u606F\u3002
23926
+
23927
+ ## \u7528\u6237\u79F0\u547C
23928
+
23929
+ ## \u64CD\u4F5C\u4E60\u60EF
23930
+
23931
+ ## \u7F16\u7801\u4E60\u60EF
23932
+
23933
+ ## \u4E2A\u4EBA\u504F\u597D
23934
+
23935
+ ## \u5176\u4ED6\u957F\u671F\u8BB0\u5FC6
23936
+ `;
23937
+ function getMemoryFilePath(runtimeMemoryFilePath) {
23938
+ return typeof runtimeMemoryFilePath === "string" && runtimeMemoryFilePath.trim() ? runtimeMemoryFilePath : void 0;
23939
+ }
23940
+ async function readSemanticMemory(memoryFilePath) {
23941
+ if (!memoryFilePath) {
23942
+ throw new Error("\u5F53\u524D\u8FD0\u884C\u4E0A\u4E0B\u6587\u672A\u63D0\u4F9B memoryFilePath\uFF0C\u65E0\u6CD5\u8BFB\u53D6\u7528\u6237\u8BED\u4E49\u8BB0\u5FC6");
23943
+ }
23944
+ if (!await import_fs_extra13.default.pathExists(memoryFilePath)) {
23945
+ return DEFAULT_MEMORY_MARKDOWN;
23946
+ }
23947
+ return import_fs_extra13.default.readFile(memoryFilePath, "utf-8");
23948
+ }
23949
+ async function updateSemanticMemory(memoryFilePath, content) {
23950
+ if (!memoryFilePath) {
23951
+ throw new Error("\u5F53\u524D\u8FD0\u884C\u4E0A\u4E0B\u6587\u672A\u63D0\u4F9B memoryFilePath\uFF0C\u65E0\u6CD5\u66F4\u65B0\u7528\u6237\u8BED\u4E49\u8BB0\u5FC6");
23952
+ }
23953
+ await import_fs_extra13.default.ensureDir(import_path10.default.dirname(memoryFilePath));
23954
+ await import_fs_extra13.default.writeFile(memoryFilePath, `${content.trim()}
23955
+ `, "utf-8");
23956
+ return `\u5DF2\u66F4\u65B0\u7528\u6237\u8BED\u4E49\u8BB0\u5FC6: ${memoryFilePath}`;
23957
+ }
23958
+ var readSemanticMemoryTool = (0, import_langchain12.tool)(
23959
+ async (_input, runtime) => safeTool(() => readSemanticMemory(getMemoryFilePath(runtime.context?.memoryFilePath))),
23960
+ {
23961
+ name: "read_user_semantic_memory",
23962
+ description: "\u8BFB\u53D6\u5F53\u524D\u7528\u6237\u8BED\u4E49\u8BB0\u5FC6 Markdown \u6587\u4EF6\u3002\u51C6\u5907\u65B0\u589E\u3001\u4FEE\u6B63\u6216\u5408\u5E76\u7528\u6237\u957F\u671F\u504F\u597D\u524D\uFF0C\u5E94\u5148\u8C03\u7528\u672C\u5DE5\u5177\u8BFB\u53D6\u73B0\u6709\u5185\u5BB9\uFF0C\u907F\u514D\u91CD\u590D\u548C\u8986\u76D6\u5DF2\u6709\u4FE1\u606F\u3002\u82E5\u6587\u4EF6\u4E0D\u5B58\u5728\uFF0C\u4F1A\u8FD4\u56DE\u63A8\u8350\u7684 Markdown \u6A21\u677F\u3002",
23963
+ schema: external_exports.object({})
23964
+ }
23965
+ );
23966
+ var updateSemanticMemoryTool = (0, import_langchain12.tool)(
23967
+ async ({ content }, runtime) => safeTool(() => updateSemanticMemory(getMemoryFilePath(runtime.context?.memoryFilePath), content)),
23968
+ {
23969
+ name: "update_user_semantic_memory",
23970
+ description: "\u8986\u76D6\u66F4\u65B0\u5F53\u524D\u7528\u6237\u8BED\u4E49\u8BB0\u5FC6 Markdown \u6587\u4EF6\u3002content \u5FC5\u987B\u662F\u5B8C\u6574\u7684 Markdown \u6587\u4EF6\u5185\u5BB9\uFF0C\u800C\u4E0D\u662F\u7247\u6BB5\u3002\u4EC5\u8BB0\u5F55\u660E\u786E\u3001\u7A33\u5B9A\u3001\u53EF\u957F\u671F\u590D\u7528\u7684\u4FE1\u606F\uFF0C\u4F8B\u5982\u7528\u6237\u79F0\u547C\u3001\u64CD\u4F5C\u4E60\u60EF\u3001\u7F16\u7801\u4E60\u60EF\u3001\u4E2A\u4EBA\u504F\u597D\u7B49\uFF1B\u4E0D\u8981\u8BB0\u5F55\u4E00\u6B21\u6027\u4EFB\u52A1\u4FE1\u606F\u3001\u4E34\u65F6\u4E0A\u4E0B\u6587\u3001\u63A8\u6D4B\u5185\u5BB9\u3001\u5BC6\u7801\u3001\u5BC6\u94A5\u3001\u4EE4\u724C\u3001\u9690\u79C1\u654F\u611F\u4FE1\u606F\u3002\u66F4\u65B0\u524D\u5E94\u5148\u8C03\u7528 read_user_semantic_memory \u8BFB\u53D6\u73B0\u6709\u5185\u5BB9\uFF0C\u7136\u540E\u5728\u4FDD\u7559\u5DF2\u6709\u6709\u6548\u8BB0\u5FC6\u7684\u57FA\u7840\u4E0A\u5408\u5E76\u65B0\u4FE1\u606F\uFF0C\u6309 Markdown \u6807\u9898\u548C\u5217\u8868\u6574\u7406\uFF0C\u5E76\u81EA\u884C\u53BB\u91CD\u3002",
23971
+ schema: external_exports.object({
23972
+ content: external_exports.string().describe("\u5B8C\u6574\u7684\u7528\u6237\u8BED\u4E49\u8BB0\u5FC6 Markdown \u5185\u5BB9\uFF0C\u9700\u4FDD\u7559\u5E76\u5408\u5E76\u5DF2\u6709\u6709\u6548\u8BB0\u5FC6\uFF0C\u6309\u5206\u7C7B\u6807\u9898\u548C\u5217\u8868\u9879\u7EC4\u7EC7")
23973
+ })
23974
+ }
23975
+ );
23976
+ var semanticMemoryTools = [readSemanticMemoryTool, updateSemanticMemoryTool];
20791
23977
 
20792
23978
  // src/cli/cli-utils/TaskQueue.ts
23979
+ var import_crypto2 = require("crypto");
20793
23980
  var import_dayjs = __toESM(require("dayjs"));
20794
- var import_fs_extra9 = __toESM(require("fs-extra"));
23981
+ var import_fs_extra14 = __toESM(require("fs-extra"));
23982
+ var TaskQueue = class {
23983
+ taskFilePath;
23984
+ constructor(agent) {
23985
+ this.taskFilePath = getSessionMsgQueuePath(typeof agent === "string" ? agent : agent.id);
23986
+ }
23987
+ pushTask(taskStr) {
23988
+ const taskQueueItem = {
23989
+ id: (0, import_crypto2.randomUUID)(),
23990
+ taskStr,
23991
+ createTime: (0, import_dayjs.default)().format("YYYY-MM-DD HH:mm:ss")
23992
+ };
23993
+ const taskList = this.loadTasks();
23994
+ taskList.push(taskQueueItem);
23995
+ this.updateTasks(taskList);
23996
+ }
23997
+ loadTasks() {
23998
+ const tasks = import_fs_extra14.default.readJSONSync(this.taskFilePath, { throws: false }) || [];
23999
+ return tasks;
24000
+ }
24001
+ updateTasks(tasks) {
24002
+ import_fs_extra14.default.writeJSONSync(this.taskFilePath, tasks);
24003
+ }
24004
+ clearTasks() {
24005
+ this.updateTasks([]);
24006
+ }
24007
+ delTask(index) {
24008
+ const taskList = this.loadTasks();
24009
+ if (index >= 0 && index < taskList.length) {
24010
+ taskList.splice(index, 1);
24011
+ this.updateTasks(taskList);
24012
+ }
24013
+ }
24014
+ getTask() {
24015
+ const taskList = this.loadTasks();
24016
+ if (taskList.length === 0) {
24017
+ return null;
24018
+ }
24019
+ const task = taskList.shift();
24020
+ this.updateTasks(taskList);
24021
+ return task || null;
24022
+ }
24023
+ };
24024
+
24025
+ // src/agent/tools/task.ts
24026
+ var import_langchain13 = require("langchain");
24027
+ function getCurrentTaskQueue(agentId) {
24028
+ return agentId ? new TaskQueue(agentId) : null;
24029
+ }
24030
+ function manageTaskQueue(agentId, action, task, index) {
24031
+ const queue = getCurrentTaskQueue(agentId);
24032
+ if (!queue) {
24033
+ throw new Error("\u672A\u627E\u5230\u5F53\u524D\u4F1A\u8BDD\uFF0C\u8BF7\u5148\u521B\u5EFA agent \u4F1A\u8BDD");
24034
+ }
24035
+ if (action === "list") {
24036
+ return formatJson({ tasks: queue.loadTasks() });
24037
+ }
24038
+ if (action === "add") {
24039
+ if (!task?.trim()) {
24040
+ throw new Error("\u6DFB\u52A0\u4EFB\u52A1\u65F6 task \u4E0D\u80FD\u4E3A\u7A7A");
24041
+ }
24042
+ queue.pushTask(task.trim());
24043
+ return `\u5DF2\u6DFB\u52A0\u4EFB\u52A1: ${task.trim()}`;
24044
+ }
24045
+ if (action === "delete") {
24046
+ const tasks = queue.loadTasks();
24047
+ const safeIndex = Number(index);
24048
+ if (!Number.isInteger(safeIndex) || safeIndex < 1 || safeIndex > tasks.length) {
24049
+ throw new Error(`\u4EFB\u52A1\u5E8F\u53F7\u65E0\u6548\uFF0C\u5F53\u524D\u4EFB\u52A1\u6570 ${tasks.length}`);
24050
+ }
24051
+ const removed = tasks[safeIndex - 1];
24052
+ queue.delTask(safeIndex - 1);
24053
+ return `\u5DF2\u5220\u9664\u4EFB\u52A1: [${removed.createTime}] ${removed.taskStr}`;
24054
+ }
24055
+ queue.clearTasks();
24056
+ return "\u5DF2\u6E05\u7A7A\u4EFB\u52A1\u961F\u5217";
24057
+ }
24058
+ var taskTool = (0, import_langchain13.tool)(
24059
+ async ({ action, task, index }, runtime) => safeTool(() => {
24060
+ const agentId = runtime.context?.agentId || getAgentId();
24061
+ return manageTaskQueue(agentId, action, task, index);
24062
+ }),
24063
+ {
24064
+ name: "manage_task_queue",
24065
+ description: "\u7BA1\u7406\u5F53\u524D agent \u4F1A\u8BDD\u4EFB\u52A1\u961F\u5217\uFF1A\u67E5\u770B\u3001\u6DFB\u52A0\u540E\u7EED\u4EFB\u52A1\u3001\u5220\u9664\u6307\u5B9A\u4EFB\u52A1\u6216\u6E05\u7A7A\u4EFB\u52A1\u3002\u6DFB\u52A0\u7684\u4EFB\u52A1\u4F1A\u5728\u5F53\u524D\u4EFB\u52A1\u7ED3\u675F\u540E\u7EE7\u7EED\u6267\u884C\u3002",
24066
+ schema: external_exports.object({
24067
+ action: external_exports.enum(["list", "add", "delete", "clear"]).describe("\u4EFB\u52A1\u961F\u5217\u64CD\u4F5C"),
24068
+ task: external_exports.string().optional().describe("action=add \u65F6\u8981\u6DFB\u52A0\u7684\u4EFB\u52A1\u5185\u5BB9"),
24069
+ index: external_exports.number().optional().describe("action=delete \u65F6\u8981\u5220\u9664\u7684\u4EFB\u52A1\u5E8F\u53F7\uFF0C\u4ECE 1 \u5F00\u59CB")
24070
+ })
24071
+ }
24072
+ );
24073
+
24074
+ // src/agent/tools/webfetch.ts
24075
+ var import_langchain14 = require("langchain");
24076
+ async function webFetch(url2, timeout = 3e4, maxLength = 6e4) {
24077
+ const controller = new AbortController();
24078
+ const timer = setTimeout(() => controller.abort(), timeout);
24079
+ try {
24080
+ const response = await fetch(url2, {
24081
+ method: "GET",
24082
+ headers: {
24083
+ "user-agent": "deepfish-ai/agent-tool",
24084
+ accept: "text/html,text/plain,application/json,application/xml,*/*"
24085
+ },
24086
+ signal: controller.signal
24087
+ });
24088
+ const contentType = response.headers.get("content-type") || "";
24089
+ const text = await response.text();
24090
+ return truncateOutput(
24091
+ JSON.stringify(
24092
+ {
24093
+ url: url2,
24094
+ status: response.status,
24095
+ ok: response.ok,
24096
+ contentType,
24097
+ body: text
24098
+ },
24099
+ null,
24100
+ 2
24101
+ ),
24102
+ maxLength
24103
+ );
24104
+ } finally {
24105
+ clearTimeout(timer);
24106
+ }
24107
+ }
24108
+ var webFetchTool = (0, import_langchain14.tool)(async ({ url: url2, timeout, maxLength }) => safeTool(() => webFetch(url2, timeout, maxLength)), {
24109
+ name: "web_fetch",
24110
+ description: "\u901A\u8FC7 HTTP GET \u83B7\u53D6\u7F51\u9875\u3001\u63A5\u53E3\u6216\u8FDC\u7A0B\u6587\u672C\u5185\u5BB9\uFF0C\u5E76\u8FD4\u56DE\u72B6\u6001\u7801\u3001content-type \u548C\u54CD\u5E94\u6B63\u6587\u3002",
24111
+ schema: external_exports.object({
24112
+ url: external_exports.string().url().describe("\u8981\u8BF7\u6C42\u7684\u5B8C\u6574 URL\uFF0C\u4F8B\u5982 https://example.com"),
24113
+ timeout: external_exports.number().default(3e4).describe("\u8BF7\u6C42\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09"),
24114
+ maxLength: external_exports.number().default(6e4).describe("\u6700\u5927\u8FD4\u56DE\u5B57\u7B26\u6570\uFF0C\u8D85\u51FA\u4F1A\u622A\u65AD")
24115
+ })
24116
+ });
24117
+
24118
+ // src/agent/tools/write.ts
24119
+ var import_fs_extra15 = __toESM(require("fs-extra"));
24120
+ var import_path11 = __toESM(require("path"));
24121
+ var import_langchain15 = require("langchain");
24122
+ async function writeFile(filePath, content, mode = "overwrite") {
24123
+ const absPath = resolveWorkspacePath(filePath);
24124
+ const exists = await import_fs_extra15.default.pathExists(absPath);
24125
+ if (mode === "create" && exists) {
24126
+ throw new Error(`\u6587\u4EF6\u5DF2\u5B58\u5728\uFF0Ccreate \u6A21\u5F0F\u4E0D\u4F1A\u8986\u76D6 ${absPath}`);
24127
+ }
24128
+ await import_fs_extra15.default.ensureDir(import_path11.default.dirname(absPath));
24129
+ if (mode === "append") {
24130
+ await import_fs_extra15.default.appendFile(absPath, content, "utf-8");
24131
+ return `\u5DF2\u8FFD\u52A0\u5199\u5165\u6587\u4EF6: ${absPath}`;
24132
+ }
24133
+ await import_fs_extra15.default.writeFile(absPath, content, "utf-8");
24134
+ return `${exists ? "\u5DF2\u8986\u76D6\u5199\u5165\u6587\u4EF6" : "\u5DF2\u521B\u5EFA\u6587\u4EF6"}: ${absPath}`;
24135
+ }
24136
+ var writeFileTool = (0, import_langchain15.tool)(async ({ filePath, content, mode }) => safeTool(() => writeFile(filePath, content, mode)), {
24137
+ name: "write_file",
24138
+ description: "\u5411\u672C\u5730\u6587\u4EF6\u5199\u5165\u6587\u672C\u5185\u5BB9\u3002\u53EF\u521B\u5EFA\u65B0\u6587\u4EF6\u3001\u8986\u76D6\u5DF2\u6709\u6587\u4EF6\u6216\u8FFD\u52A0\u5185\u5BB9\uFF0C\u4F1A\u81EA\u52A8\u521B\u5EFA\u7236\u76EE\u5F55\u3002",
24139
+ schema: external_exports.object({
24140
+ filePath: external_exports.string().describe("\u76EE\u6807\u6587\u4EF6\u8DEF\u5F84\uFF0C\u652F\u6301\u7EDD\u5BF9\u8DEF\u5F84\u6216\u76F8\u5BF9\u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55\u7684\u8DEF\u5F84"),
24141
+ content: external_exports.string().describe("\u8981\u5199\u5165\u7684\u5B8C\u6574\u6587\u672C\u5185\u5BB9"),
24142
+ mode: external_exports.enum(["overwrite", "append", "create"]).default("overwrite").describe("\u5199\u5165\u6A21\u5F0F\uFF1Aoverwrite \u8986\u76D6\u3001append \u8FFD\u52A0\u3001create \u4EC5\u65B0\u5EFA")
24143
+ })
24144
+ });
24145
+
24146
+ // src/agent/tools/index.ts
24147
+ var builtinTools = [
24148
+ taskTool,
24149
+ executeCommandTool,
24150
+ readFileTool,
24151
+ editFileTool,
24152
+ writeFileTool,
24153
+ globTool,
24154
+ grepTool,
24155
+ questionTool,
24156
+ webFetchTool,
24157
+ ...packageTools,
24158
+ ...semanticMemoryTools,
24159
+ ...learnTools
24160
+ ];
24161
+
24162
+ // src/cli/cli-core/skills.ts
24163
+ var import_inquirer2 = __toESM(require("inquirer"));
24164
+ var import_fs_extra16 = __toESM(require("fs-extra"));
20795
24165
 
20796
24166
  // src/serve/service/agent-room/agent-client.ts
20797
24167
  var import_ws = __toESM(require("ws"));
@@ -20806,23 +24176,40 @@ function removeSessionById(agentId) {
20806
24176
  return;
20807
24177
  }
20808
24178
  const sessionDir = getSessionPath(agentId);
20809
- import_fs_extra10.default.removeSync(sessionDir);
24179
+ import_fs_extra17.default.removeSync(sessionDir);
20810
24180
  const sessionsPath = getSessionsPath();
20811
- const sessionsFilePath = import_path7.default.join(sessionsPath, "sessions.json");
20812
- if (!import_fs_extra10.default.pathExistsSync(sessionsFilePath)) {
24181
+ const sessionsFilePath = import_path12.default.join(sessionsPath, "sessions.json");
24182
+ if (!import_fs_extra17.default.pathExistsSync(sessionsFilePath)) {
20813
24183
  logSuccess("Current session history cleared");
20814
24184
  return;
20815
24185
  }
20816
- const content = import_fs_extra10.default.readFileSync(sessionsFilePath, "utf-8");
24186
+ const content = import_fs_extra17.default.readFileSync(sessionsFilePath, "utf-8");
20817
24187
  const parsed = JSON.parse(content);
20818
24188
  const sessions = Array.isArray(parsed) ? parsed : [];
20819
24189
  const existingSessionIndex = sessions.findIndex((s) => s.id === agentId);
20820
24190
  if (existingSessionIndex !== -1) {
20821
24191
  sessions.splice(existingSessionIndex, 1);
20822
- import_fs_extra10.default.writeFileSync(sessionsFilePath, JSON.stringify(sessions, null, 2), "utf-8");
24192
+ import_fs_extra17.default.writeFileSync(sessionsFilePath, JSON.stringify(sessions, null, 2), "utf-8");
20823
24193
  }
20824
24194
  logSuccess("Current session history cleared");
20825
24195
  }
24196
+ function getAgentId() {
24197
+ const sessionsPath = getSessionsPath();
24198
+ const sessionsFilePath = import_path12.default.join(sessionsPath, "sessions.json");
24199
+ if (!import_fs_extra17.default.pathExistsSync(sessionsFilePath)) {
24200
+ return;
24201
+ }
24202
+ const content = import_fs_extra17.default.readFileSync(sessionsFilePath, "utf-8");
24203
+ const parsed = JSON.parse(content);
24204
+ const sessions = Array.isArray(parsed) ? parsed : [];
24205
+ const workspace = getWorkspacePath();
24206
+ const existingSession = sessions.find((s) => s.workspace === workspace);
24207
+ if (existingSession) {
24208
+ const agentId = existingSession.id;
24209
+ return agentId;
24210
+ }
24211
+ return;
24212
+ }
20826
24213
 
20827
24214
  // src/serve/service/agent-room/server.ts
20828
24215
  var agents = /* @__PURE__ */ new Map();
@@ -20993,14 +24380,14 @@ function startAgentRoomServer(opts = {}) {
20993
24380
  logWarning("[agent-room] Service already running");
20994
24381
  return wss;
20995
24382
  }
20996
- const path8 = opts.path ?? "/agent-room";
24383
+ const path14 = opts.path ?? "/agent-room";
20997
24384
  if (opts.httpServer) {
20998
- wss = new import_ws2.WebSocketServer({ server: opts.httpServer, path: path8 });
20999
- logSuccess(`[agent-room] started, path=${path8}`);
24385
+ wss = new import_ws2.WebSocketServer({ server: opts.httpServer, path: path14 });
24386
+ logSuccess(`[agent-room] started, path=${path14}`);
21000
24387
  } else {
21001
24388
  const port = opts.port ?? PORT2;
21002
- wss = new import_ws2.WebSocketServer({ port, path: path8 });
21003
- logSuccess(`[agent-room] started: ws://localhost:${port}${path8}`);
24389
+ wss = new import_ws2.WebSocketServer({ port, path: path14 });
24390
+ logSuccess(`[agent-room] started: ws://localhost:${port}${path14}`);
21004
24391
  }
21005
24392
  wss.on("connection", handleConnection);
21006
24393
  return wss;