get-tbd 0.1.26 → 0.1.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.mjs CHANGED
@@ -6710,6 +6710,18 @@ const IssueKind = enumType([
6710
6710
  "chore"
6711
6711
  ]);
6712
6712
  /**
6713
+ * Maximum issue title length before detail belongs in the description body.
6714
+ */
6715
+ const ISSUE_TITLE_MAX_LENGTH = 500;
6716
+ /**
6717
+ * Maximum issue body section length to keep issue files practical to review and sync.
6718
+ */
6719
+ const ISSUE_BODY_MAX_LENGTH = 5e4;
6720
+ /**
6721
+ * Issue title text as persisted in issue files.
6722
+ */
6723
+ const IssueTitle = stringType().min(1).max(ISSUE_TITLE_MAX_LENGTH);
6724
+ /**
6713
6725
  * Priority: 0 (highest/critical) to 4 (lowest).
6714
6726
  */
6715
6727
  const Priority = numberType().int().min(0).max(4);
@@ -6743,12 +6755,12 @@ const Dependency = objectType({
6743
6755
  */
6744
6756
  const IssueSchema = BaseEntity.extend({
6745
6757
  type: literalType("is"),
6746
- title: stringType().min(1).max(500),
6758
+ title: IssueTitle,
6747
6759
  kind: IssueKind.default("task"),
6748
6760
  status: IssueStatus.default("open"),
6749
6761
  priority: Priority.default(2),
6750
- description: stringType().max(5e4).nullable().optional(),
6751
- notes: stringType().max(5e4).nullable().optional(),
6762
+ description: stringType().max(ISSUE_BODY_MAX_LENGTH).nullable().optional(),
6763
+ notes: stringType().max(ISSUE_BODY_MAX_LENGTH).nullable().optional(),
6752
6764
  spec_path: stringType().nullable().optional(),
6753
6765
  assignee: stringType().nullable().optional(),
6754
6766
  labels: arrayType(stringType()).default([]),
@@ -6947,7 +6959,7 @@ const noopLogger = {
6947
6959
  };
6948
6960
 
6949
6961
  //#endregion
6950
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/identity.js
6962
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/identity.js
6951
6963
  var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => {
6952
6964
  const ALIAS = Symbol.for("yaml.alias");
6953
6965
  const DOC = Symbol.for("yaml.document");
@@ -6998,7 +7010,7 @@ var require_identity = /* @__PURE__ */ __commonJSMin(((exports) => {
6998
7010
  }));
6999
7011
 
7000
7012
  //#endregion
7001
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/visit.js
7013
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/visit.js
7002
7014
  var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
7003
7015
  var identity = require_identity();
7004
7016
  const BREAK = Symbol("break visit");
@@ -7189,7 +7201,7 @@ var require_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
7189
7201
  }));
7190
7202
 
7191
7203
  //#endregion
7192
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/directives.js
7204
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/doc/directives.js
7193
7205
  var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => {
7194
7206
  var identity = require_identity();
7195
7207
  var visit = require_visit();
@@ -7355,7 +7367,7 @@ var require_directives = /* @__PURE__ */ __commonJSMin(((exports) => {
7355
7367
  }));
7356
7368
 
7357
7369
  //#endregion
7358
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/anchors.js
7370
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/doc/anchors.js
7359
7371
  var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => {
7360
7372
  var identity = require_identity();
7361
7373
  var visit = require_visit();
@@ -7418,7 +7430,7 @@ var require_anchors = /* @__PURE__ */ __commonJSMin(((exports) => {
7418
7430
  }));
7419
7431
 
7420
7432
  //#endregion
7421
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/applyReviver.js
7433
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/doc/applyReviver.js
7422
7434
  var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => {
7423
7435
  /**
7424
7436
  * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,
@@ -7459,7 +7471,7 @@ var require_applyReviver = /* @__PURE__ */ __commonJSMin(((exports) => {
7459
7471
  }));
7460
7472
 
7461
7473
  //#endregion
7462
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/toJS.js
7474
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/toJS.js
7463
7475
  var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => {
7464
7476
  var identity = require_identity();
7465
7477
  /**
@@ -7497,7 +7509,7 @@ var require_toJS = /* @__PURE__ */ __commonJSMin(((exports) => {
7497
7509
  }));
7498
7510
 
7499
7511
  //#endregion
7500
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Node.js
7512
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/Node.js
7501
7513
  var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => {
7502
7514
  var applyReviver = require_applyReviver();
7503
7515
  var identity = require_identity();
@@ -7532,7 +7544,7 @@ var require_Node = /* @__PURE__ */ __commonJSMin(((exports) => {
7532
7544
  }));
7533
7545
 
7534
7546
  //#endregion
7535
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Alias.js
7547
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/Alias.js
7536
7548
  var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
7537
7549
  var anchors = require_anchors();
7538
7550
  var visit = require_visit();
@@ -7552,6 +7564,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
7552
7564
  * instance of the `source` anchor before this node.
7553
7565
  */
7554
7566
  resolve(doc, ctx) {
7567
+ if (ctx?.maxAliasCount === 0) throw new ReferenceError("Alias resolution is disabled");
7555
7568
  let nodes;
7556
7569
  if (ctx?.aliasResolveCache) nodes = ctx.aliasResolveCache;
7557
7570
  else {
@@ -7626,7 +7639,7 @@ var require_Alias = /* @__PURE__ */ __commonJSMin(((exports) => {
7626
7639
  }));
7627
7640
 
7628
7641
  //#endregion
7629
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Scalar.js
7642
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/Scalar.js
7630
7643
  var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
7631
7644
  var identity = require_identity();
7632
7645
  var Node = require_Node();
@@ -7654,7 +7667,7 @@ var require_Scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
7654
7667
  }));
7655
7668
 
7656
7669
  //#endregion
7657
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/createNode.js
7670
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/doc/createNode.js
7658
7671
  var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => {
7659
7672
  var Alias = require_Alias();
7660
7673
  var identity = require_identity();
@@ -7718,7 +7731,7 @@ var require_createNode = /* @__PURE__ */ __commonJSMin(((exports) => {
7718
7731
  }));
7719
7732
 
7720
7733
  //#endregion
7721
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Collection.js
7734
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/Collection.js
7722
7735
  var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => {
7723
7736
  var createNode = require_createNode();
7724
7737
  var identity = require_identity();
@@ -7840,7 +7853,7 @@ var require_Collection = /* @__PURE__ */ __commonJSMin(((exports) => {
7840
7853
  }));
7841
7854
 
7842
7855
  //#endregion
7843
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyComment.js
7856
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyComment.js
7844
7857
  var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => {
7845
7858
  /**
7846
7859
  * Stringifies a comment.
@@ -7861,7 +7874,7 @@ var require_stringifyComment = /* @__PURE__ */ __commonJSMin(((exports) => {
7861
7874
  }));
7862
7875
 
7863
7876
  //#endregion
7864
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/foldFlowLines.js
7877
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/foldFlowLines.js
7865
7878
  var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => {
7866
7879
  const FOLD_FLOW = "flow";
7867
7880
  const FOLD_BLOCK = "block";
@@ -7978,7 +7991,7 @@ var require_foldFlowLines = /* @__PURE__ */ __commonJSMin(((exports) => {
7978
7991
  }));
7979
7992
 
7980
7993
  //#endregion
7981
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyString.js
7994
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyString.js
7982
7995
  var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => {
7983
7996
  var Scalar = require_Scalar();
7984
7997
  var foldFlowLines = require_foldFlowLines();
@@ -8203,7 +8216,7 @@ var require_stringifyString = /* @__PURE__ */ __commonJSMin(((exports) => {
8203
8216
  }));
8204
8217
 
8205
8218
  //#endregion
8206
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringify.js
8219
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/stringify.js
8207
8220
  var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
8208
8221
  var anchors = require_anchors();
8209
8222
  var identity = require_identity();
@@ -8226,6 +8239,7 @@ var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
8226
8239
  nullStr: "null",
8227
8240
  simpleKeys: false,
8228
8241
  singleQuote: null,
8242
+ trailingComma: false,
8229
8243
  trueStr: "true",
8230
8244
  verifyAliasOrder: true
8231
8245
  }, doc.schema.toStringOptions, options);
@@ -8311,7 +8325,7 @@ var require_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
8311
8325
  }));
8312
8326
 
8313
8327
  //#endregion
8314
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyPair.js
8328
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyPair.js
8315
8329
  var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => {
8316
8330
  var identity = require_identity();
8317
8331
  var Scalar = require_Scalar();
@@ -8409,7 +8423,7 @@ var require_stringifyPair = /* @__PURE__ */ __commonJSMin(((exports) => {
8409
8423
  }));
8410
8424
 
8411
8425
  //#endregion
8412
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/log.js
8426
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/log.js
8413
8427
  var require_log = /* @__PURE__ */ __commonJSMin(((exports) => {
8414
8428
  var node_process$2 = __require("process");
8415
8429
  function debug(logLevel, ...messages) {
@@ -8424,7 +8438,7 @@ var require_log = /* @__PURE__ */ __commonJSMin(((exports) => {
8424
8438
  }));
8425
8439
 
8426
8440
  //#endregion
8427
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/merge.js
8441
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/merge.js
8428
8442
  var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => {
8429
8443
  var identity = require_identity();
8430
8444
  var Scalar = require_Scalar();
@@ -8439,13 +8453,13 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => {
8439
8453
  };
8440
8454
  const 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);
8441
8455
  function addMergeToJSMap(ctx, map, value) {
8442
- value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;
8443
- if (identity.isSeq(value)) for (const it of value.items) mergeValue(ctx, map, it);
8444
- else if (Array.isArray(value)) for (const it of value) mergeValue(ctx, map, it);
8445
- else mergeValue(ctx, map, value);
8456
+ const source = resolveAliasValue(ctx, value);
8457
+ if (identity.isSeq(source)) for (const it of source.items) mergeValue(ctx, map, it);
8458
+ else if (Array.isArray(source)) for (const it of source) mergeValue(ctx, map, it);
8459
+ else mergeValue(ctx, map, source);
8446
8460
  }
8447
8461
  function mergeValue(ctx, map, value) {
8448
- const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;
8462
+ const source = resolveAliasValue(ctx, value);
8449
8463
  if (!identity.isMap(source)) throw new Error("Merge sources must be maps or map aliases");
8450
8464
  const srcMap = source.toJSON(null, ctx, Map);
8451
8465
  for (const [key, value] of srcMap) if (map instanceof Map) {
@@ -8459,13 +8473,16 @@ var require_merge = /* @__PURE__ */ __commonJSMin(((exports) => {
8459
8473
  });
8460
8474
  return map;
8461
8475
  }
8476
+ function resolveAliasValue(ctx, value) {
8477
+ return ctx && identity.isAlias(value) ? value.resolve(ctx.doc, ctx) : value;
8478
+ }
8462
8479
  exports.addMergeToJSMap = addMergeToJSMap;
8463
8480
  exports.isMergeKey = isMergeKey;
8464
8481
  exports.merge = merge;
8465
8482
  }));
8466
8483
 
8467
8484
  //#endregion
8468
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/addPairToJSMap.js
8485
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/addPairToJSMap.js
8469
8486
  var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => {
8470
8487
  var log = require_log();
8471
8488
  var merge = require_merge();
@@ -8517,7 +8534,7 @@ var require_addPairToJSMap = /* @__PURE__ */ __commonJSMin(((exports) => {
8517
8534
  }));
8518
8535
 
8519
8536
  //#endregion
8520
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/Pair.js
8537
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/Pair.js
8521
8538
  var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => {
8522
8539
  var createNode = require_createNode();
8523
8540
  var stringifyPair = require_stringifyPair();
@@ -8551,7 +8568,7 @@ var require_Pair = /* @__PURE__ */ __commonJSMin(((exports) => {
8551
8568
  }));
8552
8569
 
8553
8570
  //#endregion
8554
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyCollection.js
8571
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyCollection.js
8555
8572
  var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => {
8556
8573
  var identity = require_identity();
8557
8574
  var stringify = require_stringify();
@@ -8635,9 +8652,13 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => {
8635
8652
  }
8636
8653
  if (comment) reqNewline = true;
8637
8654
  let str = stringify.stringify(item, itemCtx, () => comment = null);
8655
+ reqNewline || (reqNewline = lines.length > linesAtValue || str.includes("\n"));
8638
8656
  if (i < items.length - 1) str += ",";
8657
+ else if (ctx.options.trailingComma) {
8658
+ if (ctx.options.lineWidth > 0) reqNewline || (reqNewline = lines.reduce((sum, line) => sum + line.length + 2, 2) + (str.length + 2) > ctx.options.lineWidth);
8659
+ if (reqNewline) str += ",";
8660
+ }
8639
8661
  if (comment) str += stringifyComment.lineComment(str, itemIndent, commentString(comment));
8640
- if (!reqNewline && (lines.length > linesAtValue || str.includes("\n"))) reqNewline = true;
8641
8662
  lines.push(str);
8642
8663
  linesAtValue = lines.length;
8643
8664
  }
@@ -8666,7 +8687,7 @@ var require_stringifyCollection = /* @__PURE__ */ __commonJSMin(((exports) => {
8666
8687
  }));
8667
8688
 
8668
8689
  //#endregion
8669
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/YAMLMap.js
8690
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/YAMLMap.js
8670
8691
  var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => {
8671
8692
  var stringifyCollection = require_stringifyCollection();
8672
8693
  var addPairToJSMap = require_addPairToJSMap();
@@ -8776,7 +8797,7 @@ var require_YAMLMap = /* @__PURE__ */ __commonJSMin(((exports) => {
8776
8797
  }));
8777
8798
 
8778
8799
  //#endregion
8779
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/map.js
8800
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/common/map.js
8780
8801
  var require_map = /* @__PURE__ */ __commonJSMin(((exports) => {
8781
8802
  var identity = require_identity();
8782
8803
  var YAMLMap = require_YAMLMap();
@@ -8795,7 +8816,7 @@ var require_map = /* @__PURE__ */ __commonJSMin(((exports) => {
8795
8816
  }));
8796
8817
 
8797
8818
  //#endregion
8798
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/nodes/YAMLSeq.js
8819
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/YAMLSeq.js
8799
8820
  var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => {
8800
8821
  var createNode = require_createNode();
8801
8822
  var stringifyCollection = require_stringifyCollection();
@@ -8902,7 +8923,7 @@ var require_YAMLSeq = /* @__PURE__ */ __commonJSMin(((exports) => {
8902
8923
  }));
8903
8924
 
8904
8925
  //#endregion
8905
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/seq.js
8926
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/common/seq.js
8906
8927
  var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
8907
8928
  var identity = require_identity();
8908
8929
  var YAMLSeq = require_YAMLSeq();
@@ -8921,7 +8942,7 @@ var require_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
8921
8942
  }));
8922
8943
 
8923
8944
  //#endregion
8924
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/string.js
8945
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/common/string.js
8925
8946
  var require_string = /* @__PURE__ */ __commonJSMin(((exports) => {
8926
8947
  var stringifyString = require_stringifyString();
8927
8948
  const string = {
@@ -8938,7 +8959,7 @@ var require_string = /* @__PURE__ */ __commonJSMin(((exports) => {
8938
8959
  }));
8939
8960
 
8940
8961
  //#endregion
8941
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/common/null.js
8962
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/common/null.js
8942
8963
  var require_null = /* @__PURE__ */ __commonJSMin(((exports) => {
8943
8964
  var Scalar = require_Scalar();
8944
8965
  const nullTag = {
@@ -8954,7 +8975,7 @@ var require_null = /* @__PURE__ */ __commonJSMin(((exports) => {
8954
8975
  }));
8955
8976
 
8956
8977
  //#endregion
8957
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/bool.js
8978
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/core/bool.js
8958
8979
  var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
8959
8980
  var Scalar = require_Scalar();
8960
8981
  const boolTag = {
@@ -8974,14 +8995,14 @@ var require_bool$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
8974
8995
  }));
8975
8996
 
8976
8997
  //#endregion
8977
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyNumber.js
8998
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyNumber.js
8978
8999
  var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => {
8979
9000
  function stringifyNumber({ format, minFractionDigits, tag, value }) {
8980
9001
  if (typeof value === "bigint") return String(value);
8981
9002
  const num = typeof value === "number" ? value : Number(value);
8982
9003
  if (!isFinite(num)) return isNaN(num) ? ".nan" : num < 0 ? "-.inf" : ".inf";
8983
9004
  let n = Object.is(value, -0) ? "-0" : JSON.stringify(value);
8984
- if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^\d/.test(n)) {
9005
+ if (!format && minFractionDigits && (!tag || tag === "tag:yaml.org,2002:float") && /^-?\d/.test(n) && !n.includes("e")) {
8985
9006
  let i = n.indexOf(".");
8986
9007
  if (i < 0) {
8987
9008
  i = n.length;
@@ -8996,7 +9017,7 @@ var require_stringifyNumber = /* @__PURE__ */ __commonJSMin(((exports) => {
8996
9017
  }));
8997
9018
 
8998
9019
  //#endregion
8999
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/float.js
9020
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/core/float.js
9000
9021
  var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
9001
9022
  var Scalar = require_Scalar();
9002
9023
  var stringifyNumber = require_stringifyNumber();
@@ -9039,7 +9060,7 @@ var require_float$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
9039
9060
  }));
9040
9061
 
9041
9062
  //#endregion
9042
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/int.js
9063
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/core/int.js
9043
9064
  var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
9044
9065
  var stringifyNumber = require_stringifyNumber();
9045
9066
  const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -9081,7 +9102,7 @@ var require_int$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
9081
9102
  }));
9082
9103
 
9083
9104
  //#endregion
9084
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/core/schema.js
9105
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/core/schema.js
9085
9106
  var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
9086
9107
  var map = require_map();
9087
9108
  var _null = require_null();
@@ -9107,7 +9128,7 @@ var require_schema$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
9107
9128
  }));
9108
9129
 
9109
9130
  //#endregion
9110
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/json/schema.js
9131
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/json/schema.js
9111
9132
  var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
9112
9133
  var Scalar = require_Scalar();
9113
9134
  var map = require_map();
@@ -9171,7 +9192,7 @@ var require_schema$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
9171
9192
  }));
9172
9193
 
9173
9194
  //#endregion
9174
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/binary.js
9195
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/binary.js
9175
9196
  var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => {
9176
9197
  var node_buffer = __require("buffer");
9177
9198
  var Scalar = require_Scalar();
@@ -9221,7 +9242,7 @@ var require_binary = /* @__PURE__ */ __commonJSMin(((exports) => {
9221
9242
  }));
9222
9243
 
9223
9244
  //#endregion
9224
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
9245
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/pairs.js
9225
9246
  var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => {
9226
9247
  var identity = require_identity();
9227
9248
  var Pair = require_Pair();
@@ -9282,7 +9303,7 @@ var require_pairs = /* @__PURE__ */ __commonJSMin(((exports) => {
9282
9303
  }));
9283
9304
 
9284
9305
  //#endregion
9285
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/omap.js
9306
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/omap.js
9286
9307
  var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => {
9287
9308
  var identity = require_identity();
9288
9309
  var toJS = require_toJS();
@@ -9346,7 +9367,7 @@ var require_omap = /* @__PURE__ */ __commonJSMin(((exports) => {
9346
9367
  }));
9347
9368
 
9348
9369
  //#endregion
9349
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/bool.js
9370
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/bool.js
9350
9371
  var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => {
9351
9372
  var Scalar = require_Scalar();
9352
9373
  function boolStringify({ value, source }, ctx) {
@@ -9374,7 +9395,7 @@ var require_bool = /* @__PURE__ */ __commonJSMin(((exports) => {
9374
9395
  }));
9375
9396
 
9376
9397
  //#endregion
9377
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/float.js
9398
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/float.js
9378
9399
  var require_float = /* @__PURE__ */ __commonJSMin(((exports) => {
9379
9400
  var Scalar = require_Scalar();
9380
9401
  var stringifyNumber = require_stringifyNumber();
@@ -9420,7 +9441,7 @@ var require_float = /* @__PURE__ */ __commonJSMin(((exports) => {
9420
9441
  }));
9421
9442
 
9422
9443
  //#endregion
9423
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/int.js
9444
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/int.js
9424
9445
  var require_int = /* @__PURE__ */ __commonJSMin(((exports) => {
9425
9446
  var stringifyNumber = require_stringifyNumber();
9426
9447
  const intIdentify = (value) => typeof value === "bigint" || Number.isInteger(value);
@@ -9496,7 +9517,7 @@ var require_int = /* @__PURE__ */ __commonJSMin(((exports) => {
9496
9517
  }));
9497
9518
 
9498
9519
  //#endregion
9499
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/set.js
9520
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/set.js
9500
9521
  var require_set = /* @__PURE__ */ __commonJSMin(((exports) => {
9501
9522
  var identity = require_identity();
9502
9523
  var Pair = require_Pair();
@@ -9565,7 +9586,7 @@ var require_set = /* @__PURE__ */ __commonJSMin(((exports) => {
9565
9586
  }));
9566
9587
 
9567
9588
  //#endregion
9568
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
9589
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js
9569
9590
  var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => {
9570
9591
  var stringifyNumber = require_stringifyNumber();
9571
9592
  /** Internal types handle bigint as number, because TS can't figure it out. */
@@ -9649,7 +9670,7 @@ var require_timestamp = /* @__PURE__ */ __commonJSMin(((exports) => {
9649
9670
  }));
9650
9671
 
9651
9672
  //#endregion
9652
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/yaml-1.1/schema.js
9673
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/yaml-1.1/schema.js
9653
9674
  var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => {
9654
9675
  var map = require_map();
9655
9676
  var _null = require_null();
@@ -9691,7 +9712,7 @@ var require_schema = /* @__PURE__ */ __commonJSMin(((exports) => {
9691
9712
  }));
9692
9713
 
9693
9714
  //#endregion
9694
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/tags.js
9715
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/tags.js
9695
9716
  var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => {
9696
9717
  var map = require_map();
9697
9718
  var _null = require_null();
@@ -9776,7 +9797,7 @@ var require_tags = /* @__PURE__ */ __commonJSMin(((exports) => {
9776
9797
  }));
9777
9798
 
9778
9799
  //#endregion
9779
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/schema/Schema.js
9800
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/schema/Schema.js
9780
9801
  var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => {
9781
9802
  var identity = require_identity();
9782
9803
  var map = require_map();
@@ -9806,7 +9827,7 @@ var require_Schema = /* @__PURE__ */ __commonJSMin(((exports) => {
9806
9827
  }));
9807
9828
 
9808
9829
  //#endregion
9809
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/stringify/stringifyDocument.js
9830
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/stringify/stringifyDocument.js
9810
9831
  var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => {
9811
9832
  var identity = require_identity();
9812
9833
  var stringify = require_stringify();
@@ -9868,7 +9889,7 @@ var require_stringifyDocument = /* @__PURE__ */ __commonJSMin(((exports) => {
9868
9889
  }));
9869
9890
 
9870
9891
  //#endregion
9871
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/doc/Document.js
9892
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/doc/Document.js
9872
9893
  var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => {
9873
9894
  var Alias = require_Alias();
9874
9895
  var Collection = require_Collection();
@@ -10150,7 +10171,7 @@ var require_Document = /* @__PURE__ */ __commonJSMin(((exports) => {
10150
10171
  }));
10151
10172
 
10152
10173
  //#endregion
10153
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/errors.js
10174
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/errors.js
10154
10175
  var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => {
10155
10176
  var YAMLError = class extends Error {
10156
10177
  constructor(name, pos, code, message) {
@@ -10204,7 +10225,7 @@ var require_errors = /* @__PURE__ */ __commonJSMin(((exports) => {
10204
10225
  }));
10205
10226
 
10206
10227
  //#endregion
10207
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-props.js
10228
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-props.js
10208
10229
  var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => {
10209
10230
  function resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {
10210
10231
  let spaceBefore = false;
@@ -10312,7 +10333,7 @@ var require_resolve_props = /* @__PURE__ */ __commonJSMin(((exports) => {
10312
10333
  }));
10313
10334
 
10314
10335
  //#endregion
10315
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-contains-newline.js
10336
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/util-contains-newline.js
10316
10337
  var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) => {
10317
10338
  function containsNewline(key) {
10318
10339
  if (!key) return null;
@@ -10342,7 +10363,7 @@ var require_util_contains_newline = /* @__PURE__ */ __commonJSMin(((exports) =>
10342
10363
  }));
10343
10364
 
10344
10365
  //#endregion
10345
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-flow-indent-check.js
10366
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/util-flow-indent-check.js
10346
10367
  var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) => {
10347
10368
  var utilContainsNewline = require_util_contains_newline();
10348
10369
  function flowIndentCheck(indent, fc, onError) {
@@ -10355,7 +10376,7 @@ var require_util_flow_indent_check = /* @__PURE__ */ __commonJSMin(((exports) =>
10355
10376
  }));
10356
10377
 
10357
10378
  //#endregion
10358
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-map-includes.js
10379
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/util-map-includes.js
10359
10380
  var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => {
10360
10381
  var identity = require_identity();
10361
10382
  function mapIncludes(ctx, items, search) {
@@ -10368,7 +10389,7 @@ var require_util_map_includes = /* @__PURE__ */ __commonJSMin(((exports) => {
10368
10389
  }));
10369
10390
 
10370
10391
  //#endregion
10371
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-block-map.js
10392
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-block-map.js
10372
10393
  var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => {
10373
10394
  var Pair = require_Pair();
10374
10395
  var YAMLMap = require_YAMLMap();
@@ -10453,7 +10474,7 @@ var require_resolve_block_map = /* @__PURE__ */ __commonJSMin(((exports) => {
10453
10474
  }));
10454
10475
 
10455
10476
  //#endregion
10456
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-block-seq.js
10477
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-block-seq.js
10457
10478
  var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
10458
10479
  var YAMLSeq = require_YAMLSeq();
10459
10480
  var resolveProps = require_resolve_props();
@@ -10496,7 +10517,7 @@ var require_resolve_block_seq = /* @__PURE__ */ __commonJSMin(((exports) => {
10496
10517
  }));
10497
10518
 
10498
10519
  //#endregion
10499
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-end.js
10520
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-end.js
10500
10521
  var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => {
10501
10522
  function resolveEnd(end, offset, reqSpace, onError) {
10502
10523
  let comment = "";
@@ -10535,7 +10556,7 @@ var require_resolve_end = /* @__PURE__ */ __commonJSMin(((exports) => {
10535
10556
  }));
10536
10557
 
10537
10558
  //#endregion
10538
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-flow-collection.js
10559
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-flow-collection.js
10539
10560
  var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
10540
10561
  var identity = require_identity();
10541
10562
  var Pair = require_Pair();
@@ -10691,7 +10712,7 @@ var require_resolve_flow_collection = /* @__PURE__ */ __commonJSMin(((exports) =
10691
10712
  }));
10692
10713
 
10693
10714
  //#endregion
10694
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-collection.js
10715
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/compose-collection.js
10695
10716
  var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
10696
10717
  var identity = require_identity();
10697
10718
  var Scalar = require_Scalar();
@@ -10744,7 +10765,7 @@ var require_compose_collection = /* @__PURE__ */ __commonJSMin(((exports) => {
10744
10765
  }));
10745
10766
 
10746
10767
  //#endregion
10747
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-block-scalar.js
10768
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-block-scalar.js
10748
10769
  var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
10749
10770
  var Scalar = require_Scalar();
10750
10771
  function resolveBlockScalar(ctx, scalar, onError) {
@@ -10920,7 +10941,7 @@ var require_resolve_block_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
10920
10941
  }));
10921
10942
 
10922
10943
  //#endregion
10923
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/resolve-flow-scalar.js
10944
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/resolve-flow-scalar.js
10924
10945
  var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
10925
10946
  var Scalar = require_Scalar();
10926
10947
  var resolveEnd = require_resolve_end();
@@ -11052,11 +11073,7 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
11052
11073
  next = source[++i + 1];
11053
11074
  while (next === " " || next === " ") next = source[++i + 1];
11054
11075
  } else if (next === "x" || next === "u" || next === "U") {
11055
- const length = {
11056
- x: 2,
11057
- u: 4,
11058
- U: 8
11059
- }[next];
11076
+ const length = next === "x" ? 2 : next === "u" ? 4 : 8;
11060
11077
  res += parseCharCode(source, i + 1, length, onError);
11061
11078
  i += length;
11062
11079
  } else {
@@ -11116,18 +11133,19 @@ var require_resolve_flow_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
11116
11133
  function parseCharCode(source, offset, length, onError) {
11117
11134
  const cc = source.substr(offset, length);
11118
11135
  const code = cc.length === length && /^[0-9a-fA-F]+$/.test(cc) ? parseInt(cc, 16) : NaN;
11119
- if (isNaN(code)) {
11136
+ try {
11137
+ return String.fromCodePoint(code);
11138
+ } catch {
11120
11139
  const raw = source.substr(offset - 2, length + 2);
11121
11140
  onError(offset - 2, "BAD_DQ_ESCAPE", `Invalid escape sequence ${raw}`);
11122
11141
  return raw;
11123
11142
  }
11124
- return String.fromCodePoint(code);
11125
11143
  }
11126
11144
  exports.resolveFlowScalar = resolveFlowScalar;
11127
11145
  }));
11128
11146
 
11129
11147
  //#endregion
11130
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-scalar.js
11148
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/compose-scalar.js
11131
11149
  var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
11132
11150
  var identity = require_identity();
11133
11151
  var Scalar = require_Scalar();
@@ -11187,7 +11205,7 @@ var require_compose_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
11187
11205
  }));
11188
11206
 
11189
11207
  //#endregion
11190
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/util-empty-scalar-position.js
11208
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/util-empty-scalar-position.js
11191
11209
  var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports) => {
11192
11210
  function emptyScalarPosition(offset, before, pos) {
11193
11211
  if (before) {
@@ -11215,7 +11233,7 @@ var require_util_empty_scalar_position = /* @__PURE__ */ __commonJSMin(((exports
11215
11233
  }));
11216
11234
 
11217
11235
  //#endregion
11218
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-node.js
11236
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/compose-node.js
11219
11237
  var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => {
11220
11238
  var Alias = require_Alias();
11221
11239
  var identity = require_identity();
@@ -11247,14 +11265,18 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => {
11247
11265
  case "block-map":
11248
11266
  case "block-seq":
11249
11267
  case "flow-collection":
11250
- node = composeCollection.composeCollection(CN, ctx, token, props, onError);
11251
- if (anchor) node.anchor = anchor.source.substring(1);
11268
+ try {
11269
+ node = composeCollection.composeCollection(CN, ctx, token, props, onError);
11270
+ if (anchor) node.anchor = anchor.source.substring(1);
11271
+ } catch (error) {
11272
+ onError(token, "RESOURCE_EXHAUSTION", error instanceof Error ? error.message : String(error));
11273
+ }
11252
11274
  break;
11253
11275
  default:
11254
11276
  onError(token, "UNEXPECTED_TOKEN", token.type === "error" ? token.message : `Unsupported token (type: ${token.type})`);
11255
- node = composeEmptyNode(ctx, token.offset, void 0, null, props, onError);
11256
11277
  isSrcToken = false;
11257
11278
  }
11279
+ node ?? (node = composeEmptyNode(ctx, token.offset, void 0, null, props, onError));
11258
11280
  if (anchor && node.anchor === "") onError(anchor, "BAD_ALIAS", "Anchor cannot be an empty string");
11259
11281
  if (atKey && ctx.options.stringKeys && (!identity.isScalar(node) || typeof node.value !== "string" || node.tag && node.tag !== "tag:yaml.org,2002:str")) onError(tag ?? token, "NON_STRING_KEY", "With stringKeys, all keys must be strings");
11260
11282
  if (spaceBefore) node.spaceBefore = true;
@@ -11301,7 +11323,7 @@ var require_compose_node = /* @__PURE__ */ __commonJSMin(((exports) => {
11301
11323
  }));
11302
11324
 
11303
11325
  //#endregion
11304
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/compose-doc.js
11326
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/compose-doc.js
11305
11327
  var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => {
11306
11328
  var Document = require_Document();
11307
11329
  var composeNode = require_compose_node();
@@ -11344,7 +11366,7 @@ var require_compose_doc = /* @__PURE__ */ __commonJSMin(((exports) => {
11344
11366
  }));
11345
11367
 
11346
11368
  //#endregion
11347
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/compose/composer.js
11369
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/compose/composer.js
11348
11370
  var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => {
11349
11371
  var node_process$1 = __require("process");
11350
11372
  var directives = require_directives();
@@ -11543,7 +11565,7 @@ var require_composer = /* @__PURE__ */ __commonJSMin(((exports) => {
11543
11565
  }));
11544
11566
 
11545
11567
  //#endregion
11546
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-scalar.js
11568
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/parse/cst-scalar.js
11547
11569
  var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
11548
11570
  var resolveBlockScalar = require_resolve_block_scalar();
11549
11571
  var resolveFlowScalar = require_resolve_flow_scalar();
@@ -11811,7 +11833,7 @@ var require_cst_scalar = /* @__PURE__ */ __commonJSMin(((exports) => {
11811
11833
  }));
11812
11834
 
11813
11835
  //#endregion
11814
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-stringify.js
11836
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/parse/cst-stringify.js
11815
11837
  var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
11816
11838
  /**
11817
11839
  * Stringify a CST document, token, or collection item
@@ -11863,7 +11885,7 @@ var require_cst_stringify = /* @__PURE__ */ __commonJSMin(((exports) => {
11863
11885
  }));
11864
11886
 
11865
11887
  //#endregion
11866
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst-visit.js
11888
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/parse/cst-visit.js
11867
11889
  var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
11868
11890
  const BREAK = Symbol("break visit");
11869
11891
  const SKIP = Symbol("skip children");
@@ -11955,7 +11977,7 @@ var require_cst_visit = /* @__PURE__ */ __commonJSMin(((exports) => {
11955
11977
  }));
11956
11978
 
11957
11979
  //#endregion
11958
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/cst.js
11980
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/parse/cst.js
11959
11981
  var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => {
11960
11982
  var cstScalar = require_cst_scalar();
11961
11983
  var cstStringify = require_cst_stringify();
@@ -12035,7 +12057,7 @@ var require_cst = /* @__PURE__ */ __commonJSMin(((exports) => {
12035
12057
  }));
12036
12058
 
12037
12059
  //#endregion
12038
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/lexer.js
12060
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/parse/lexer.js
12039
12061
  var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => {
12040
12062
  var cst = require_cst();
12041
12063
  function isEmpty(ch) {
@@ -12555,7 +12577,7 @@ var require_lexer = /* @__PURE__ */ __commonJSMin(((exports) => {
12555
12577
  }));
12556
12578
 
12557
12579
  //#endregion
12558
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/line-counter.js
12580
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/parse/line-counter.js
12559
12581
  var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => {
12560
12582
  /**
12561
12583
  * Tracks newlines during parsing in order to provide an efficient API for
@@ -12603,7 +12625,7 @@ var require_line_counter = /* @__PURE__ */ __commonJSMin(((exports) => {
12603
12625
  }));
12604
12626
 
12605
12627
  //#endregion
12606
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/parse/parser.js
12628
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/parse/parser.js
12607
12629
  var require_parser$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
12608
12630
  var node_process = __require("process");
12609
12631
  var cst = require_cst();
@@ -13460,7 +13482,7 @@ var require_parser$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
13460
13482
  }));
13461
13483
 
13462
13484
  //#endregion
13463
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/public-api.js
13485
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/public-api.js
13464
13486
  var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => {
13465
13487
  var composer = require_composer();
13466
13488
  var Document = require_Document();
@@ -13548,7 +13570,7 @@ var require_public_api = /* @__PURE__ */ __commonJSMin(((exports) => {
13548
13570
  }));
13549
13571
 
13550
13572
  //#endregion
13551
- //#region ../../node_modules/.pnpm/yaml@2.8.2/node_modules/yaml/dist/index.js
13573
+ //#region ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/index.js
13552
13574
  var require_dist$2 = /* @__PURE__ */ __commonJSMin(((exports) => {
13553
13575
  var composer = require_composer();
13554
13576
  var Document = require_Document();
@@ -14045,7 +14067,7 @@ function serializeIssue(issue) {
14045
14067
  * Package version, derived from git at build time.
14046
14068
  * Format: X.Y.Z for releases, X.Y.Z-dev.N.hash for dev builds.
14047
14069
  */
14048
- const VERSION$1 = "0.1.26";
14070
+ const VERSION$1 = "0.1.28";
14049
14071
 
14050
14072
  //#endregion
14051
14073
  //#region src/cli/lib/version.ts
@@ -99726,6 +99748,29 @@ function formatDebugId(internalId, mapping, prefix = "tbd") {
99726
99748
  return `${formatDisplayId(internalId, mapping, prefix)} (${internalId})`;
99727
99749
  }
99728
99750
 
99751
+ //#endregion
99752
+ //#region src/utils/zod-error-utils.ts
99753
+ /**
99754
+ * Helpers for rendering Zod errors without relying on object inspection.
99755
+ */
99756
+ /**
99757
+ * Format a ZodError as concise path-qualified messages for CLI output.
99758
+ */
99759
+ function formatZodError(error) {
99760
+ const messages = error.issues.map((issue) => {
99761
+ return `${issue.path.length > 0 ? issue.path.join(".") : "<root>"}: ${issue.message}`;
99762
+ });
99763
+ return messages.length > 0 ? messages.join("; ") : error.message;
99764
+ }
99765
+ /**
99766
+ * Format unknown thrown values as safe strings for warnings and diagnostics.
99767
+ */
99768
+ function formatUnknownError(error) {
99769
+ if (error instanceof ZodError) return formatZodError(error);
99770
+ if (error instanceof Error) return error.message;
99771
+ return String(error);
99772
+ }
99773
+
99729
99774
  //#endregion
99730
99775
  //#region src/file/storage.ts
99731
99776
  /**
@@ -99737,6 +99782,10 @@ function formatDebugId(internalId, mapping, prefix = "tbd") {
99737
99782
  * See: tbd-design.md §3.2 Storage Layer
99738
99783
  */
99739
99784
  /**
99785
+ * Maximum issue files read concurrently to avoid exhausting file descriptors in large repos.
99786
+ */
99787
+ const ISSUE_READ_BATCH_SIZE = 200;
99788
+ /**
99740
99789
  * Get the path to an issue file.
99741
99790
  */
99742
99791
  function getIssuePath(baseDir, id) {
@@ -99754,7 +99803,8 @@ async function readIssue(baseDir, id) {
99754
99803
  * Uses atomic write to prevent corruption.
99755
99804
  */
99756
99805
  async function writeIssue(baseDir, issue) {
99757
- await writeFile(getIssuePath(baseDir, issue.id), serializeIssue(issue));
99806
+ const validIssue = IssueSchema.parse(issue);
99807
+ await writeFile(getIssuePath(baseDir, validIssue.id), serializeIssue(validIssue));
99758
99808
  }
99759
99809
  /**
99760
99810
  * List all issues in the worktree.
@@ -99762,7 +99812,8 @@ async function writeIssue(baseDir, issue) {
99762
99812
  *
99763
99813
  * Uses parallel file reading for better performance with many issues.
99764
99814
  */
99765
- async function listIssues(baseDir) {
99815
+ async function listIssues(baseDir, options = {}) {
99816
+ const warnOnInvalid = options.warnOnInvalid ?? true;
99766
99817
  const issuesDir = join(baseDir, "issues");
99767
99818
  let files;
99768
99819
  try {
@@ -99771,10 +99822,9 @@ async function listIssues(baseDir) {
99771
99822
  return [];
99772
99823
  }
99773
99824
  const mdFiles = files.filter((f) => f.endsWith(".md"));
99774
- const BATCH_SIZE = 200;
99775
99825
  const issues = [];
99776
- for (let i = 0; i < mdFiles.length; i += BATCH_SIZE) {
99777
- const batch = mdFiles.slice(i, i + BATCH_SIZE);
99826
+ for (let i = 0; i < mdFiles.length; i += ISSUE_READ_BATCH_SIZE) {
99827
+ const batch = mdFiles.slice(i, i + ISSUE_READ_BATCH_SIZE);
99778
99828
  const fileContents = await Promise.all(batch.map(async (file) => {
99779
99829
  const filePath = join(issuesDir, file);
99780
99830
  try {
@@ -99782,25 +99832,38 @@ async function listIssues(baseDir) {
99782
99832
  file,
99783
99833
  content: await readFile(filePath, "utf-8")
99784
99834
  };
99785
- } catch {
99835
+ } catch (error) {
99786
99836
  return {
99787
99837
  file,
99788
- content: null
99838
+ error: formatUnknownError(error)
99789
99839
  };
99790
99840
  }
99791
99841
  }));
99792
- for (const { file, content } of fileContents) {
99793
- if (content === null) continue;
99842
+ for (const result of fileContents) {
99843
+ if ("error" in result) {
99844
+ reportInvalidIssueFile({
99845
+ file: result.file,
99846
+ reason: `failed to read file: ${result.error}`
99847
+ }, warnOnInvalid, options.onInvalidIssue);
99848
+ continue;
99849
+ }
99794
99850
  try {
99795
- const issue = parseIssue(content);
99851
+ const issue = parseIssue(result.content);
99796
99852
  issues.push(issue);
99797
99853
  } catch (error) {
99798
- console.warn(`Skipping invalid issue file: ${file}`, error);
99854
+ reportInvalidIssueFile({
99855
+ file: result.file,
99856
+ reason: formatUnknownError(error)
99857
+ }, warnOnInvalid, options.onInvalidIssue);
99799
99858
  }
99800
99859
  }
99801
99860
  }
99802
99861
  return issues;
99803
99862
  }
99863
+ function reportInvalidIssueFile(invalidIssue, warnOnInvalid, onInvalidIssue) {
99864
+ onInvalidIssue?.(invalidIssue);
99865
+ if (warnOnInvalid) console.warn(`Skipping invalid issue file: ${invalidIssue.file}: ${invalidIssue.reason}`);
99866
+ }
99804
99867
 
99805
99868
  //#endregion
99806
99869
  //#region src/utils/lockfile.ts
@@ -100516,6 +100579,22 @@ async function resolveAndValidatePath(inputPath, projectRoot, cwd) {
100516
100579
  return resolved;
100517
100580
  }
100518
100581
 
100582
+ //#endregion
100583
+ //#region src/cli/lib/issue-input-validation.ts
100584
+ /**
100585
+ * CLI validation helpers for user-provided issue fields.
100586
+ */
100587
+ /**
100588
+ * Validate a CLI-provided issue title with actionable user-facing errors.
100589
+ */
100590
+ function validateIssueTitle(title, options) {
100591
+ if (options.rejectBlank ? title.trim().length === 0 : title.length === 0) throw new ValidationError(options.emptyMessage);
100592
+ if (title.length > ISSUE_TITLE_MAX_LENGTH) throw new ValidationError(`Title is too long (${title.length} chars, max ${ISSUE_TITLE_MAX_LENGTH}). Move detail into the description body.`);
100593
+ const result = IssueTitle.safeParse(title);
100594
+ if (!result.success) throw new ValidationError(`Invalid title: ${formatZodError(result.error)}`);
100595
+ return title;
100596
+ }
100597
+
100519
100598
  //#endregion
100520
100599
  //#region src/cli/commands/create.ts
100521
100600
  /**
@@ -100527,6 +100606,10 @@ var CreateHandler = class extends BaseCommand {
100527
100606
  async run(title, options) {
100528
100607
  const tbdRoot = await requireInit();
100529
100608
  if (!title && !options.fromFile) throw new ValidationError("Title is required. Use: tbd create \"Issue title\"");
100609
+ const validatedTitle = title === void 0 ? void 0 : validateIssueTitle(title, {
100610
+ emptyMessage: "Title is required. Use: tbd create \"Issue title\"",
100611
+ rejectBlank: true
100612
+ });
100530
100613
  const kind = this.parseKind(options.type ?? "task");
100531
100614
  const priority = this.validatePriority(options.priority ?? "2");
100532
100615
  let description = options.description;
@@ -100543,7 +100626,7 @@ var CreateHandler = class extends BaseCommand {
100543
100626
  throw new ValidationError(getPathErrorMessage(error));
100544
100627
  }
100545
100628
  if (this.checkDryRun("Would create issue", {
100546
- title,
100629
+ title: validatedTitle,
100547
100630
  kind,
100548
100631
  priority,
100549
100632
  spec: specPath,
@@ -100575,7 +100658,7 @@ var CreateHandler = class extends BaseCommand {
100575
100658
  type: "is",
100576
100659
  id,
100577
100660
  version: 1,
100578
- title,
100661
+ title: validatedTitle,
100579
100662
  kind,
100580
100663
  status: "open",
100581
100664
  priority,
@@ -100607,9 +100690,9 @@ var CreateHandler = class extends BaseCommand {
100607
100690
  this.output.data({
100608
100691
  id: displayId,
100609
100692
  internalId: id,
100610
- title
100693
+ title: validatedTitle
100611
100694
  }, () => {
100612
- this.output.success(`Created ${displayId}: ${title}`);
100695
+ this.output.success(`Created ${displayId}: ${validatedTitle}`);
100613
100696
  });
100614
100697
  }
100615
100698
  parseKind(value) {
@@ -101228,6 +101311,30 @@ const listCommand = new Command("list").description("List issues").option("--sta
101228
101311
  await new ListHandler(command).run(options);
101229
101312
  });
101230
101313
 
101314
+ //#endregion
101315
+ //#region src/cli/lib/dependency-format.ts
101316
+ /**
101317
+ * Compute display-ready dependency directions for an issue.
101318
+ */
101319
+ function getDependencyDirections(issue, allIssues, displayId) {
101320
+ const blocks = issue.dependencies.filter((dep) => dep.type === "blocks").map((dep) => displayId(dep.target));
101321
+ const blockedBy = [];
101322
+ for (const other of allIssues) for (const dep of other.dependencies) if (dep.type === "blocks" && dep.target === issue.id) blockedBy.push(displayId(other.id));
101323
+ return {
101324
+ blocks,
101325
+ blockedBy
101326
+ };
101327
+ }
101328
+ /**
101329
+ * Render dependency directions as YAML comments for round-trippable show output.
101330
+ */
101331
+ function formatDependencyDirectionComments(directions) {
101332
+ const lines = [];
101333
+ if (directions.blocks.length > 0) lines.push(`# Blocks: ${directions.blocks.join(", ")}`);
101334
+ if (directions.blockedBy.length > 0) lines.push(`# Blocked by: ${directions.blockedBy.join(", ")}`);
101335
+ return lines;
101336
+ }
101337
+
101231
101338
  //#endregion
101232
101339
  //#region src/cli/commands/show.ts
101233
101340
  /**
@@ -101240,14 +101347,18 @@ const listCommand = new Command("list").description("List issues").option("--sta
101240
101347
  *
101241
101348
  * @param issue - The issue to render
101242
101349
  * @param colors - Color functions
101243
- * @param maxLines - If set, truncate output to this many lines with an omission notice
101350
+ * @param dependencyDirections - Optional human-facing dependency direction comments
101244
101351
  * @returns Array of formatted lines
101245
101352
  */
101246
- function renderIssueLines(issue, colors) {
101353
+ function renderIssueLines(issue, colors, dependencyDirections) {
101247
101354
  const serialized = serializeIssue(issue);
101248
101355
  const output = [];
101356
+ const dependencyDirectionComments = dependencyDirections ? formatDependencyDirectionComments(dependencyDirections) : [];
101249
101357
  for (const line of serialized.split("\n")) if (line === "---") output.push(colors.dim(line));
101250
- else if (line.startsWith("id:")) output.push(`${colors.dim("id:")} ${colors.id(line.slice(4))}`);
101358
+ else if (line.startsWith("dependencies:")) {
101359
+ for (const comment of dependencyDirectionComments) output.push(colors.dim(comment));
101360
+ output.push(line);
101361
+ } else if (line.startsWith("id:")) output.push(`${colors.dim("id:")} ${colors.id(line.slice(4))}`);
101251
101362
  else if (line.startsWith("status:")) {
101252
101363
  const status = line.slice(8).trim();
101253
101364
  const statusColor = getStatusColor(status, colors);
@@ -101290,6 +101401,10 @@ var ShowHandler = class extends BaseCommand {
101290
101401
  } catch {}
101291
101402
  const maxLines = options.maxLines ? parseInt(options.maxLines, 10) : void 0;
101292
101403
  const displayId = ctx.displayId(issue.id);
101404
+ const allIssues = ctx.cli.json ? void 0 : await listIssues(ctx.dataSyncDir);
101405
+ const displayDependencyId = (dependencyId) => ctx.displayId(dependencyId);
101406
+ const dependencyDirections = allIssues ? getDependencyDirections(issue, allIssues, displayDependencyId) : void 0;
101407
+ const parentDependencyDirections = allIssues && parentIssue ? getDependencyDirections(parentIssue, allIssues, displayDependencyId) : void 0;
101293
101408
  const displayIssue = {
101294
101409
  ...issue,
101295
101410
  displayId,
@@ -101300,11 +101415,11 @@ var ShowHandler = class extends BaseCommand {
101300
101415
  };
101301
101416
  this.output.data(displayIssue, () => {
101302
101417
  const colors = this.output.getColors();
101303
- printWithTruncation(renderIssueLines(issue, colors), colors, maxLines);
101418
+ printWithTruncation(renderIssueLines(issue, colors, dependencyDirections), colors, maxLines);
101304
101419
  if (parentIssue) {
101305
101420
  console.log("");
101306
101421
  console.log(colors.dim("The parent of this bead is:"));
101307
- printWithTruncation(renderIssueLines(parentIssue, colors), colors, PARENT_CONTEXT_MAX_LINES);
101422
+ printWithTruncation(renderIssueLines(parentIssue, colors, parentDependencyDirections), colors, PARENT_CONTEXT_MAX_LINES);
101308
101423
  }
101309
101424
  if (options.showOrder) {
101310
101425
  console.log("");
@@ -101425,7 +101540,10 @@ var UpdateHandler = class extends BaseCommand {
101425
101540
  }
101426
101541
  try {
101427
101542
  const { frontmatter, description, notes } = parseMarkdownWithFrontmatter(content);
101428
- if (typeof frontmatter.title === "string") updates.title = frontmatter.title;
101543
+ if (typeof frontmatter.title === "string") updates.title = validateIssueTitle(frontmatter.title, {
101544
+ emptyMessage: "Title cannot be empty",
101545
+ rejectBlank: true
101546
+ });
101429
101547
  if (typeof frontmatter.status === "string") {
101430
101548
  const result = IssueStatus.safeParse(frontmatter.status);
101431
101549
  if (result.success) updates.status = result.data;
@@ -101456,10 +101574,10 @@ var UpdateHandler = class extends BaseCommand {
101456
101574
  }
101457
101575
  return updates;
101458
101576
  }
101459
- if (options.title !== void 0) {
101460
- if (!options.title.trim()) throw new ValidationError("Title cannot be empty");
101461
- updates.title = options.title;
101462
- }
101577
+ if (options.title !== void 0) updates.title = validateIssueTitle(options.title, {
101578
+ emptyMessage: "Title cannot be empty",
101579
+ rejectBlank: true
101580
+ });
101463
101581
  if (options.status) {
101464
101582
  const result = IssueStatus.safeParse(options.status);
101465
101583
  if (!result.success) throw new ValidationError(`Invalid status: ${options.status}`);
@@ -102142,13 +102260,7 @@ var DependsListHandler = class extends BaseCommand {
102142
102260
  }
102143
102261
  const showDebug = this.ctx.debug;
102144
102262
  const prefix = (await readConfig(tbdRoot)).display.id_prefix;
102145
- const blocks = issue.dependencies.filter((dep) => dep.type === "blocks").map((dep) => showDebug ? formatDebugId(dep.target, mapping, prefix) : formatDisplayId(dep.target, mapping, prefix));
102146
- const blockedBy = [];
102147
- for (const other of allIssues) for (const dep of other.dependencies) if (dep.type === "blocks" && dep.target === internalId) blockedBy.push(showDebug ? formatDebugId(other.id, mapping, prefix) : formatDisplayId(other.id, mapping, prefix));
102148
- const deps = {
102149
- blocks,
102150
- blockedBy
102151
- };
102263
+ const deps = getDependencyDirections(issue, allIssues, (dependencyId) => showDebug ? formatDebugId(dependencyId, mapping, prefix) : formatDisplayId(dependencyId, mapping, prefix));
102152
102264
  this.output.data(deps, () => {
102153
102265
  const colors = this.output.getColors();
102154
102266
  if (deps.blocks.length > 0) console.log(`${colors.bold("Blocks:")} ${deps.blocks.join(", ")}`);
@@ -104668,6 +104780,7 @@ var DoctorHandler = class extends BaseCommand {
104668
104780
  cwd = "";
104669
104781
  config = null;
104670
104782
  issues = [];
104783
+ invalidIssueFiles = [];
104671
104784
  async run(options) {
104672
104785
  const tbdRoot = await requireInit();
104673
104786
  this.cwd = tbdRoot;
@@ -104676,7 +104789,11 @@ var DoctorHandler = class extends BaseCommand {
104676
104789
  this.config = await readConfig(this.cwd);
104677
104790
  } catch {}
104678
104791
  try {
104679
- this.issues = await listIssues(this.dataSyncDir);
104792
+ this.invalidIssueFiles = [];
104793
+ this.issues = await listIssues(this.dataSyncDir, {
104794
+ warnOnInvalid: false,
104795
+ onInvalidIssue: (invalidIssue) => this.invalidIssueFiles.push(invalidIssue)
104796
+ });
104680
104797
  } catch {}
104681
104798
  const statusInfo = await this.gatherStatusInfo();
104682
104799
  const statsInfo = await this.gatherStatsInfo();
@@ -104689,14 +104806,18 @@ var DoctorHandler = class extends BaseCommand {
104689
104806
  healthChecks.push(await this.checkIdMappingConflicts(options.fix));
104690
104807
  healthChecks.push(await this.checkIdMappingDuplicates(options.fix));
104691
104808
  healthChecks.push(await this.checkTempFiles(options.fix));
104692
- healthChecks.push(this.checkIssueValidity(this.issues));
104809
+ healthChecks.push(this.checkIssueValidity(this.issues, this.invalidIssueFiles));
104693
104810
  healthChecks.push(await this.checkWorktree(options.fix));
104694
104811
  const dataLocationResult = await this.checkDataLocation(options.fix);
104695
104812
  healthChecks.push(dataLocationResult);
104696
104813
  if (dataLocationResult.status === "ok" && dataLocationResult.message?.includes("migrated")) {
104697
104814
  this.dataSyncDir = await resolveDataSyncDir(this.cwd);
104698
104815
  try {
104699
- this.issues = await listIssues(this.dataSyncDir);
104816
+ this.invalidIssueFiles = [];
104817
+ this.issues = await listIssues(this.dataSyncDir, {
104818
+ warnOnInvalid: false,
104819
+ onInvalidIssue: (invalidIssue) => this.invalidIssueFiles.push(invalidIssue)
104820
+ });
104700
104821
  } catch {}
104701
104822
  }
104702
104823
  const parsedMaxHistory = options.maxHistory ? parseInt(options.maxHistory, 10) : 50;
@@ -105001,11 +105122,11 @@ var DoctorHandler = class extends BaseCommand {
105001
105122
  };
105002
105123
  }
105003
105124
  async checkTempFiles(fix) {
105004
- const issuesPath = join(CONFIG_DIR, "issues");
105005
105125
  const issuesDir = join(this.dataSyncDir, "issues");
105126
+ const issuesPath = join(DATA_SYNC_DIR, "issues");
105006
105127
  let tempFiles = [];
105007
105128
  try {
105008
- tempFiles = (await readdir(issuesDir)).filter((f) => f.endsWith(".tmp"));
105129
+ tempFiles = (await readdir(issuesDir)).filter((f) => f.endsWith(".tmp") || /\.tmp-\d+$/.test(f));
105009
105130
  } catch {
105010
105131
  return {
105011
105132
  name: "Temp files",
@@ -105039,8 +105160,12 @@ var DoctorHandler = class extends BaseCommand {
105039
105160
  suggestion: "Run: tbd doctor --fix"
105040
105161
  };
105041
105162
  }
105042
- checkIssueValidity(issues) {
105163
+ checkIssueValidity(issues, invalidIssueFiles) {
105043
105164
  const invalid = [];
105165
+ for (const invalidIssueFile of invalidIssueFiles) invalid.push({
105166
+ id: invalidIssueFile.file,
105167
+ reason: invalidIssueFile.reason
105168
+ });
105044
105169
  for (const issue of issues) {
105045
105170
  const issueId = issue.id ?? "unknown";
105046
105171
  if (!issue.id) {
@@ -105090,7 +105215,8 @@ var DoctorHandler = class extends BaseCommand {
105090
105215
  return {
105091
105216
  name: "Issue validity",
105092
105217
  status: "error",
105093
- message: `${invalid.length} invalid issue(s)`,
105218
+ message: `${invalid.length} invalid issue file(s)`,
105219
+ path: join(CONFIG_DIR, "issues"),
105094
105220
  details: invalid.map((i) => `${i.id}: ${i.reason}`),
105095
105221
  suggestion: "Manually fix or delete invalid issue files"
105096
105222
  };