@uoyo/mvtt 2.0.0-beta.4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.md +299 -64
  2. package/README.zh-CN.md +419 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +14 -6
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/doctor.d.ts.map +1 -1
  7. package/dist/commands/doctor.js +28 -16
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/install.d.ts.map +1 -1
  10. package/dist/commands/install.js +71 -41
  11. package/dist/commands/install.js.map +1 -1
  12. package/dist/commands/uninstall.d.ts.map +1 -1
  13. package/dist/commands/uninstall.js +75 -30
  14. package/dist/commands/uninstall.js.map +1 -1
  15. package/dist/commands/update.d.ts.map +1 -1
  16. package/dist/commands/update.js +34 -21
  17. package/dist/commands/update.js.map +1 -1
  18. package/dist/fs/install-manifest.d.ts +4 -1
  19. package/dist/fs/install-manifest.d.ts.map +1 -1
  20. package/dist/fs/install-manifest.js +13 -1
  21. package/dist/fs/install-manifest.js.map +1 -1
  22. package/dist/fs/materialize.d.ts +2 -0
  23. package/dist/fs/materialize.d.ts.map +1 -1
  24. package/dist/fs/materialize.js +39 -9
  25. package/dist/fs/materialize.js.map +1 -1
  26. package/dist/fs/registry-merge.d.ts.map +1 -1
  27. package/dist/fs/registry-merge.js +72 -29
  28. package/dist/fs/registry-merge.js.map +1 -1
  29. package/dist/index.js +0 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/scripts/epic-update.cjs +7713 -0
  32. package/dist/scripts/plan-update.cjs +491 -275
  33. package/dist/scripts/session-update.cjs +320 -199
  34. package/dist/types/platform.d.ts +12 -0
  35. package/dist/types/platform.d.ts.map +1 -0
  36. package/dist/types/platform.js +36 -0
  37. package/dist/types/platform.js.map +1 -0
  38. package/dist/types/registry.d.ts +3 -24
  39. package/dist/types/registry.d.ts.map +1 -1
  40. package/dist/util/bilingual.d.ts +10 -0
  41. package/dist/util/bilingual.d.ts.map +1 -0
  42. package/dist/util/bilingual.js +14 -0
  43. package/dist/util/bilingual.js.map +1 -0
  44. package/dist/util/cancel.d.ts +2 -0
  45. package/dist/util/cancel.d.ts.map +1 -0
  46. package/dist/util/cancel.js +6 -0
  47. package/dist/util/cancel.js.map +1 -0
  48. package/dist/util/color.d.ts +9 -6
  49. package/dist/util/color.d.ts.map +1 -1
  50. package/dist/util/color.js +10 -10
  51. package/dist/util/color.js.map +1 -1
  52. package/dist/util/spinner.d.ts +8 -0
  53. package/dist/util/spinner.d.ts.map +1 -0
  54. package/dist/util/spinner.js +17 -0
  55. package/dist/util/spinner.js.map +1 -0
  56. package/install-manifest.yaml +4 -0
  57. package/package.json +4 -3
  58. package/registry.yaml +33 -159
  59. package/sources/defaults/config.yaml +8 -13
  60. package/sources/defaults/project-context.yaml +2 -5
  61. package/sources/defaults/session.yaml +14 -2
  62. package/sources/knowledge/core/manifest.yaml +1 -4
  63. package/sources/scripts/epic-update.js +512 -0
  64. package/sources/scripts/plan-update.js +614 -353
  65. package/sources/scripts/session-update.js +102 -2
  66. package/sources/sections/activation-load-config.md +3 -3
  67. package/sources/sections/activation-load-context.md +42 -13
  68. package/sources/sections/activation-preflight.md +1 -1
  69. package/sources/sections/footer-next-steps.md +3 -2
  70. package/sources/sections/language-constraint.md +26 -0
  71. package/sources/sections/output-format-constraint.md +14 -14
  72. package/sources/sections/project-context-profile.md +29 -29
  73. package/sources/sections/session-update.md +41 -1
  74. package/sources/skills/mvt-analyze/business.md +46 -8
  75. package/sources/skills/mvt-analyze/manifest.yaml +6 -2
  76. package/sources/skills/mvt-analyze-code/business.md +18 -17
  77. package/sources/skills/mvt-analyze-code/manifest.yaml +4 -7
  78. package/sources/skills/mvt-bug-detect/manifest.yaml +3 -0
  79. package/sources/skills/mvt-check-context/business.md +13 -6
  80. package/sources/skills/mvt-check-context/manifest.yaml +2 -4
  81. package/sources/skills/mvt-cleanup/business.md +17 -2
  82. package/sources/skills/mvt-cleanup/manifest.yaml +1 -1
  83. package/sources/skills/mvt-config/business.md +5 -5
  84. package/sources/skills/mvt-config/manifest.yaml +6 -6
  85. package/sources/skills/mvt-create-skill/business.md +3 -15
  86. package/sources/skills/mvt-create-skill/manifest.yaml +1 -6
  87. package/sources/skills/mvt-decompose/business.md +94 -0
  88. package/sources/skills/mvt-decompose/manifest.yaml +121 -0
  89. package/sources/skills/mvt-design/manifest.yaml +1 -1
  90. package/sources/skills/mvt-fix/business.md +21 -6
  91. package/sources/skills/mvt-fix/manifest.yaml +2 -2
  92. package/sources/skills/mvt-help/business.md +11 -9
  93. package/sources/skills/mvt-help/manifest.yaml +2 -4
  94. package/sources/skills/mvt-implement/business.md +51 -8
  95. package/sources/skills/mvt-implement/manifest.yaml +1 -1
  96. package/sources/skills/mvt-init/business.md +23 -13
  97. package/sources/skills/mvt-init/manifest.yaml +2 -3
  98. package/sources/skills/mvt-manage-context/business.md +41 -14
  99. package/sources/skills/mvt-manage-context/manifest.yaml +3 -7
  100. package/sources/skills/mvt-plan-dev/business.md +17 -9
  101. package/sources/skills/mvt-plan-dev/manifest.yaml +1 -1
  102. package/sources/skills/mvt-quick-dev/business.md +22 -7
  103. package/sources/skills/mvt-quick-dev/manifest.yaml +1 -2
  104. package/sources/skills/mvt-refactor/business.md +32 -17
  105. package/sources/skills/mvt-refactor/manifest.yaml +1 -6
  106. package/sources/skills/mvt-resume/business.md +32 -12
  107. package/sources/skills/mvt-resume/manifest.yaml +6 -3
  108. package/sources/skills/mvt-review/business.md +24 -9
  109. package/sources/skills/mvt-review/manifest.yaml +1 -1
  110. package/sources/skills/mvt-status/business.md +37 -9
  111. package/sources/skills/mvt-status/manifest.yaml +5 -2
  112. package/sources/skills/mvt-sync-context/business.md +30 -16
  113. package/sources/skills/mvt-sync-context/manifest.yaml +1 -1
  114. package/sources/skills/mvt-template/business.md +1 -1
  115. package/sources/skills/mvt-template/manifest.yaml +2 -4
  116. package/sources/skills/mvt-test/business.md +30 -15
  117. package/sources/skills/mvt-test/manifest.yaml +1 -1
  118. package/sources/skills/mvt-update-plan/business.md +41 -12
  119. package/sources/skills/mvt-update-plan/manifest.yaml +8 -8
  120. package/sources/templates/decompose-output/body.md +13 -0
  121. package/sources/templates/decompose-output/manifest.yaml +11 -0
  122. package/sources/sections/output-language-constraint.md +0 -11
@@ -7,7 +7,11 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __commonJS = (cb, mod) => function __require() {
10
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ try {
11
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12
+ } catch (e) {
13
+ throw mod = 0, e;
14
+ }
11
15
  };
12
16
  var __copyProps = (to, from, except, desc) => {
13
17
  if (from && typeof from === "object" || typeof from === "function") {
@@ -26,17 +30,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
30
  mod
27
31
  ));
28
32
 
29
- // node_modules/yaml/dist/nodes/identity.js
33
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.js
30
34
  var require_identity = __commonJS({
31
- "node_modules/yaml/dist/nodes/identity.js"(exports2) {
35
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/identity.js"(exports2) {
32
36
  "use strict";
33
- var ALIAS = Symbol.for("yaml.alias");
34
- var DOC = Symbol.for("yaml.document");
35
- var MAP = Symbol.for("yaml.map");
36
- var PAIR = Symbol.for("yaml.pair");
37
- var SCALAR = Symbol.for("yaml.scalar");
38
- var SEQ = Symbol.for("yaml.seq");
39
- var NODE_TYPE = Symbol.for("yaml.node.type");
37
+ var ALIAS = /* @__PURE__ */ Symbol.for("yaml.alias");
38
+ var DOC = /* @__PURE__ */ Symbol.for("yaml.document");
39
+ var MAP = /* @__PURE__ */ Symbol.for("yaml.map");
40
+ var PAIR = /* @__PURE__ */ Symbol.for("yaml.pair");
41
+ var SCALAR = /* @__PURE__ */ Symbol.for("yaml.scalar");
42
+ var SEQ = /* @__PURE__ */ Symbol.for("yaml.seq");
43
+ var NODE_TYPE = /* @__PURE__ */ Symbol.for("yaml.node.type");
40
44
  var isAlias = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === ALIAS;
41
45
  var isDocument = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === DOC;
42
46
  var isMap = (node) => !!node && typeof node === "object" && node[NODE_TYPE] === MAP;
@@ -83,14 +87,14 @@ var require_identity = __commonJS({
83
87
  }
84
88
  });
85
89
 
86
- // node_modules/yaml/dist/visit.js
90
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/visit.js
87
91
  var require_visit = __commonJS({
88
- "node_modules/yaml/dist/visit.js"(exports2) {
92
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/visit.js"(exports2) {
89
93
  "use strict";
90
94
  var identity = require_identity();
91
- var BREAK = Symbol("break visit");
92
- var SKIP = Symbol("skip children");
93
- var REMOVE = Symbol("remove node");
95
+ var BREAK = /* @__PURE__ */ Symbol("break visit");
96
+ var SKIP = /* @__PURE__ */ Symbol("skip children");
97
+ var REMOVE = /* @__PURE__ */ Symbol("remove node");
94
98
  function visit(node, visitor) {
95
99
  const visitor_ = initVisitor(visitor);
96
100
  if (identity.isDocument(node)) {
@@ -241,9 +245,9 @@ var require_visit = __commonJS({
241
245
  }
242
246
  });
243
247
 
244
- // node_modules/yaml/dist/doc/directives.js
248
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/directives.js
245
249
  var require_directives = __commonJS({
246
- "node_modules/yaml/dist/doc/directives.js"(exports2) {
250
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/directives.js"(exports2) {
247
251
  "use strict";
248
252
  var identity = require_identity();
249
253
  var visit = require_visit();
@@ -412,9 +416,9 @@ var require_directives = __commonJS({
412
416
  }
413
417
  });
414
418
 
415
- // node_modules/yaml/dist/doc/anchors.js
419
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/anchors.js
416
420
  var require_anchors = __commonJS({
417
- "node_modules/yaml/dist/doc/anchors.js"(exports2) {
421
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/anchors.js"(exports2) {
418
422
  "use strict";
419
423
  var identity = require_identity();
420
424
  var visit = require_visit();
@@ -482,9 +486,9 @@ var require_anchors = __commonJS({
482
486
  }
483
487
  });
484
488
 
485
- // node_modules/yaml/dist/doc/applyReviver.js
489
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/applyReviver.js
486
490
  var require_applyReviver = __commonJS({
487
- "node_modules/yaml/dist/doc/applyReviver.js"(exports2) {
491
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/applyReviver.js"(exports2) {
488
492
  "use strict";
489
493
  function applyReviver(reviver, obj, key, val) {
490
494
  if (val && typeof val === "object") {
@@ -532,9 +536,9 @@ var require_applyReviver = __commonJS({
532
536
  }
533
537
  });
534
538
 
535
- // node_modules/yaml/dist/nodes/toJS.js
539
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/toJS.js
536
540
  var require_toJS = __commonJS({
537
- "node_modules/yaml/dist/nodes/toJS.js"(exports2) {
541
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/toJS.js"(exports2) {
538
542
  "use strict";
539
543
  var identity = require_identity();
540
544
  function toJS(value, arg, ctx) {
@@ -562,9 +566,9 @@ var require_toJS = __commonJS({
562
566
  }
563
567
  });
564
568
 
565
- // node_modules/yaml/dist/nodes/Node.js
569
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Node.js
566
570
  var require_Node = __commonJS({
567
- "node_modules/yaml/dist/nodes/Node.js"(exports2) {
571
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Node.js"(exports2) {
568
572
  "use strict";
569
573
  var applyReviver = require_applyReviver();
570
574
  var identity = require_identity();
@@ -603,9 +607,9 @@ var require_Node = __commonJS({
603
607
  }
604
608
  });
605
609
 
606
- // node_modules/yaml/dist/nodes/Alias.js
610
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Alias.js
607
611
  var require_Alias = __commonJS({
608
- "node_modules/yaml/dist/nodes/Alias.js"(exports2) {
612
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Alias.js"(exports2) {
609
613
  "use strict";
610
614
  var anchors = require_anchors();
611
615
  var visit = require_visit();
@@ -627,6 +631,8 @@ var require_Alias = __commonJS({
627
631
  * instance of the `source` anchor before this node.
628
632
  */
629
633
  resolve(doc, ctx) {
634
+ if (ctx?.maxAliasCount === 0)
635
+ throw new ReferenceError("Alias resolution is disabled");
630
636
  let nodes;
631
637
  if (ctx?.aliasResolveCache) {
632
638
  nodes = ctx.aliasResolveCache;
@@ -717,9 +723,9 @@ var require_Alias = __commonJS({
717
723
  }
718
724
  });
719
725
 
720
- // node_modules/yaml/dist/nodes/Scalar.js
726
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Scalar.js
721
727
  var require_Scalar = __commonJS({
722
- "node_modules/yaml/dist/nodes/Scalar.js"(exports2) {
728
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Scalar.js"(exports2) {
723
729
  "use strict";
724
730
  var identity = require_identity();
725
731
  var Node = require_Node();
@@ -747,9 +753,9 @@ var require_Scalar = __commonJS({
747
753
  }
748
754
  });
749
755
 
750
- // node_modules/yaml/dist/doc/createNode.js
756
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/createNode.js
751
757
  var require_createNode = __commonJS({
752
- "node_modules/yaml/dist/doc/createNode.js"(exports2) {
758
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/createNode.js"(exports2) {
753
759
  "use strict";
754
760
  var Alias = require_Alias();
755
761
  var identity = require_identity();
@@ -822,9 +828,9 @@ var require_createNode = __commonJS({
822
828
  }
823
829
  });
824
830
 
825
- // node_modules/yaml/dist/nodes/Collection.js
831
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Collection.js
826
832
  var require_Collection = __commonJS({
827
- "node_modules/yaml/dist/nodes/Collection.js"(exports2) {
833
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Collection.js"(exports2) {
828
834
  "use strict";
829
835
  var createNode = require_createNode();
830
836
  var identity = require_identity();
@@ -965,9 +971,9 @@ var require_Collection = __commonJS({
965
971
  }
966
972
  });
967
973
 
968
- // node_modules/yaml/dist/stringify/stringifyComment.js
974
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyComment.js
969
975
  var require_stringifyComment = __commonJS({
970
- "node_modules/yaml/dist/stringify/stringifyComment.js"(exports2) {
976
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyComment.js"(exports2) {
971
977
  "use strict";
972
978
  var stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, "#");
973
979
  function indentComment(comment, indent) {
@@ -982,9 +988,9 @@ var require_stringifyComment = __commonJS({
982
988
  }
983
989
  });
984
990
 
985
- // node_modules/yaml/dist/stringify/foldFlowLines.js
991
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/foldFlowLines.js
986
992
  var require_foldFlowLines = __commonJS({
987
- "node_modules/yaml/dist/stringify/foldFlowLines.js"(exports2) {
993
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/foldFlowLines.js"(exports2) {
988
994
  "use strict";
989
995
  var FOLD_FLOW = "flow";
990
996
  var FOLD_BLOCK = "block";
@@ -1118,9 +1124,9 @@ ${indent}${text.slice(fold + 1, end2)}`;
1118
1124
  }
1119
1125
  });
1120
1126
 
1121
- // node_modules/yaml/dist/stringify/stringifyString.js
1127
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyString.js
1122
1128
  var require_stringifyString = __commonJS({
1123
- "node_modules/yaml/dist/stringify/stringifyString.js"(exports2) {
1129
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyString.js"(exports2) {
1124
1130
  "use strict";
1125
1131
  var Scalar = require_Scalar();
1126
1132
  var foldFlowLines = require_foldFlowLines();
@@ -1401,9 +1407,9 @@ ${indent}`);
1401
1407
  }
1402
1408
  });
1403
1409
 
1404
- // node_modules/yaml/dist/stringify/stringify.js
1410
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringify.js
1405
1411
  var require_stringify = __commonJS({
1406
- "node_modules/yaml/dist/stringify/stringify.js"(exports2) {
1412
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringify.js"(exports2) {
1407
1413
  "use strict";
1408
1414
  var anchors = require_anchors();
1409
1415
  var identity = require_identity();
@@ -1525,9 +1531,9 @@ ${ctx.indent}${str}`;
1525
1531
  }
1526
1532
  });
1527
1533
 
1528
- // node_modules/yaml/dist/stringify/stringifyPair.js
1534
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyPair.js
1529
1535
  var require_stringifyPair = __commonJS({
1530
- "node_modules/yaml/dist/stringify/stringifyPair.js"(exports2) {
1536
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyPair.js"(exports2) {
1531
1537
  "use strict";
1532
1538
  var identity = require_identity();
1533
1539
  var Scalar = require_Scalar();
@@ -1658,9 +1664,9 @@ ${ctx.indent}`;
1658
1664
  }
1659
1665
  });
1660
1666
 
1661
- // node_modules/yaml/dist/log.js
1667
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/log.js
1662
1668
  var require_log = __commonJS({
1663
- "node_modules/yaml/dist/log.js"(exports2) {
1669
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/log.js"(exports2) {
1664
1670
  "use strict";
1665
1671
  var node_process = require("process");
1666
1672
  function debug(logLevel, ...messages) {
@@ -1680,9 +1686,9 @@ var require_log = __commonJS({
1680
1686
  }
1681
1687
  });
1682
1688
 
1683
- // node_modules/yaml/dist/schema/yaml-1.1/merge.js
1689
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/merge.js
1684
1690
  var require_merge = __commonJS({
1685
- "node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports2) {
1691
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/merge.js"(exports2) {
1686
1692
  "use strict";
1687
1693
  var identity = require_identity();
1688
1694
  var Scalar = require_Scalar();
@@ -1699,18 +1705,18 @@ var require_merge = __commonJS({
1699
1705
  };
1700
1706
  var isMergeKey = (ctx, key) => (merge.identify(key) || identity.isScalar(key) && (!key.type || key.type === Scalar.Scalar.PLAIN) && merge.identify(key.value)) && ctx?.doc.schema.tags.some((tag) => tag.tag === merge.tag && tag.default);
1701
1707
  function addMergeToJSMap(ctx, map, value) {
1702
- value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;
1703
- if (identity.isSeq(value))
1704
- for (const it of value.items)
1708
+ const source = resolveAliasValue(ctx, value);
1709
+ if (identity.isSeq(source))
1710
+ for (const it of source.items)
1705
1711
  mergeValue(ctx, map, it);
1706
- else if (Array.isArray(value))
1707
- for (const it of value)
1712
+ else if (Array.isArray(source))
1713
+ for (const it of source)
1708
1714
  mergeValue(ctx, map, it);
1709
1715
  else
1710
- mergeValue(ctx, map, value);
1716
+ mergeValue(ctx, map, source);
1711
1717
  }
1712
1718
  function mergeValue(ctx, map, value) {
1713
- const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;
1719
+ const source = resolveAliasValue(ctx, value);
1714
1720
  if (!identity.isMap(source))
1715
1721
  throw new Error("Merge sources must be maps or map aliases");
1716
1722
  const srcMap = source.toJSON(null, ctx, Map);
@@ -1731,15 +1737,18 @@ var require_merge = __commonJS({
1731
1737
  }
1732
1738
  return map;
1733
1739
  }
1740
+ function resolveAliasValue(ctx, value) {
1741
+ return ctx && identity.isAlias(value) ? value.resolve(ctx.doc, ctx) : value;
1742
+ }
1734
1743
  exports2.addMergeToJSMap = addMergeToJSMap;
1735
1744
  exports2.isMergeKey = isMergeKey;
1736
1745
  exports2.merge = merge;
1737
1746
  }
1738
1747
  });
1739
1748
 
1740
- // node_modules/yaml/dist/nodes/addPairToJSMap.js
1749
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/addPairToJSMap.js
1741
1750
  var require_addPairToJSMap = __commonJS({
1742
- "node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports2) {
1751
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/addPairToJSMap.js"(exports2) {
1743
1752
  "use strict";
1744
1753
  var log = require_log();
1745
1754
  var merge = require_merge();
@@ -1801,9 +1810,9 @@ var require_addPairToJSMap = __commonJS({
1801
1810
  }
1802
1811
  });
1803
1812
 
1804
- // node_modules/yaml/dist/nodes/Pair.js
1813
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Pair.js
1805
1814
  var require_Pair = __commonJS({
1806
- "node_modules/yaml/dist/nodes/Pair.js"(exports2) {
1815
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/Pair.js"(exports2) {
1807
1816
  "use strict";
1808
1817
  var createNode = require_createNode();
1809
1818
  var stringifyPair = require_stringifyPair();
@@ -1841,9 +1850,9 @@ var require_Pair = __commonJS({
1841
1850
  }
1842
1851
  });
1843
1852
 
1844
- // node_modules/yaml/dist/stringify/stringifyCollection.js
1853
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyCollection.js
1845
1854
  var require_stringifyCollection = __commonJS({
1846
- "node_modules/yaml/dist/stringify/stringifyCollection.js"(exports2) {
1855
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyCollection.js"(exports2) {
1847
1856
  "use strict";
1848
1857
  var identity = require_identity();
1849
1858
  var stringify = require_stringify();
@@ -1992,9 +2001,9 @@ ${indent}${end}`;
1992
2001
  }
1993
2002
  });
1994
2003
 
1995
- // node_modules/yaml/dist/nodes/YAMLMap.js
2004
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/YAMLMap.js
1996
2005
  var require_YAMLMap = __commonJS({
1997
- "node_modules/yaml/dist/nodes/YAMLMap.js"(exports2) {
2006
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/YAMLMap.js"(exports2) {
1998
2007
  "use strict";
1999
2008
  var stringifyCollection = require_stringifyCollection();
2000
2009
  var addPairToJSMap = require_addPairToJSMap();
@@ -2136,9 +2145,9 @@ var require_YAMLMap = __commonJS({
2136
2145
  }
2137
2146
  });
2138
2147
 
2139
- // node_modules/yaml/dist/schema/common/map.js
2148
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/map.js
2140
2149
  var require_map = __commonJS({
2141
- "node_modules/yaml/dist/schema/common/map.js"(exports2) {
2150
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/map.js"(exports2) {
2142
2151
  "use strict";
2143
2152
  var identity = require_identity();
2144
2153
  var YAMLMap = require_YAMLMap();
@@ -2158,9 +2167,9 @@ var require_map = __commonJS({
2158
2167
  }
2159
2168
  });
2160
2169
 
2161
- // node_modules/yaml/dist/nodes/YAMLSeq.js
2170
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/YAMLSeq.js
2162
2171
  var require_YAMLSeq = __commonJS({
2163
- "node_modules/yaml/dist/nodes/YAMLSeq.js"(exports2) {
2172
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/nodes/YAMLSeq.js"(exports2) {
2164
2173
  "use strict";
2165
2174
  var createNode = require_createNode();
2166
2175
  var stringifyCollection = require_stringifyCollection();
@@ -2274,9 +2283,9 @@ var require_YAMLSeq = __commonJS({
2274
2283
  }
2275
2284
  });
2276
2285
 
2277
- // node_modules/yaml/dist/schema/common/seq.js
2286
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/seq.js
2278
2287
  var require_seq = __commonJS({
2279
- "node_modules/yaml/dist/schema/common/seq.js"(exports2) {
2288
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/seq.js"(exports2) {
2280
2289
  "use strict";
2281
2290
  var identity = require_identity();
2282
2291
  var YAMLSeq = require_YAMLSeq();
@@ -2296,9 +2305,9 @@ var require_seq = __commonJS({
2296
2305
  }
2297
2306
  });
2298
2307
 
2299
- // node_modules/yaml/dist/schema/common/string.js
2308
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/string.js
2300
2309
  var require_string = __commonJS({
2301
- "node_modules/yaml/dist/schema/common/string.js"(exports2) {
2310
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/string.js"(exports2) {
2302
2311
  "use strict";
2303
2312
  var stringifyString = require_stringifyString();
2304
2313
  var string = {
@@ -2315,9 +2324,9 @@ var require_string = __commonJS({
2315
2324
  }
2316
2325
  });
2317
2326
 
2318
- // node_modules/yaml/dist/schema/common/null.js
2327
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/null.js
2319
2328
  var require_null = __commonJS({
2320
- "node_modules/yaml/dist/schema/common/null.js"(exports2) {
2329
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/common/null.js"(exports2) {
2321
2330
  "use strict";
2322
2331
  var Scalar = require_Scalar();
2323
2332
  var nullTag = {
@@ -2333,9 +2342,9 @@ var require_null = __commonJS({
2333
2342
  }
2334
2343
  });
2335
2344
 
2336
- // node_modules/yaml/dist/schema/core/bool.js
2345
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/bool.js
2337
2346
  var require_bool = __commonJS({
2338
- "node_modules/yaml/dist/schema/core/bool.js"(exports2) {
2347
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/bool.js"(exports2) {
2339
2348
  "use strict";
2340
2349
  var Scalar = require_Scalar();
2341
2350
  var boolTag = {
@@ -2357,9 +2366,9 @@ var require_bool = __commonJS({
2357
2366
  }
2358
2367
  });
2359
2368
 
2360
- // node_modules/yaml/dist/stringify/stringifyNumber.js
2369
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyNumber.js
2361
2370
  var require_stringifyNumber = __commonJS({
2362
- "node_modules/yaml/dist/stringify/stringifyNumber.js"(exports2) {
2371
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyNumber.js"(exports2) {
2363
2372
  "use strict";
2364
2373
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
2365
2374
  if (typeof value === "bigint")
@@ -2368,7 +2377,7 @@ var require_stringifyNumber = __commonJS({
2368
2377
  if (!isFinite(num))
2369
2378
  return isNaN(num) ? ".nan" : num < 0 ? "-.inf" : ".inf";
2370
2379
  let n = Object.is(value, -0) ? "-0" : JSON.stringify(value);
2371
- if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) {
2380
+ if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^-?\d/.test(n) && !n.includes("e")) {
2372
2381
  let i = n.indexOf(".");
2373
2382
  if (i < 0) {
2374
2383
  i = n.length;
@@ -2384,9 +2393,9 @@ var require_stringifyNumber = __commonJS({
2384
2393
  }
2385
2394
  });
2386
2395
 
2387
- // node_modules/yaml/dist/schema/core/float.js
2396
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/float.js
2388
2397
  var require_float = __commonJS({
2389
- "node_modules/yaml/dist/schema/core/float.js"(exports2) {
2398
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/float.js"(exports2) {
2390
2399
  "use strict";
2391
2400
  var Scalar = require_Scalar();
2392
2401
  var stringifyNumber = require_stringifyNumber();
@@ -2430,9 +2439,9 @@ var require_float = __commonJS({
2430
2439
  }
2431
2440
  });
2432
2441
 
2433
- // node_modules/yaml/dist/schema/core/int.js
2442
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/int.js
2434
2443
  var require_int = __commonJS({
2435
- "node_modules/yaml/dist/schema/core/int.js"(exports2) {
2444
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/int.js"(exports2) {
2436
2445
  "use strict";
2437
2446
  var stringifyNumber = require_stringifyNumber();
2438
2447
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2475,9 +2484,9 @@ var require_int = __commonJS({
2475
2484
  }
2476
2485
  });
2477
2486
 
2478
- // node_modules/yaml/dist/schema/core/schema.js
2487
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/schema.js
2479
2488
  var require_schema = __commonJS({
2480
- "node_modules/yaml/dist/schema/core/schema.js"(exports2) {
2489
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/core/schema.js"(exports2) {
2481
2490
  "use strict";
2482
2491
  var map = require_map();
2483
2492
  var _null = require_null();
@@ -2503,9 +2512,9 @@ var require_schema = __commonJS({
2503
2512
  }
2504
2513
  });
2505
2514
 
2506
- // node_modules/yaml/dist/schema/json/schema.js
2515
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/json/schema.js
2507
2516
  var require_schema2 = __commonJS({
2508
- "node_modules/yaml/dist/schema/json/schema.js"(exports2) {
2517
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/json/schema.js"(exports2) {
2509
2518
  "use strict";
2510
2519
  var Scalar = require_Scalar();
2511
2520
  var map = require_map();
@@ -2570,9 +2579,9 @@ var require_schema2 = __commonJS({
2570
2579
  }
2571
2580
  });
2572
2581
 
2573
- // node_modules/yaml/dist/schema/yaml-1.1/binary.js
2582
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/binary.js
2574
2583
  var require_binary = __commonJS({
2575
- "node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports2) {
2584
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/binary.js"(exports2) {
2576
2585
  "use strict";
2577
2586
  var node_buffer = require("buffer");
2578
2587
  var Scalar = require_Scalar();
@@ -2636,9 +2645,9 @@ var require_binary = __commonJS({
2636
2645
  }
2637
2646
  });
2638
2647
 
2639
- // node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2648
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
2640
2649
  var require_pairs = __commonJS({
2641
- "node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports2) {
2650
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/pairs.js"(exports2) {
2642
2651
  "use strict";
2643
2652
  var identity = require_identity();
2644
2653
  var Pair = require_Pair();
@@ -2714,9 +2723,9 @@ ${cn.comment}` : item.comment;
2714
2723
  }
2715
2724
  });
2716
2725
 
2717
- // node_modules/yaml/dist/schema/yaml-1.1/omap.js
2726
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/omap.js
2718
2727
  var require_omap = __commonJS({
2719
- "node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports2) {
2728
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/omap.js"(exports2) {
2720
2729
  "use strict";
2721
2730
  var identity = require_identity();
2722
2731
  var toJS = require_toJS();
@@ -2792,9 +2801,9 @@ var require_omap = __commonJS({
2792
2801
  }
2793
2802
  });
2794
2803
 
2795
- // node_modules/yaml/dist/schema/yaml-1.1/bool.js
2804
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/bool.js
2796
2805
  var require_bool2 = __commonJS({
2797
- "node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports2) {
2806
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/bool.js"(exports2) {
2798
2807
  "use strict";
2799
2808
  var Scalar = require_Scalar();
2800
2809
  function boolStringify({ value, source }, ctx) {
@@ -2824,9 +2833,9 @@ var require_bool2 = __commonJS({
2824
2833
  }
2825
2834
  });
2826
2835
 
2827
- // node_modules/yaml/dist/schema/yaml-1.1/float.js
2836
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/float.js
2828
2837
  var require_float2 = __commonJS({
2829
- "node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports2) {
2838
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/float.js"(exports2) {
2830
2839
  "use strict";
2831
2840
  var Scalar = require_Scalar();
2832
2841
  var stringifyNumber = require_stringifyNumber();
@@ -2873,9 +2882,9 @@ var require_float2 = __commonJS({
2873
2882
  }
2874
2883
  });
2875
2884
 
2876
- // node_modules/yaml/dist/schema/yaml-1.1/int.js
2885
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/int.js
2877
2886
  var require_int2 = __commonJS({
2878
- "node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports2) {
2887
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/int.js"(exports2) {
2879
2888
  "use strict";
2880
2889
  var stringifyNumber = require_stringifyNumber();
2881
2890
  var intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -2952,9 +2961,9 @@ var require_int2 = __commonJS({
2952
2961
  }
2953
2962
  });
2954
2963
 
2955
- // node_modules/yaml/dist/schema/yaml-1.1/set.js
2964
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/set.js
2956
2965
  var require_set = __commonJS({
2957
- "node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports2) {
2966
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/set.js"(exports2) {
2958
2967
  "use strict";
2959
2968
  var identity = require_identity();
2960
2969
  var Pair = require_Pair();
@@ -3041,9 +3050,9 @@ var require_set = __commonJS({
3041
3050
  }
3042
3051
  });
3043
3052
 
3044
- // node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
3053
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
3045
3054
  var require_timestamp = __commonJS({
3046
- "node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports2) {
3055
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js"(exports2) {
3047
3056
  "use strict";
3048
3057
  var stringifyNumber = require_stringifyNumber();
3049
3058
  function parseSexagesimal(str, asBigInt) {
@@ -3129,9 +3138,9 @@ var require_timestamp = __commonJS({
3129
3138
  }
3130
3139
  });
3131
3140
 
3132
- // node_modules/yaml/dist/schema/yaml-1.1/schema.js
3141
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/schema.js
3133
3142
  var require_schema3 = __commonJS({
3134
- "node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports2) {
3143
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/yaml-1.1/schema.js"(exports2) {
3135
3144
  "use strict";
3136
3145
  var map = require_map();
3137
3146
  var _null = require_null();
@@ -3173,9 +3182,9 @@ var require_schema3 = __commonJS({
3173
3182
  }
3174
3183
  });
3175
3184
 
3176
- // node_modules/yaml/dist/schema/tags.js
3185
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/tags.js
3177
3186
  var require_tags = __commonJS({
3178
- "node_modules/yaml/dist/schema/tags.js"(exports2) {
3187
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/tags.js"(exports2) {
3179
3188
  "use strict";
3180
3189
  var map = require_map();
3181
3190
  var _null = require_null();
@@ -3267,9 +3276,9 @@ var require_tags = __commonJS({
3267
3276
  }
3268
3277
  });
3269
3278
 
3270
- // node_modules/yaml/dist/schema/Schema.js
3279
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/Schema.js
3271
3280
  var require_Schema = __commonJS({
3272
- "node_modules/yaml/dist/schema/Schema.js"(exports2) {
3281
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/schema/Schema.js"(exports2) {
3273
3282
  "use strict";
3274
3283
  var identity = require_identity();
3275
3284
  var map = require_map();
@@ -3299,9 +3308,9 @@ var require_Schema = __commonJS({
3299
3308
  }
3300
3309
  });
3301
3310
 
3302
- // node_modules/yaml/dist/stringify/stringifyDocument.js
3311
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyDocument.js
3303
3312
  var require_stringifyDocument = __commonJS({
3304
- "node_modules/yaml/dist/stringify/stringifyDocument.js"(exports2) {
3313
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/stringify/stringifyDocument.js"(exports2) {
3305
3314
  "use strict";
3306
3315
  var identity = require_identity();
3307
3316
  var stringify = require_stringify();
@@ -3379,9 +3388,9 @@ var require_stringifyDocument = __commonJS({
3379
3388
  }
3380
3389
  });
3381
3390
 
3382
- // node_modules/yaml/dist/doc/Document.js
3391
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/Document.js
3383
3392
  var require_Document = __commonJS({
3384
- "node_modules/yaml/dist/doc/Document.js"(exports2) {
3393
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/doc/Document.js"(exports2) {
3385
3394
  "use strict";
3386
3395
  var Alias = require_Alias();
3387
3396
  var Collection = require_Collection();
@@ -3688,9 +3697,9 @@ var require_Document = __commonJS({
3688
3697
  }
3689
3698
  });
3690
3699
 
3691
- // node_modules/yaml/dist/errors.js
3700
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/errors.js
3692
3701
  var require_errors = __commonJS({
3693
- "node_modules/yaml/dist/errors.js"(exports2) {
3702
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/errors.js"(exports2) {
3694
3703
  "use strict";
3695
3704
  var YAMLError = class extends Error {
3696
3705
  constructor(name, pos, code, message) {
@@ -3753,9 +3762,9 @@ ${pointer}
3753
3762
  }
3754
3763
  });
3755
3764
 
3756
- // node_modules/yaml/dist/compose/resolve-props.js
3765
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-props.js
3757
3766
  var require_resolve_props = __commonJS({
3758
- "node_modules/yaml/dist/compose/resolve-props.js"(exports2) {
3767
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-props.js"(exports2) {
3759
3768
  "use strict";
3760
3769
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
3761
3770
  let spaceBefore = false;
@@ -3856,6 +3865,7 @@ var require_resolve_props = __commonJS({
3856
3865
  hasSpace = false;
3857
3866
  break;
3858
3867
  }
3868
+ // else fallthrough
3859
3869
  default:
3860
3870
  onError(token, "UNEXPECTED_TOKEN", `Unexpected ${token.type} token`);
3861
3871
  atNewline = false;
@@ -3886,9 +3896,9 @@ var require_resolve_props = __commonJS({
3886
3896
  }
3887
3897
  });
3888
3898
 
3889
- // node_modules/yaml/dist/compose/util-contains-newline.js
3899
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-contains-newline.js
3890
3900
  var require_util_contains_newline = __commonJS({
3891
- "node_modules/yaml/dist/compose/util-contains-newline.js"(exports2) {
3901
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-contains-newline.js"(exports2) {
3892
3902
  "use strict";
3893
3903
  function containsNewline(key) {
3894
3904
  if (!key)
@@ -3928,9 +3938,9 @@ var require_util_contains_newline = __commonJS({
3928
3938
  }
3929
3939
  });
3930
3940
 
3931
- // node_modules/yaml/dist/compose/util-flow-indent-check.js
3941
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-flow-indent-check.js
3932
3942
  var require_util_flow_indent_check = __commonJS({
3933
- "node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports2) {
3943
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-flow-indent-check.js"(exports2) {
3934
3944
  "use strict";
3935
3945
  var utilContainsNewline = require_util_contains_newline();
3936
3946
  function flowIndentCheck(indent, fc, onError) {
@@ -3946,9 +3956,9 @@ var require_util_flow_indent_check = __commonJS({
3946
3956
  }
3947
3957
  });
3948
3958
 
3949
- // node_modules/yaml/dist/compose/util-map-includes.js
3959
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-map-includes.js
3950
3960
  var require_util_map_includes = __commonJS({
3951
- "node_modules/yaml/dist/compose/util-map-includes.js"(exports2) {
3961
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-map-includes.js"(exports2) {
3952
3962
  "use strict";
3953
3963
  var identity = require_identity();
3954
3964
  function mapIncludes(ctx, items, search) {
@@ -3962,9 +3972,9 @@ var require_util_map_includes = __commonJS({
3962
3972
  }
3963
3973
  });
3964
3974
 
3965
- // node_modules/yaml/dist/compose/resolve-block-map.js
3975
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-map.js
3966
3976
  var require_resolve_block_map = __commonJS({
3967
- "node_modules/yaml/dist/compose/resolve-block-map.js"(exports2) {
3977
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-map.js"(exports2) {
3968
3978
  "use strict";
3969
3979
  var Pair = require_Pair();
3970
3980
  var YAMLMap = require_YAMLMap();
@@ -4070,9 +4080,9 @@ var require_resolve_block_map = __commonJS({
4070
4080
  }
4071
4081
  });
4072
4082
 
4073
- // node_modules/yaml/dist/compose/resolve-block-seq.js
4083
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-seq.js
4074
4084
  var require_resolve_block_seq = __commonJS({
4075
- "node_modules/yaml/dist/compose/resolve-block-seq.js"(exports2) {
4085
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-seq.js"(exports2) {
4076
4086
  "use strict";
4077
4087
  var YAMLSeq = require_YAMLSeq();
4078
4088
  var resolveProps = require_resolve_props();
@@ -4121,9 +4131,9 @@ var require_resolve_block_seq = __commonJS({
4121
4131
  }
4122
4132
  });
4123
4133
 
4124
- // node_modules/yaml/dist/compose/resolve-end.js
4134
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-end.js
4125
4135
  var require_resolve_end = __commonJS({
4126
- "node_modules/yaml/dist/compose/resolve-end.js"(exports2) {
4136
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-end.js"(exports2) {
4127
4137
  "use strict";
4128
4138
  function resolveEnd(end, offset, reqSpace, onError) {
4129
4139
  let comment = "";
@@ -4164,9 +4174,9 @@ var require_resolve_end = __commonJS({
4164
4174
  }
4165
4175
  });
4166
4176
 
4167
- // node_modules/yaml/dist/compose/resolve-flow-collection.js
4177
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-flow-collection.js
4168
4178
  var require_resolve_flow_collection = __commonJS({
4169
- "node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports2) {
4179
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-flow-collection.js"(exports2) {
4170
4180
  "use strict";
4171
4181
  var identity = require_identity();
4172
4182
  var Pair = require_Pair();
@@ -4358,9 +4368,9 @@ var require_resolve_flow_collection = __commonJS({
4358
4368
  }
4359
4369
  });
4360
4370
 
4361
- // node_modules/yaml/dist/compose/compose-collection.js
4371
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-collection.js
4362
4372
  var require_compose_collection = __commonJS({
4363
- "node_modules/yaml/dist/compose/compose-collection.js"(exports2) {
4373
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-collection.js"(exports2) {
4364
4374
  "use strict";
4365
4375
  var identity = require_identity();
4366
4376
  var Scalar = require_Scalar();
@@ -4423,9 +4433,9 @@ var require_compose_collection = __commonJS({
4423
4433
  }
4424
4434
  });
4425
4435
 
4426
- // node_modules/yaml/dist/compose/resolve-block-scalar.js
4436
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-scalar.js
4427
4437
  var require_resolve_block_scalar = __commonJS({
4428
- "node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports2) {
4438
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-block-scalar.js"(exports2) {
4429
4439
  "use strict";
4430
4440
  var Scalar = require_Scalar();
4431
4441
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -4564,6 +4574,7 @@ var require_resolve_block_scalar = __commonJS({
4564
4574
  switch (token.type) {
4565
4575
  case "space":
4566
4576
  hasSpace = true;
4577
+ // fallthrough
4567
4578
  case "newline":
4568
4579
  length += token.source.length;
4569
4580
  break;
@@ -4579,6 +4590,7 @@ var require_resolve_block_scalar = __commonJS({
4579
4590
  onError(token, "UNEXPECTED_TOKEN", token.message);
4580
4591
  length += token.source.length;
4581
4592
  break;
4593
+ /* istanbul ignore next should not happen */
4582
4594
  default: {
4583
4595
  const message = `Unexpected token in block scalar header: ${token.type}`;
4584
4596
  onError(token, "UNEXPECTED_TOKEN", message);
@@ -4604,9 +4616,9 @@ var require_resolve_block_scalar = __commonJS({
4604
4616
  }
4605
4617
  });
4606
4618
 
4607
- // node_modules/yaml/dist/compose/resolve-flow-scalar.js
4619
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-flow-scalar.js
4608
4620
  var require_resolve_flow_scalar = __commonJS({
4609
- "node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports2) {
4621
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/resolve-flow-scalar.js"(exports2) {
4610
4622
  "use strict";
4611
4623
  var Scalar = require_Scalar();
4612
4624
  var resolveEnd = require_resolve_end();
@@ -4628,6 +4640,7 @@ var require_resolve_flow_scalar = __commonJS({
4628
4640
  _type = Scalar.Scalar.QUOTE_DOUBLE;
4629
4641
  value = doubleQuotedValue(source, _onError);
4630
4642
  break;
4643
+ /* istanbul ignore next should not happen */
4631
4644
  default:
4632
4645
  onError(scalar, "UNEXPECTED_TOKEN", `Expected a flow scalar value, but found: ${type}`);
4633
4646
  return {
@@ -4649,6 +4662,7 @@ var require_resolve_flow_scalar = __commonJS({
4649
4662
  function plainValue(source, onError) {
4650
4663
  let badChar = "";
4651
4664
  switch (source[0]) {
4665
+ /* istanbul ignore next should not happen */
4652
4666
  case " ":
4653
4667
  badChar = "a tab character";
4654
4668
  break;
@@ -4735,7 +4749,7 @@ var require_resolve_flow_scalar = __commonJS({
4735
4749
  while (next === " " || next === " ")
4736
4750
  next = source[++i + 1];
4737
4751
  } else if (next === "x" || next === "u" || next === "U") {
4738
- const length = { x: 2, u: 4, U: 8 }[next];
4752
+ const length = next === "x" ? 2 : next === "u" ? 4 : 8;
4739
4753
  res += parseCharCode(source, i + 1, length, onError);
4740
4754
  i += length;
4741
4755
  } else {
@@ -4810,20 +4824,21 @@ var require_resolve_flow_scalar = __commonJS({
4810
4824
  const cc = source.substr(offset, length);
4811
4825
  const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);
4812
4826
  const code = ok ? parseInt(cc, 16) : NaN;
4813
- if (isNaN(code)) {
4827
+ try {
4828
+ return String.fromCodePoint(code);
4829
+ } catch {
4814
4830
  const raw = source.substr(offset - 2, length + 2);
4815
4831
  onError(offset - 2, "BAD_DQ_ESCAPE", `Invalid escape sequence ${raw}`);
4816
4832
  return raw;
4817
4833
  }
4818
- return String.fromCodePoint(code);
4819
4834
  }
4820
4835
  exports2.resolveFlowScalar = resolveFlowScalar;
4821
4836
  }
4822
4837
  });
4823
4838
 
4824
- // node_modules/yaml/dist/compose/compose-scalar.js
4839
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-scalar.js
4825
4840
  var require_compose_scalar = __commonJS({
4826
- "node_modules/yaml/dist/compose/compose-scalar.js"(exports2) {
4841
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-scalar.js"(exports2) {
4827
4842
  "use strict";
4828
4843
  var identity = require_identity();
4829
4844
  var Scalar = require_Scalar();
@@ -4902,9 +4917,9 @@ var require_compose_scalar = __commonJS({
4902
4917
  }
4903
4918
  });
4904
4919
 
4905
- // node_modules/yaml/dist/compose/util-empty-scalar-position.js
4920
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-empty-scalar-position.js
4906
4921
  var require_util_empty_scalar_position = __commonJS({
4907
- "node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports2) {
4922
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/util-empty-scalar-position.js"(exports2) {
4908
4923
  "use strict";
4909
4924
  function emptyScalarPosition(offset, before, pos) {
4910
4925
  if (before) {
@@ -4932,9 +4947,9 @@ var require_util_empty_scalar_position = __commonJS({
4932
4947
  }
4933
4948
  });
4934
4949
 
4935
- // node_modules/yaml/dist/compose/compose-node.js
4950
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-node.js
4936
4951
  var require_compose_node = __commonJS({
4937
- "node_modules/yaml/dist/compose/compose-node.js"(exports2) {
4952
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-node.js"(exports2) {
4938
4953
  "use strict";
4939
4954
  var Alias = require_Alias();
4940
4955
  var identity = require_identity();
@@ -5038,9 +5053,9 @@ var require_compose_node = __commonJS({
5038
5053
  }
5039
5054
  });
5040
5055
 
5041
- // node_modules/yaml/dist/compose/compose-doc.js
5056
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-doc.js
5042
5057
  var require_compose_doc = __commonJS({
5043
- "node_modules/yaml/dist/compose/compose-doc.js"(exports2) {
5058
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/compose-doc.js"(exports2) {
5044
5059
  "use strict";
5045
5060
  var Document = require_Document();
5046
5061
  var composeNode = require_compose_node();
@@ -5081,9 +5096,9 @@ var require_compose_doc = __commonJS({
5081
5096
  }
5082
5097
  });
5083
5098
 
5084
- // node_modules/yaml/dist/compose/composer.js
5099
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/composer.js
5085
5100
  var require_composer = __commonJS({
5086
- "node_modules/yaml/dist/compose/composer.js"(exports2) {
5101
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/compose/composer.js"(exports2) {
5087
5102
  "use strict";
5088
5103
  var node_process = require("process");
5089
5104
  var directives = require_directives();
@@ -5165,8 +5180,10 @@ ${cb}` : comment;
5165
5180
  }
5166
5181
  }
5167
5182
  if (afterDoc) {
5168
- Array.prototype.push.apply(doc.errors, this.errors);
5169
- Array.prototype.push.apply(doc.warnings, this.warnings);
5183
+ for (let i = 0; i < this.errors.length; ++i)
5184
+ doc.errors.push(this.errors[i]);
5185
+ for (let i = 0; i < this.warnings.length; ++i)
5186
+ doc.warnings.push(this.warnings[i]);
5170
5187
  } else {
5171
5188
  doc.errors = this.errors;
5172
5189
  doc.warnings = this.warnings;
@@ -5287,9 +5304,9 @@ ${end.comment}` : end.comment;
5287
5304
  }
5288
5305
  });
5289
5306
 
5290
- // node_modules/yaml/dist/parse/cst-scalar.js
5307
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-scalar.js
5291
5308
  var require_cst_scalar = __commonJS({
5292
- "node_modules/yaml/dist/parse/cst-scalar.js"(exports2) {
5309
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-scalar.js"(exports2) {
5293
5310
  "use strict";
5294
5311
  var resolveBlockScalar = require_resolve_block_scalar();
5295
5312
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -5472,9 +5489,9 @@ var require_cst_scalar = __commonJS({
5472
5489
  }
5473
5490
  });
5474
5491
 
5475
- // node_modules/yaml/dist/parse/cst-stringify.js
5492
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-stringify.js
5476
5493
  var require_cst_stringify = __commonJS({
5477
- "node_modules/yaml/dist/parse/cst-stringify.js"(exports2) {
5494
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-stringify.js"(exports2) {
5478
5495
  "use strict";
5479
5496
  var stringify = (cst) => "type" in cst ? stringifyToken(cst) : stringifyItem(cst);
5480
5497
  function stringifyToken(token) {
@@ -5533,13 +5550,13 @@ var require_cst_stringify = __commonJS({
5533
5550
  }
5534
5551
  });
5535
5552
 
5536
- // node_modules/yaml/dist/parse/cst-visit.js
5553
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-visit.js
5537
5554
  var require_cst_visit = __commonJS({
5538
- "node_modules/yaml/dist/parse/cst-visit.js"(exports2) {
5555
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst-visit.js"(exports2) {
5539
5556
  "use strict";
5540
- var BREAK = Symbol("break visit");
5541
- var SKIP = Symbol("skip children");
5542
- var REMOVE = Symbol("remove item");
5557
+ var BREAK = /* @__PURE__ */ Symbol("break visit");
5558
+ var SKIP = /* @__PURE__ */ Symbol("skip children");
5559
+ var REMOVE = /* @__PURE__ */ Symbol("remove item");
5543
5560
  function visit(cst, visitor) {
5544
5561
  if ("type" in cst && cst.type === "document")
5545
5562
  cst = { start: cst.start, value: cst.value };
@@ -5595,9 +5612,9 @@ var require_cst_visit = __commonJS({
5595
5612
  }
5596
5613
  });
5597
5614
 
5598
- // node_modules/yaml/dist/parse/cst.js
5615
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst.js
5599
5616
  var require_cst = __commonJS({
5600
- "node_modules/yaml/dist/parse/cst.js"(exports2) {
5617
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/cst.js"(exports2) {
5601
5618
  "use strict";
5602
5619
  var cstScalar = require_cst_scalar();
5603
5620
  var cstStringify = require_cst_stringify();
@@ -5697,9 +5714,9 @@ var require_cst = __commonJS({
5697
5714
  }
5698
5715
  });
5699
5716
 
5700
- // node_modules/yaml/dist/parse/lexer.js
5717
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/lexer.js
5701
5718
  var require_lexer = __commonJS({
5702
- "node_modules/yaml/dist/parse/lexer.js"(exports2) {
5719
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/lexer.js"(exports2) {
5703
5720
  "use strict";
5704
5721
  var cst = require_cst();
5705
5722
  function isEmpty(ch) {
@@ -5899,7 +5916,7 @@ var require_lexer = __commonJS({
5899
5916
  const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));
5900
5917
  this.indentNext = this.indentValue + 1;
5901
5918
  this.indentValue += n;
5902
- return yield* this.parseBlockStart();
5919
+ return "block-start";
5903
5920
  }
5904
5921
  return "doc";
5905
5922
  }
@@ -5912,6 +5929,7 @@ var require_lexer = __commonJS({
5912
5929
  switch (line[n]) {
5913
5930
  case "#":
5914
5931
  yield* this.pushCount(line.length - n);
5932
+ // fallthrough
5915
5933
  case void 0:
5916
5934
  yield* this.pushNewline();
5917
5935
  return yield* this.parseLineStart();
@@ -6007,6 +6025,7 @@ var require_lexer = __commonJS({
6007
6025
  return "flow";
6008
6026
  }
6009
6027
  }
6028
+ // fallthrough
6010
6029
  default:
6011
6030
  this.flowKey = false;
6012
6031
  return yield* this.parsePlainScalar();
@@ -6084,6 +6103,7 @@ var require_lexer = __commonJS({
6084
6103
  if (next === "\n")
6085
6104
  break;
6086
6105
  }
6106
+ // fallthrough
6087
6107
  default:
6088
6108
  break loop;
6089
6109
  }
@@ -6195,26 +6215,38 @@ var require_lexer = __commonJS({
6195
6215
  return 0;
6196
6216
  }
6197
6217
  *pushIndicators() {
6198
- switch (this.charAt(0)) {
6199
- case "!":
6200
- return (yield* this.pushTag()) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators());
6201
- case "&":
6202
- return (yield* this.pushUntil(isNotAnchorChar)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators());
6203
- case "-":
6204
- case "?":
6205
- case ":": {
6206
- const inFlow = this.flowLevel > 0;
6207
- const ch1 = this.charAt(1);
6208
- if (isEmpty(ch1) || inFlow && flowIndicatorChars.has(ch1)) {
6209
- if (!inFlow)
6210
- this.indentNext = this.indentValue + 1;
6211
- else if (this.flowKey)
6212
- this.flowKey = false;
6213
- return (yield* this.pushCount(1)) + (yield* this.pushSpaces(true)) + (yield* this.pushIndicators());
6218
+ let n = 0;
6219
+ loop: while (true) {
6220
+ switch (this.charAt(0)) {
6221
+ case "!":
6222
+ n += yield* this.pushTag();
6223
+ n += yield* this.pushSpaces(true);
6224
+ continue loop;
6225
+ case "&":
6226
+ n += yield* this.pushUntil(isNotAnchorChar);
6227
+ n += yield* this.pushSpaces(true);
6228
+ continue loop;
6229
+ case "-":
6230
+ // this is an error
6231
+ case "?":
6232
+ // this is an error outside flow collections
6233
+ case ":": {
6234
+ const inFlow = this.flowLevel > 0;
6235
+ const ch1 = this.charAt(1);
6236
+ if (isEmpty(ch1) || inFlow && flowIndicatorChars.has(ch1)) {
6237
+ if (!inFlow)
6238
+ this.indentNext = this.indentValue + 1;
6239
+ else if (this.flowKey)
6240
+ this.flowKey = false;
6241
+ n += yield* this.pushCount(1);
6242
+ n += yield* this.pushSpaces(true);
6243
+ continue loop;
6244
+ }
6214
6245
  }
6215
6246
  }
6247
+ break loop;
6216
6248
  }
6217
- return 0;
6249
+ return n;
6218
6250
  }
6219
6251
  *pushTag() {
6220
6252
  if (this.charAt(1) === "<") {
@@ -6271,9 +6303,9 @@ var require_lexer = __commonJS({
6271
6303
  }
6272
6304
  });
6273
6305
 
6274
- // node_modules/yaml/dist/parse/line-counter.js
6306
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/line-counter.js
6275
6307
  var require_line_counter = __commonJS({
6276
- "node_modules/yaml/dist/parse/line-counter.js"(exports2) {
6308
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/line-counter.js"(exports2) {
6277
6309
  "use strict";
6278
6310
  var LineCounter = class {
6279
6311
  constructor() {
@@ -6302,9 +6334,9 @@ var require_line_counter = __commonJS({
6302
6334
  }
6303
6335
  });
6304
6336
 
6305
- // node_modules/yaml/dist/parse/parser.js
6337
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/parser.js
6306
6338
  var require_parser = __commonJS({
6307
- "node_modules/yaml/dist/parse/parser.js"(exports2) {
6339
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/parse/parser.js"(exports2) {
6308
6340
  "use strict";
6309
6341
  var node_process = require("process");
6310
6342
  var cst = require_cst();
@@ -6350,6 +6382,7 @@ var require_parser = __commonJS({
6350
6382
  }
6351
6383
  case "block-seq":
6352
6384
  return parent.items[parent.items.length - 1].start;
6385
+ /* istanbul ignore next should not happen */
6353
6386
  default:
6354
6387
  return [];
6355
6388
  }
@@ -6372,6 +6405,13 @@ var require_parser = __commonJS({
6372
6405
  }
6373
6406
  return prev.splice(i, prev.length);
6374
6407
  }
6408
+ function arrayPushArray(target, source) {
6409
+ if (source.length < 1e5)
6410
+ Array.prototype.push.apply(target, source);
6411
+ else
6412
+ for (let i = 0; i < source.length; ++i)
6413
+ target.push(source[i]);
6414
+ }
6375
6415
  function fixFlowSeqItems(fc) {
6376
6416
  if (fc.start.type === "flow-seq-start") {
6377
6417
  for (const it of fc.items) {
@@ -6381,11 +6421,11 @@ var require_parser = __commonJS({
6381
6421
  delete it.key;
6382
6422
  if (isFlowToken(it.value)) {
6383
6423
  if (it.value.end)
6384
- Array.prototype.push.apply(it.value.end, it.sep);
6424
+ arrayPushArray(it.value.end, it.sep);
6385
6425
  else
6386
6426
  it.value.end = it.sep;
6387
6427
  } else
6388
- Array.prototype.push.apply(it.start, it.sep);
6428
+ arrayPushArray(it.start, it.sep);
6389
6429
  delete it.sep;
6390
6430
  }
6391
6431
  }
@@ -6583,6 +6623,7 @@ var require_parser = __commonJS({
6583
6623
  Object.assign(it, { key: token, sep: [] });
6584
6624
  return;
6585
6625
  }
6626
+ /* istanbul ignore next should not happen */
6586
6627
  default:
6587
6628
  yield* this.pop();
6588
6629
  yield* this.pop(token);
@@ -6704,6 +6745,7 @@ var require_parser = __commonJS({
6704
6745
  }
6705
6746
  yield* this.pop();
6706
6747
  break;
6748
+ /* istanbul ignore next should not happen */
6707
6749
  default:
6708
6750
  yield* this.pop();
6709
6751
  yield* this.step();
@@ -6738,7 +6780,7 @@ var require_parser = __commonJS({
6738
6780
  const prev = map.items[map.items.length - 2];
6739
6781
  const end = prev?.value?.end;
6740
6782
  if (Array.isArray(end)) {
6741
- Array.prototype.push.apply(end, it.start);
6783
+ arrayPushArray(end, it.start);
6742
6784
  end.push(this.sourceToken);
6743
6785
  map.items.pop();
6744
6786
  return;
@@ -6926,7 +6968,7 @@ var require_parser = __commonJS({
6926
6968
  const prev = seq.items[seq.items.length - 2];
6927
6969
  const end = prev?.value?.end;
6928
6970
  if (Array.isArray(end)) {
6929
- Array.prototype.push.apply(end, it.start);
6971
+ arrayPushArray(end, it.start);
6930
6972
  end.push(this.sourceToken);
6931
6973
  seq.items.pop();
6932
6974
  return;
@@ -7149,6 +7191,7 @@ var require_parser = __commonJS({
7149
7191
  break;
7150
7192
  case "newline":
7151
7193
  this.onKeyLine = false;
7194
+ // fallthrough
7152
7195
  case "space":
7153
7196
  case "comment":
7154
7197
  default:
@@ -7165,9 +7208,9 @@ var require_parser = __commonJS({
7165
7208
  }
7166
7209
  });
7167
7210
 
7168
- // node_modules/yaml/dist/public-api.js
7211
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/public-api.js
7169
7212
  var require_public_api = __commonJS({
7170
- "node_modules/yaml/dist/public-api.js"(exports2) {
7213
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/public-api.js"(exports2) {
7171
7214
  "use strict";
7172
7215
  var composer = require_composer();
7173
7216
  var Document = require_Document();
@@ -7262,9 +7305,9 @@ var require_public_api = __commonJS({
7262
7305
  }
7263
7306
  });
7264
7307
 
7265
- // node_modules/yaml/dist/index.js
7308
+ // node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js
7266
7309
  var require_dist = __commonJS({
7267
- "node_modules/yaml/dist/index.js"(exports2) {
7310
+ "node_modules/.pnpm/yaml@2.9.0/node_modules/yaml/dist/index.js"(exports2) {
7268
7311
  "use strict";
7269
7312
  var composer = require_composer();
7270
7313
  var Document = require_Document();
@@ -7316,9 +7359,36 @@ var require_dist = __commonJS({
7316
7359
 
7317
7360
  // sources/scripts/plan-update.js
7318
7361
  var import_node_fs = require("node:fs");
7362
+ var import_node_path = require("node:path");
7319
7363
  var import_yaml = __toESM(require_dist(), 1);
7364
+ function findProjectRootFromPath(filePath) {
7365
+ let dir = (0, import_node_path.resolve)((0, import_node_path.dirname)(filePath));
7366
+ while (true) {
7367
+ if ((0, import_node_fs.existsSync)((0, import_node_path.join)(dir, ".ai-agents"))) return dir;
7368
+ const parent = (0, import_node_path.dirname)(dir);
7369
+ if (parent === dir) return null;
7370
+ dir = parent;
7371
+ }
7372
+ }
7373
+ function loadSoleProject(projectRoot) {
7374
+ if (!projectRoot) return null;
7375
+ const ctxPath = (0, import_node_path.join)(projectRoot, ".ai-agents/workspace/project-context.yaml");
7376
+ if (!(0, import_node_fs.existsSync)(ctxPath)) return null;
7377
+ try {
7378
+ const ctx = (0, import_yaml.parse)((0, import_node_fs.readFileSync)(ctxPath, "utf-8"));
7379
+ const projects = ctx?.projects;
7380
+ if (!Array.isArray(projects) || projects.length !== 1) return null;
7381
+ const name = projects[0]?.name;
7382
+ if (typeof name !== "string" || name === "") return null;
7383
+ return [name];
7384
+ } catch {
7385
+ return null;
7386
+ }
7387
+ }
7320
7388
  var VALID_STATUSES = ["pending", "in_progress", "done", "blocked", "skipped"];
7321
7389
  var TERMINAL_STATUSES = ["done", "blocked", "skipped"];
7390
+ var PROJECT_NAME_RE = /^[a-zA-Z0-9][a-zA-Z0-9_-]*$/;
7391
+ var VALID_FRESHNESS = ["current", "stale"];
7322
7392
  var ERRORS = {
7323
7393
  MISSING_PLAN: () => "Missing required argument: --plan",
7324
7394
  MISSING_TASK: () => "Missing required argument: --task",
@@ -7329,37 +7399,42 @@ var ERRORS = {
7329
7399
  TASK_NOT_FOUND: (id, valid) => `Task "${id}" not found. Valid task ids: ${valid.length ? valid.join(", ") : "(none)"}.`,
7330
7400
  VALIDATION_FAILED: (errs) => `Plan validation failed; file not written:
7331
7401
  - ${errs.join("\n - ")}`,
7332
- PLAN_WRITE_FAILED: (detail) => `Failed to write plan.yaml: ${detail}`
7402
+ PLAN_WRITE_FAILED: (detail) => `Failed to write plan.yaml: ${detail}`,
7403
+ INVALID_PROJECT_NAME: (name) => `Invalid project name "${name}". Must match ${PROJECT_NAME_RE.source} (no leading underscore).`,
7404
+ INVALID_TASK_PROJECT: (taskId, proj, valid) => `Task "${taskId}" has project "${proj}" not in --projects list: ${valid.join(", ")}.`,
7405
+ INVALID_FRESHNESS: (taskId, val) => `Task "${taskId}" has invalid deliverables.freshness "${val}". Must be one of: ${VALID_FRESHNESS.join(", ")}.`,
7406
+ STALE_TASK_NOT_FOUND: (id, valid) => `--mark-deliverable-stale task "${id}" not found. Valid task ids: ${valid.length ? valid.join(", ") : "(none)"}.`,
7407
+ INVALID_DELIVERABLES_POINTER: (val) => `Invalid --deliverables-pointer "${val}". Only "current" is supported.`
7333
7408
  };
7334
7409
  function parseArgs(argv) {
7335
- const args = {};
7410
+ const args2 = {};
7336
7411
  for (let i = 2; i < argv.length; i++) {
7337
7412
  if (argv[i].startsWith("--")) {
7338
7413
  const key = argv[i].slice(2);
7339
7414
  const next = argv[i + 1];
7340
7415
  if (next && !next.startsWith("--")) {
7341
- args[key] = next;
7416
+ args2[key] = next;
7342
7417
  i++;
7343
7418
  } else {
7344
- args[key] = true;
7419
+ args2[key] = true;
7345
7420
  }
7346
7421
  }
7347
7422
  }
7348
- return args;
7423
+ return args2;
7349
7424
  }
7350
- function validateArgs(args) {
7351
- if (!args.plan || args.plan === true) return ERRORS.MISSING_PLAN();
7352
- if (!args.task || args.task === true) return ERRORS.MISSING_TASK();
7353
- if (!args.status || args.status === true) return ERRORS.MISSING_STATUS();
7354
- if (!VALID_STATUSES.includes(args.status)) return ERRORS.INVALID_STATUS(args.status);
7425
+ function validateArgs(args2) {
7426
+ if (!args2.plan || args2.plan === true) return ERRORS.MISSING_PLAN();
7427
+ if (!args2.task || args2.task === true) return ERRORS.MISSING_TASK();
7428
+ if (!args2.status || args2.status === true) return ERRORS.MISSING_STATUS();
7429
+ if (!VALID_STATUSES.includes(args2.status)) return ERRORS.INVALID_STATUS(args2.status);
7355
7430
  return null;
7356
7431
  }
7357
- function applyUpdate(plan, args, now) {
7358
- const task = plan.tasks.find((t) => t.id === args.task);
7432
+ function applyUpdate(plan, args2, now) {
7433
+ const task = plan.tasks.find((t) => t.id === args2.task);
7359
7434
  const oldStatus = task.status;
7360
- task.status = args.status;
7361
- if (args.artifacts && args.artifacts !== true) {
7362
- const incoming = args.artifacts.split(",").map((s) => s.trim()).filter(Boolean);
7435
+ task.status = args2.status;
7436
+ if (args2.artifacts && args2.artifacts !== true) {
7437
+ const incoming = args2.artifacts.split(",").map((s) => s.trim()).filter(Boolean);
7363
7438
  if (incoming.length) {
7364
7439
  if (!task.artifacts || typeof task.artifacts !== "object") {
7365
7440
  task.artifacts = { files: [] };
@@ -7376,48 +7451,110 @@ function applyUpdate(plan, args, now) {
7376
7451
  }
7377
7452
  }
7378
7453
  }
7379
- if (args.notes && args.notes !== true) {
7380
- task.notes = args.notes;
7454
+ if (args2.notes && args2.notes !== true) {
7455
+ task.notes = args2.notes;
7456
+ }
7457
+ if (args2.status === "done" && !task.completed_at) {
7458
+ task.completed_at = now;
7459
+ } else if (args2.status !== "done") {
7460
+ task.completed_at = null;
7461
+ }
7462
+ if (args2["deliverables-pointer"] && args2["deliverables-pointer"] !== true) {
7463
+ if (args2["deliverables-pointer"] !== "current") {
7464
+ return { error: ERRORS.INVALID_DELIVERABLES_POINTER(args2["deliverables-pointer"]) };
7465
+ }
7466
+ task.deliverables = { freshness: "current" };
7467
+ }
7468
+ if (args2["mark-deliverable-stale"] && args2["mark-deliverable-stale"] !== true) {
7469
+ const staleIds = args2["mark-deliverable-stale"].split(",").map((s) => s.trim()).filter(Boolean);
7470
+ for (const staleTaskId of staleIds) {
7471
+ const staleTask = plan.tasks.find((t) => t.id === staleTaskId);
7472
+ if (staleTask) {
7473
+ if (!staleTask.deliverables || typeof staleTask.deliverables !== "object") {
7474
+ staleTask.deliverables = { freshness: "stale" };
7475
+ } else {
7476
+ staleTask.deliverables.freshness = "stale";
7477
+ }
7478
+ }
7479
+ }
7381
7480
  }
7382
- task.completed_at = args.status === "done" ? now : null;
7383
7481
  plan.updated_at = now;
7384
- return { id: task.id, title: task.title || "", old_status: oldStatus, new_status: args.status };
7482
+ return { id: task.id, title: task.title || "", old_status: oldStatus, new_status: args2.status };
7385
7483
  }
7386
- function recomputeCurrentTask(plan, changedTaskId) {
7484
+ function recomputeCurrentTasks(plan, changedTaskId, projectList) {
7387
7485
  let warning = null;
7388
7486
  const changedTask = plan.tasks.find((t) => t.id === changedTaskId);
7389
7487
  const changedToTerminal = changedTask && TERMINAL_STATUSES.includes(changedTask.status);
7390
- const activeInProgress = plan.tasks.find(
7391
- (t) => t.status === "in_progress" && !(t.id === changedTaskId && changedToTerminal)
7392
- );
7393
- if (activeInProgress) {
7394
- plan.current_task = activeInProgress.id;
7395
- plan.status = "in_progress";
7396
- return { warning };
7397
- }
7398
- const doneIds = new Set(
7399
- plan.tasks.filter((t) => t.status === "done").map((t) => t.id)
7488
+ const priorActiveProjects = new Set(
7489
+ Object.keys(plan.current_tasks || {})
7400
7490
  );
7401
- const nextPending = plan.tasks.find(
7402
- (t) => t.status === "pending" && (t.depends_on || []).every((d) => doneIds.has(d))
7491
+ const resolvedIds = new Set(
7492
+ plan.tasks.filter((t) => t.status === "done" || t.status === "skipped").map((t) => t.id)
7403
7493
  );
7404
- if (nextPending) {
7405
- nextPending.status = "in_progress";
7406
- plan.current_task = nextPending.id;
7407
- plan.status = "in_progress";
7408
- return { warning };
7494
+ const projects = projectList && projectList.length > 0 ? projectList : loadSoleProject(findProjectRootFromPath(args.plan)) || ["default"];
7495
+ const currentTasks = {};
7496
+ for (const proj of projects) {
7497
+ const inProgressForProject = plan.tasks.filter(
7498
+ (t) => t.status === "in_progress" && getTaskProjects(t).includes(proj)
7499
+ );
7500
+ if (inProgressForProject.length > 0) {
7501
+ currentTasks[proj] = inProgressForProject[0].id;
7502
+ continue;
7503
+ }
7504
+ const nextPending = plan.tasks.find(
7505
+ (t) => t.status === "pending" && getTaskProjects(t).includes(proj) && (t.depends_on || []).every((d) => resolvedIds.has(d))
7506
+ );
7507
+ if (nextPending) {
7508
+ nextPending.status = "in_progress";
7509
+ currentTasks[proj] = nextPending.id;
7510
+ }
7511
+ }
7512
+ let switchNotification = null;
7513
+ if (changedToTerminal && changedTask) {
7514
+ const newActiveProjects = new Set(Object.keys(currentTasks));
7515
+ const newlyActive = [...newActiveProjects].filter((p) => !priorActiveProjects.has(p));
7516
+ if (newlyActive.length > 0) {
7517
+ switchNotification = {
7518
+ project_switch: {
7519
+ from: [...priorActiveProjects].filter((p) => !newActiveProjects.has(p)),
7520
+ to: newlyActive
7521
+ }
7522
+ };
7523
+ }
7409
7524
  }
7410
- if (plan.tasks.every((t) => t.status === "done")) {
7525
+ const allDone = plan.tasks.every((t) => t.status === "done");
7526
+ const anyInProgress = plan.tasks.some((t) => t.status === "in_progress");
7527
+ const anyPending = plan.tasks.some((t) => t.status === "pending");
7528
+ if (allDone) {
7411
7529
  plan.status = "done";
7412
- plan.current_task = null;
7413
- return { warning };
7530
+ plan.current_tasks = {};
7531
+ } else {
7532
+ plan.current_tasks = currentTasks;
7533
+ if (anyInProgress || Object.keys(currentTasks).length > 0) {
7534
+ plan.status = "in_progress";
7535
+ } else if (anyPending) {
7536
+ plan.status = "in_progress";
7537
+ warning = "All remaining tasks are blocked by dependencies; resolve a blocker before continuing.";
7538
+ }
7414
7539
  }
7415
- plan.current_task = null;
7416
- plan.status = "in_progress";
7417
- warning = "All remaining tasks are blocked by dependencies; resolve a blocker before continuing.";
7418
- return { warning };
7540
+ return { warning, project_switch: switchNotification };
7419
7541
  }
7420
- function validatePlan(plan) {
7542
+ function getTaskProjects(task) {
7543
+ if (Array.isArray(task.project) && task.project.length > 0) {
7544
+ return task.project;
7545
+ }
7546
+ return ["default"];
7547
+ }
7548
+ function deriveProjectList(tasks) {
7549
+ const projects = /* @__PURE__ */ new Set();
7550
+ for (const t of tasks) {
7551
+ for (const p of getTaskProjects(t)) {
7552
+ projects.add(p);
7553
+ }
7554
+ }
7555
+ return [...projects];
7556
+ }
7557
+ function validatePlan(plan, projectList) {
7421
7558
  const errors = [];
7422
7559
  const tasks = Array.isArray(plan.tasks) ? plan.tasks : [];
7423
7560
  const ids = tasks.map((t) => t.id);
@@ -7433,15 +7570,38 @@ function validatePlan(plan) {
7433
7570
  }
7434
7571
  }
7435
7572
  }
7436
- const cycle = findCycle(tasks);
7573
+ const cycle = findCycle(tasks, projectList);
7437
7574
  if (cycle) {
7438
7575
  errors.push(`Dependency cycle detected: ${cycle.join(" -> ")}`);
7439
7576
  }
7440
- const inProgress = tasks.filter((t) => t.status === "in_progress");
7441
- if (inProgress.length > 1) {
7442
- errors.push(
7443
- `More than one task is in_progress: ${inProgress.map((t) => t.id).join(", ")}`
7577
+ const projects = projectList && projectList.length > 0 ? projectList : loadSoleProject(findProjectRootFromPath(args.plan)) || ["default"];
7578
+ for (const proj of projects) {
7579
+ const inProgressForProject = tasks.filter(
7580
+ (t) => t.status === "in_progress" && getTaskProjects(t).includes(proj)
7444
7581
  );
7582
+ if (inProgressForProject.length > 1) {
7583
+ errors.push(
7584
+ `More than one task is in_progress for project "${proj}": ${inProgressForProject.map((t) => t.id).join(", ")}`
7585
+ );
7586
+ }
7587
+ }
7588
+ if (projectList && projectList.length > 0) {
7589
+ for (const t of tasks) {
7590
+ if (Array.isArray(t.project)) {
7591
+ for (const p of t.project) {
7592
+ if (!projectList.includes(p)) {
7593
+ errors.push(ERRORS.INVALID_TASK_PROJECT(t.id, p, projectList));
7594
+ }
7595
+ }
7596
+ }
7597
+ }
7598
+ }
7599
+ if (projectList && projectList.length > 0) {
7600
+ for (const p of projectList) {
7601
+ if (!PROJECT_NAME_RE.test(p)) {
7602
+ errors.push(ERRORS.INVALID_PROJECT_NAME(p));
7603
+ }
7604
+ }
7445
7605
  }
7446
7606
  for (const t of tasks) {
7447
7607
  if (!Array.isArray(t.acceptance) || t.acceptance.length === 0) {
@@ -7453,27 +7613,63 @@ function validatePlan(plan) {
7453
7613
  errors.push(`Task "${t.id}" is not done but has completed_at set`);
7454
7614
  }
7455
7615
  }
7616
+ for (const t of tasks) {
7617
+ if (t.deliverables && typeof t.deliverables === "object") {
7618
+ if (!VALID_FRESHNESS.includes(t.deliverables.freshness)) {
7619
+ errors.push(ERRORS.INVALID_FRESHNESS(t.id, t.deliverables.freshness));
7620
+ }
7621
+ }
7622
+ }
7456
7623
  if (plan.status === "done") {
7457
- if (plan.current_task != null) {
7458
- errors.push("plan.status is done but current_task is not null");
7459
- }
7460
- } else if (plan.current_task != null) {
7461
- const ct = tasks.find((t) => t.id === plan.current_task);
7462
- if (!ct) {
7463
- errors.push(`current_task "${plan.current_task}" does not reference a task`);
7464
- } else if (ct.status !== "pending" && ct.status !== "in_progress") {
7465
- errors.push(
7466
- `current_task "${plan.current_task}" has status "${ct.status}" (must be pending or in_progress)`
7467
- );
7624
+ if (plan.current_tasks && Object.keys(plan.current_tasks).length > 0) {
7625
+ errors.push("plan.status is done but current_tasks is not empty");
7626
+ }
7627
+ } else if (plan.current_tasks && typeof plan.current_tasks === "object") {
7628
+ for (const [proj, taskId] of Object.entries(plan.current_tasks)) {
7629
+ const ct = tasks.find((t) => t.id === taskId);
7630
+ if (!ct) {
7631
+ errors.push(`current_tasks["${proj}"] = "${taskId}" does not reference a task`);
7632
+ } else if (ct.status !== "pending" && ct.status !== "in_progress") {
7633
+ errors.push(
7634
+ `current_tasks["${proj}"] = "${taskId}" has status "${ct.status}" (must be pending or in_progress)`
7635
+ );
7636
+ }
7468
7637
  }
7469
7638
  }
7470
7639
  return errors;
7471
7640
  }
7472
- function findCycle(tasks) {
7641
+ function findCycle(tasks, projectList) {
7642
+ if (!projectList || projectList.length <= 1) {
7643
+ return findCycleInSubgraph(tasks, tasks.map((t) => t.id));
7644
+ }
7645
+ const taskMap = new Map(tasks.map((t) => [t.id, t]));
7646
+ for (const proj of projectList) {
7647
+ const idSet = new Set(
7648
+ tasks.filter((t) => getTaskProjects(t).includes(proj)).map((t) => t.id)
7649
+ );
7650
+ const queue = [...idSet];
7651
+ for (const id of queue) {
7652
+ for (const dep of taskMap.get(id)?.depends_on || []) {
7653
+ if (!idSet.has(dep)) {
7654
+ idSet.add(dep);
7655
+ queue.push(dep);
7656
+ }
7657
+ }
7658
+ }
7659
+ const cycle = findCycleInSubgraph(tasks, [...idSet]);
7660
+ if (cycle) return cycle;
7661
+ }
7662
+ return null;
7663
+ }
7664
+ function findCycleInSubgraph(tasks, taskIds) {
7665
+ const idSet = new Set(taskIds);
7473
7666
  const adj = /* @__PURE__ */ new Map();
7474
- for (const t of tasks) adj.set(t.id, t.depends_on || []);
7667
+ for (const t of tasks) {
7668
+ if (!idSet.has(t.id)) continue;
7669
+ adj.set(t.id, (t.depends_on || []).filter((d) => idSet.has(d)));
7670
+ }
7475
7671
  const WHITE = 0, GRAY = 1, BLACK = 2;
7476
- const color = new Map(tasks.map((t) => [t.id, WHITE]));
7672
+ const color = new Map(taskIds.map((id) => [id, WHITE]));
7477
7673
  const stack = [];
7478
7674
  function dfs(node) {
7479
7675
  color.set(node, GRAY);
@@ -7493,28 +7689,28 @@ function findCycle(tasks) {
7493
7689
  color.set(node, BLACK);
7494
7690
  return null;
7495
7691
  }
7496
- for (const t of tasks) {
7497
- if (color.get(t.id) === WHITE) {
7498
- const found = dfs(t.id);
7692
+ for (const id of taskIds) {
7693
+ if (color.get(id) === WHITE) {
7694
+ const found = dfs(id);
7499
7695
  if (found) return found;
7500
7696
  }
7501
7697
  }
7502
7698
  return null;
7503
7699
  }
7504
7700
  function main() {
7505
- const args = parseArgs(process.argv);
7506
- const argErr = validateArgs(args);
7701
+ const args2 = parseArgs(process.argv);
7702
+ const argErr = validateArgs(args2);
7507
7703
  if (argErr) {
7508
7704
  process.stderr.write(argErr + "\n");
7509
7705
  process.exit(1);
7510
7706
  }
7511
- if (!(0, import_node_fs.existsSync)(args.plan)) {
7512
- process.stderr.write(ERRORS.PLAN_NOT_FOUND(args.plan) + "\n");
7707
+ if (!(0, import_node_fs.existsSync)(args2.plan)) {
7708
+ process.stderr.write(ERRORS.PLAN_NOT_FOUND(args2.plan) + "\n");
7513
7709
  process.exit(1);
7514
7710
  }
7515
7711
  let plan;
7516
7712
  try {
7517
- plan = (0, import_yaml.parse)((0, import_node_fs.readFileSync)(args.plan, "utf-8"));
7713
+ plan = (0, import_yaml.parse)((0, import_node_fs.readFileSync)(args2.plan, "utf-8"));
7518
7714
  } catch (e) {
7519
7715
  process.stderr.write(ERRORS.PLAN_PARSE_FAILED(e.message) + "\n");
7520
7716
  process.exit(1);
@@ -7523,24 +7719,43 @@ function main() {
7523
7719
  process.stderr.write(ERRORS.PLAN_PARSE_FAILED("missing tasks[]") + "\n");
7524
7720
  process.exit(1);
7525
7721
  }
7526
- if (!plan.tasks.some((t) => t.id === args.task)) {
7722
+ if (!plan.tasks.some((t) => t.id === args2.task)) {
7527
7723
  process.stderr.write(
7528
- ERRORS.TASK_NOT_FOUND(args.task, plan.tasks.map((t) => t.id)) + "\n"
7724
+ ERRORS.TASK_NOT_FOUND(args2.task, plan.tasks.map((t) => t.id)) + "\n"
7529
7725
  );
7530
7726
  process.exit(1);
7531
7727
  }
7728
+ let projectList = null;
7729
+ if (args2.projects && args2.projects !== true) {
7730
+ projectList = args2.projects.split(",").map((s) => s.trim()).filter(Boolean);
7731
+ } else {
7732
+ projectList = deriveProjectList(plan.tasks);
7733
+ }
7734
+ if (plan.current_task != null && (!plan.current_tasks || typeof plan.current_tasks !== "object")) {
7735
+ plan.current_tasks = { default: plan.current_task };
7736
+ }
7737
+ if ("current_task" in plan) {
7738
+ delete plan.current_task;
7739
+ }
7740
+ if (!plan.current_tasks) {
7741
+ plan.current_tasks = {};
7742
+ }
7532
7743
  const now = (/* @__PURE__ */ new Date()).toISOString();
7533
- const taskChange = applyUpdate(plan, args, now);
7534
- const { warning } = recomputeCurrentTask(plan, args.task);
7535
- const validationErrors = validatePlan(plan);
7744
+ const taskChange = applyUpdate(plan, args2, now);
7745
+ if (taskChange.error) {
7746
+ process.stderr.write(taskChange.error + "\n");
7747
+ process.exit(1);
7748
+ }
7749
+ const { warning, project_switch: switchNotif } = recomputeCurrentTasks(plan, args2.task, projectList);
7750
+ const validationErrors = validatePlan(plan, projectList);
7536
7751
  if (validationErrors.length) {
7537
7752
  process.stderr.write(ERRORS.VALIDATION_FAILED(validationErrors) + "\n");
7538
7753
  process.exit(1);
7539
7754
  }
7540
- const tmpPath = args.plan + ".tmp";
7755
+ const tmpPath = args2.plan + ".tmp";
7541
7756
  try {
7542
- (0, import_node_fs.writeFileSync)(tmpPath, (0, import_yaml.stringify)(plan), "utf-8");
7543
- (0, import_node_fs.renameSync)(tmpPath, args.plan);
7757
+ (0, import_node_fs.writeFileSync)(tmpPath, (0, import_yaml.stringify)(plan, { lineWidth: 200 }), "utf-8");
7758
+ (0, import_node_fs.renameSync)(tmpPath, args2.plan);
7544
7759
  } catch (e) {
7545
7760
  try {
7546
7761
  if ((0, import_node_fs.existsSync)(tmpPath)) (0, import_node_fs.unlinkSync)(tmpPath);
@@ -7553,10 +7768,11 @@ function main() {
7553
7768
  const result = {
7554
7769
  ok: true,
7555
7770
  task: taskChange,
7556
- current_task: plan.current_task ?? null,
7771
+ current_tasks: plan.current_tasks,
7557
7772
  plan_status: plan.status,
7558
7773
  progress: { done: doneCount, total: plan.tasks.length },
7559
- warning
7774
+ ...warning ? { warning } : {},
7775
+ ...switchNotif ? switchNotif : {}
7560
7776
  };
7561
7777
  process.stdout.write(JSON.stringify(result) + "\n");
7562
7778
  }