@unbrained/pm-cli 2026.6.16 → 2026.6.17

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 (439) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cli/commands/completion.js +96 -10
  3. package/dist/cli/commands/completion.js.map +1 -1
  4. package/dist/cli/commands/create.d.ts +2 -0
  5. package/dist/cli/commands/create.js +34 -13
  6. package/dist/cli/commands/create.js.map +1 -1
  7. package/dist/cli/commands/index.d.ts +3 -1
  8. package/dist/cli/commands/index.js +5 -3
  9. package/dist/cli/commands/index.js.map +1 -1
  10. package/dist/cli/commands/init.d.ts +2 -1
  11. package/dist/cli/commands/init.js +14 -61
  12. package/dist/cli/commands/init.js.map +1 -1
  13. package/dist/cli/commands/lifecycle-transitions.d.ts +23 -0
  14. package/dist/cli/commands/lifecycle-transitions.js +41 -0
  15. package/dist/cli/commands/lifecycle-transitions.js.map +1 -0
  16. package/dist/cli/commands/linked-artifacts.d.ts +5 -0
  17. package/dist/cli/commands/linked-artifacts.js +18 -4
  18. package/dist/cli/commands/linked-artifacts.js.map +1 -1
  19. package/dist/cli/commands/recurrence-parsers.d.ts +9 -0
  20. package/dist/cli/commands/recurrence-parsers.js +19 -2
  21. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  22. package/dist/cli/commands/repeatable-metadata-parsers.js +28 -4
  23. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
  24. package/dist/cli/commands/scheduling-shortcuts.d.ts +43 -0
  25. package/dist/cli/commands/scheduling-shortcuts.js +87 -0
  26. package/dist/cli/commands/scheduling-shortcuts.js.map +1 -0
  27. package/dist/cli/commands/schema.d.ts +134 -2
  28. package/dist/cli/commands/schema.js +482 -3
  29. package/dist/cli/commands/schema.js.map +1 -1
  30. package/dist/cli/commands/update.js +19 -5
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/help-content.js +26 -2
  33. package/dist/cli/help-content.js.map +1 -1
  34. package/dist/cli/main.d.ts +19 -0
  35. package/dist/cli/main.js +40 -2
  36. package/dist/cli/main.js.map +1 -1
  37. package/dist/cli/register-mutation.js +168 -62
  38. package/dist/cli/register-mutation.js.map +1 -1
  39. package/dist/cli/register-operations.js +103 -2
  40. package/dist/cli/register-operations.js.map +1 -1
  41. package/dist/cli-bundle/chunks/activity-PZYSZA26.js +18 -0
  42. package/dist/cli-bundle/chunks/{activity-MJGTX4LO.js → activity-SFM4THAU.js} +11 -11
  43. package/dist/cli-bundle/chunks/{aggregate-OUGCDFNC.js → aggregate-Y5ADDKBM.js} +10 -10
  44. package/dist/cli-bundle/chunks/{aggregate-MH3GROKB.js → aggregate-YTAUQLRW.js} +10 -10
  45. package/dist/cli-bundle/chunks/{append-VCRUG2W6.js → append-4M7OVV7M.js} +8 -8
  46. package/dist/cli-bundle/chunks/{append-2Q4BPUBW.js → append-HSPK4L4V.js} +8 -8
  47. package/dist/cli-bundle/chunks/{chunk-F2GC6L3N.js → chunk-26BM6YLO.js} +3 -3
  48. package/dist/cli-bundle/chunks/{chunk-ILHLIA47.js → chunk-2C6FU3D3.js} +3 -3
  49. package/dist/cli-bundle/chunks/{chunk-B5Q7XC4K.js → chunk-2OPYLXDO.js} +4 -4
  50. package/dist/cli-bundle/chunks/{chunk-CBMETQ2U.js → chunk-2S46FKLB.js} +5 -5
  51. package/dist/cli-bundle/chunks/{chunk-MJZUZ2QE.js → chunk-2TMKMTEI.js} +3 -3
  52. package/dist/cli-bundle/chunks/{chunk-M23HXJL3.js → chunk-2VH7DFSJ.js} +2 -2
  53. package/dist/cli-bundle/chunks/{chunk-BJWTFOZM.js → chunk-3ENF4NO4.js} +8 -8
  54. package/dist/cli-bundle/chunks/{chunk-7EILPFMA.js → chunk-3GR2HTYY.js} +2 -2
  55. package/dist/cli-bundle/chunks/{chunk-764O7EUA.js → chunk-3R3FYCBV.js} +3 -3
  56. package/dist/cli-bundle/chunks/{chunk-G3CEIXTV.js → chunk-3UKJX3RP.js} +27 -15
  57. package/dist/cli-bundle/chunks/chunk-3UKJX3RP.js.map +7 -0
  58. package/dist/cli-bundle/chunks/chunk-4RTLBTYS.js +83 -0
  59. package/dist/cli-bundle/chunks/chunk-4RTLBTYS.js.map +1 -0
  60. package/dist/cli-bundle/chunks/{chunk-4VLB4JH2.js → chunk-5FDYWOJT.js} +4 -3
  61. package/dist/cli-bundle/chunks/{chunk-WZCQVABQ.js → chunk-5XGWFUW2.js} +2 -2
  62. package/dist/cli-bundle/chunks/{chunk-667XI4UJ.js → chunk-6BD77FGL.js} +8 -8
  63. package/dist/cli-bundle/chunks/{chunk-KZYVTOG5.js → chunk-6HF6CIY2.js} +9 -9
  64. package/dist/cli-bundle/chunks/{chunk-XLNNCKTN.js → chunk-6PBPD4MN.js} +8 -8
  65. package/dist/cli-bundle/chunks/{chunk-Z3MUNQRV.js → chunk-6VFUEGOA.js} +4 -3
  66. package/dist/cli-bundle/chunks/{chunk-HDIDUME4.js → chunk-AAOXSPAE.js} +19 -67
  67. package/dist/cli-bundle/chunks/chunk-AAOXSPAE.js.map +1 -0
  68. package/dist/cli-bundle/chunks/{chunk-O46LTCXQ.js → chunk-AJCQ5GT6.js} +4 -4
  69. package/dist/cli-bundle/chunks/{chunk-7ZGKNHUL.js → chunk-ALTGYHN3.js} +2 -2
  70. package/dist/cli-bundle/chunks/{chunk-PZD7WPUC.js → chunk-AOJQL33L.js} +28 -16
  71. package/dist/cli-bundle/chunks/chunk-AOJQL33L.js.map +1 -0
  72. package/dist/cli-bundle/chunks/{chunk-SY4PZWIZ.js → chunk-AXLDUGXA.js} +2 -2
  73. package/dist/cli-bundle/chunks/{chunk-YGRPBFMA.js → chunk-BITCVGHT.js} +2 -2
  74. package/dist/cli-bundle/chunks/{chunk-UUKORJSN.js → chunk-CGQTFWYI.js} +4 -4
  75. package/dist/cli-bundle/chunks/{chunk-LV5FFQ7M.js → chunk-CHM2VFVL.js} +3 -1
  76. package/dist/cli-bundle/chunks/{chunk-7AGIXLNK.js → chunk-COVLE33A.js} +3 -3
  77. package/dist/cli-bundle/chunks/{chunk-SY4GKIWT.js → chunk-DDNBWH4W.js} +91 -20
  78. package/dist/cli-bundle/chunks/chunk-DDNBWH4W.js.map +1 -0
  79. package/dist/cli-bundle/chunks/{chunk-2JEGCDYT.js → chunk-F5MSD5HE.js} +2 -2
  80. package/dist/cli-bundle/chunks/{chunk-NIQHNDBZ.js → chunk-FAXB6F6R.js} +7 -7
  81. package/dist/cli-bundle/chunks/{chunk-7K2MXFMX.js → chunk-FPDK5BZQ.js} +15 -14
  82. package/dist/cli-bundle/chunks/chunk-FPDK5BZQ.js.map +1 -0
  83. package/dist/cli-bundle/chunks/{chunk-3XOXWOGA.js → chunk-FPY2TOFI.js} +125 -9
  84. package/dist/cli-bundle/chunks/chunk-FPY2TOFI.js.map +1 -0
  85. package/dist/cli-bundle/chunks/{chunk-TIRZIQRP.js → chunk-G2MOUCTU.js} +5 -5
  86. package/dist/cli-bundle/chunks/{chunk-F7WSO5UX.js → chunk-G57RHEGP.js} +33 -4
  87. package/dist/cli-bundle/chunks/chunk-G57RHEGP.js.map +1 -0
  88. package/dist/cli-bundle/chunks/{chunk-GAVE4MYM.js → chunk-IROHIK2T.js} +3 -3
  89. package/dist/cli-bundle/chunks/{chunk-ZJRDVYZI.js → chunk-JZHL4E3Q.js} +4 -4
  90. package/dist/cli-bundle/chunks/{chunk-4KBK4BA3.js → chunk-KA22USXD.js} +14 -13
  91. package/dist/cli-bundle/chunks/chunk-KA22USXD.js.map +7 -0
  92. package/dist/cli-bundle/chunks/{chunk-KQ3LAMDO.js → chunk-KBC4O7SY.js} +18 -66
  93. package/dist/cli-bundle/chunks/chunk-KBC4O7SY.js.map +7 -0
  94. package/dist/cli-bundle/chunks/{chunk-UBMCSJXX.js → chunk-KCAGIH6K.js} +3 -3
  95. package/dist/cli-bundle/chunks/{chunk-656HPQPO.js → chunk-KO3VM5GS.js} +9 -9
  96. package/dist/cli-bundle/chunks/{chunk-OY3P2I6B.js → chunk-LNH5Q32E.js} +2 -2
  97. package/dist/cli-bundle/chunks/{chunk-GQ4JKNMV.js → chunk-LORM3M2I.js} +3 -3
  98. package/dist/cli-bundle/chunks/{chunk-OCTQJP42.js → chunk-M4AVU7VC.js} +7 -7
  99. package/dist/cli-bundle/chunks/{chunk-3WAULYOY.js → chunk-MIBX6ZRN.js} +3 -3
  100. package/dist/cli-bundle/chunks/{chunk-FXNT5LPX.js → chunk-MMF2E3FM.js} +7 -7
  101. package/dist/cli-bundle/chunks/{chunk-AERT7KT3.js → chunk-MORZOR7W.js} +21 -8
  102. package/dist/cli-bundle/chunks/chunk-MORZOR7W.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-IMQG4VR3.js → chunk-MUTUZ2HD.js} +9 -9
  104. package/dist/cli-bundle/chunks/{chunk-7L5VOUYP.js → chunk-OGXEBTX3.js} +32 -3
  105. package/dist/cli-bundle/chunks/{chunk-7L5VOUYP.js.map → chunk-OGXEBTX3.js.map} +2 -2
  106. package/dist/cli-bundle/chunks/{chunk-NCIBNERT.js → chunk-OOIH6J5T.js} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-II7OGE3V.js → chunk-OSBJPPX3.js} +5 -5
  108. package/dist/cli-bundle/chunks/{chunk-HPELHUTG.js → chunk-PJS3WDO2.js} +5 -5
  109. package/dist/cli-bundle/chunks/{chunk-6NQXMGYU.js → chunk-QGPE2H6Z.js} +5 -5
  110. package/dist/cli-bundle/chunks/{chunk-ASM4DVRW.js → chunk-QVTFFLR2.js} +2 -2
  111. package/dist/cli-bundle/chunks/{chunk-FTAZLAR7.js → chunk-QW2F6ARZ.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-A576QZDL.js → chunk-QXC3LWB7.js} +3 -3
  113. package/dist/cli-bundle/chunks/{chunk-6BV7ENQL.js → chunk-QXMXRPX5.js} +2 -2
  114. package/dist/cli-bundle/chunks/{chunk-SPYPC5CB.js → chunk-R4AKUPKI.js} +2 -2
  115. package/dist/cli-bundle/chunks/{chunk-UAR2VNCK.js → chunk-RASR23HV.js} +2 -2
  116. package/dist/cli-bundle/chunks/{chunk-YXTLI4XP.js → chunk-SCDCNGCV.js} +7 -7
  117. package/dist/cli-bundle/chunks/{chunk-2IUJBMKS.js → chunk-SCS5PVAA.js} +8 -8
  118. package/dist/cli-bundle/chunks/{chunk-KTVETP66.js → chunk-SJCMTOEU.js} +3 -1
  119. package/dist/cli-bundle/chunks/{chunk-L6FJPOT4.js → chunk-SO2ES46D.js} +8 -8
  120. package/dist/cli-bundle/chunks/{chunk-GYMG7AG6.js → chunk-TBV33CB4.js} +3 -3
  121. package/dist/cli-bundle/chunks/chunk-TEFEXQWI.js +86 -0
  122. package/dist/cli-bundle/chunks/chunk-TEFEXQWI.js.map +7 -0
  123. package/dist/cli-bundle/chunks/{chunk-OLTYNVJR.js → chunk-TWBDDVIF.js} +20 -7
  124. package/dist/cli-bundle/chunks/chunk-TWBDDVIF.js.map +7 -0
  125. package/dist/cli-bundle/chunks/{chunk-XNOY7TCB.js → chunk-UGUJ2UOR.js} +9 -9
  126. package/dist/cli-bundle/chunks/{chunk-E6J2PEK6.js → chunk-UN6P3IJ4.js} +3 -3
  127. package/dist/cli-bundle/chunks/{chunk-ZONXMSVB.js → chunk-V2GYOMEX.js} +2 -2
  128. package/dist/cli-bundle/chunks/{chunk-T5VU7ROQ.js → chunk-VF3KQGNY.js} +4 -4
  129. package/dist/cli-bundle/chunks/{chunk-RKKIH2ZQ.js → chunk-VHG6LUKR.js} +4 -4
  130. package/dist/cli-bundle/chunks/{chunk-H6EH6ENJ.js → chunk-VXHMQDXA.js} +126 -10
  131. package/dist/cli-bundle/chunks/chunk-VXHMQDXA.js.map +7 -0
  132. package/dist/cli-bundle/chunks/{chunk-G2YVUY7I.js → chunk-VXRFAE7W.js} +2 -2
  133. package/dist/cli-bundle/chunks/{chunk-Q5RLUCP3.js → chunk-WQRL4COW.js} +8 -8
  134. package/dist/cli-bundle/chunks/{chunk-IQVB3YDD.js → chunk-XESAPVZ4.js} +99 -21
  135. package/dist/cli-bundle/chunks/chunk-XESAPVZ4.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-TUB3DZAZ.js → chunk-YLAW3FZN.js} +5 -5
  137. package/dist/cli-bundle/chunks/{claim-NEO7AGWH.js → claim-WGAWJCPY.js} +10 -10
  138. package/dist/cli-bundle/chunks/{claim-4APLUXJW.js → claim-ZI6P4LMU.js} +10 -10
  139. package/dist/cli-bundle/chunks/close-I7PRQ5G7.js +13 -0
  140. package/dist/cli-bundle/chunks/{close-3QABBNGU.js → close-JMVVSIQE.js} +8 -8
  141. package/dist/cli-bundle/chunks/{close-many-MIZLTYGL.js → close-many-IKPJXVOZ.js} +15 -15
  142. package/dist/cli-bundle/chunks/{close-many-Q7Y5AHQI.js → close-many-TXABDCSJ.js} +15 -15
  143. package/dist/cli-bundle/chunks/{comments-DAIQPOMU.js → comments-RLWR2S7W.js} +10 -10
  144. package/dist/cli-bundle/chunks/{comments-IWFSVM4P.js → comments-YAMXKHUX.js} +10 -10
  145. package/dist/cli-bundle/chunks/{config-PXTMAYV3.js → config-7ICYC2WU.js} +47 -9
  146. package/dist/cli-bundle/chunks/config-7ICYC2WU.js.map +7 -0
  147. package/dist/cli-bundle/chunks/{config-IOJELD6O.js → config-NGWN3EXC.js} +48 -10
  148. package/dist/cli-bundle/chunks/config-NGWN3EXC.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{context-QHJSCJW4.js → context-K6QAHN5H.js} +13 -13
  150. package/dist/cli-bundle/chunks/{context-XZS2VFKU.js → context-VGXOOAH2.js} +13 -13
  151. package/dist/cli-bundle/chunks/{contracts-B7U4OJTV.js → contracts-KJGY2AQA.js} +51 -11
  152. package/dist/cli-bundle/chunks/contracts-KJGY2AQA.js.map +1 -0
  153. package/dist/cli-bundle/chunks/{contracts-NSBVLXQ3.js → contracts-KMA6OJY7.js} +50 -10
  154. package/dist/cli-bundle/chunks/{contracts-B7U4OJTV.js.map → contracts-KMA6OJY7.js.map} +7 -1
  155. package/dist/cli-bundle/chunks/{copy-Q64T5FD4.js → copy-Q2PPU4AY.js} +7 -7
  156. package/dist/cli-bundle/chunks/{copy-SG34LCMU.js → copy-SC6UF3PI.js} +7 -7
  157. package/dist/cli-bundle/chunks/{create-IPAX2SNL.js → create-76FE7JVF.js} +14 -14
  158. package/dist/cli-bundle/chunks/create-RTRFW6RE.js +30 -0
  159. package/dist/cli-bundle/chunks/{delete-VH3L7DZ6.js → delete-T6DJSUJI.js} +7 -7
  160. package/dist/cli-bundle/chunks/{delete-TLXR7LJ2.js → delete-XFUX533E.js} +7 -7
  161. package/dist/cli-bundle/chunks/{deps-J3HBBLDB.js → deps-5GWMMS6D.js} +7 -7
  162. package/dist/cli-bundle/chunks/{deps-XV6JJ6IN.js → deps-MCCU633S.js} +7 -7
  163. package/dist/cli-bundle/chunks/{docs-GWDEB7JH.js → docs-HE3HCQ4S.js} +9 -9
  164. package/dist/cli-bundle/chunks/{docs-RCLNSKID.js → docs-SXMOABHR.js} +9 -9
  165. package/dist/cli-bundle/chunks/{extension-7KO2NX2A.js → extension-E23K4QRR.js} +5 -5
  166. package/dist/cli-bundle/chunks/{extension-5RN65LHT.js → extension-PMD3XMLN.js} +5 -5
  167. package/dist/cli-bundle/chunks/{files-3TCQHUHA.js → files-2RSWGPEU.js} +9 -9
  168. package/dist/cli-bundle/chunks/{files-5FDUPSEA.js → files-ZWFJFWBK.js} +9 -9
  169. package/dist/cli-bundle/chunks/{focus-HQXBYPKM.js → focus-KTTB3P3F.js} +8 -8
  170. package/dist/cli-bundle/chunks/{focus-7AQMNRSU.js → focus-ZMDP4FEL.js} +8 -8
  171. package/dist/cli-bundle/chunks/{gc-5B6ABL3Z.js → gc-BXIAKLAH.js} +3 -3
  172. package/dist/cli-bundle/chunks/{gc-2FGKYRJ4.js → gc-C7K6JNUO.js} +3 -3
  173. package/dist/cli-bundle/chunks/{get-FUMVOJQD.js → get-AZQLC4NO.js} +11 -11
  174. package/dist/cli-bundle/chunks/{get-H5BZTW4A.js → get-I65HTAWO.js} +11 -11
  175. package/dist/cli-bundle/chunks/{health-JSVOR6B4.js → health-3MFFPQVZ.js} +13 -13
  176. package/dist/cli-bundle/chunks/{health-LE2ZQGSM.js → health-MYZEOCLI.js} +13 -13
  177. package/dist/cli-bundle/chunks/{history-QO4JVJJP.js → history-73Z6OBFZ.js} +10 -10
  178. package/dist/cli-bundle/chunks/history-BIPHVUMF.js +20 -0
  179. package/dist/cli-bundle/chunks/{history-compact-ID74DOUI.js → history-compact-24VQ63A3.js} +11 -11
  180. package/dist/cli-bundle/chunks/{history-compact-SDFRPZ4V.js → history-compact-UIAR2OI4.js} +11 -11
  181. package/dist/cli-bundle/chunks/{history-redact-Z4P5MM3G.js → history-redact-7YCXEWJD.js} +11 -11
  182. package/dist/cli-bundle/chunks/history-redact-WZZ6GZ2Z.js +21 -0
  183. package/dist/cli-bundle/chunks/{history-repair-CKE7GLZR.js → history-repair-4NOFFG2W.js} +12 -12
  184. package/dist/cli-bundle/chunks/{history-repair-ANHEYWKF.js → history-repair-GQN2X4TR.js} +12 -12
  185. package/dist/cli-bundle/chunks/init-K34V4PZR.js +20 -0
  186. package/dist/cli-bundle/chunks/{init-K6MSMB37.js → init-TDEDNVMM.js} +10 -9
  187. package/dist/cli-bundle/chunks/{learnings-VIS3NOQV.js → learnings-TV2CTGJ3.js} +10 -10
  188. package/dist/cli-bundle/chunks/{learnings-YYNB64GN.js → learnings-U67FTXPB.js} +10 -10
  189. package/dist/cli-bundle/chunks/{list-UHMA3N2K.js → list-MSHYOCFU.js} +10 -10
  190. package/dist/cli-bundle/chunks/{list-7UE44A2R.js → list-VV57WGUD.js} +10 -10
  191. package/dist/cli-bundle/chunks/{notes-IN3UMA7W.js → notes-EUANWWKD.js} +10 -10
  192. package/dist/cli-bundle/chunks/{notes-2HRMV67I.js → notes-GYVNDAL4.js} +10 -10
  193. package/dist/cli-bundle/chunks/{plan-PAWCCAPW.js → plan-4LF4AV63.js} +14 -14
  194. package/dist/cli-bundle/chunks/{plan-I3SVH7FV.js → plan-W27O6DBS.js} +14 -14
  195. package/dist/cli-bundle/chunks/{register-list-query-OTIK4DVA.js → register-list-query-BXLEHJ7L.js} +18 -18
  196. package/dist/cli-bundle/chunks/{register-list-query-N7Z7RTDM.js → register-list-query-C2MS3BVQ.js} +18 -18
  197. package/dist/cli-bundle/chunks/{register-mutation-UFZK6Q57.js → register-mutation-6UCOEQ6L.js} +179 -74
  198. package/dist/cli-bundle/chunks/register-mutation-6UCOEQ6L.js.map +7 -0
  199. package/dist/cli-bundle/chunks/{register-mutation-XFORLS6D.js → register-mutation-HE73PREP.js} +180 -75
  200. package/dist/cli-bundle/chunks/register-mutation-HE73PREP.js.map +1 -0
  201. package/dist/cli-bundle/chunks/{register-operations-6ZCLKRBG.js → register-operations-L6C32FDA.js} +89 -31
  202. package/dist/cli-bundle/chunks/{register-operations-6ZCLKRBG.js.map → register-operations-L6C32FDA.js.map} +2 -2
  203. package/dist/cli-bundle/chunks/{register-operations-ITE7JTH3.js → register-operations-QQEHEX4P.js} +90 -32
  204. package/dist/cli-bundle/chunks/{register-operations-ITE7JTH3.js.map → register-operations-QQEHEX4P.js.map} +1 -1
  205. package/dist/cli-bundle/chunks/{register-setup-7RKGE4BQ.js → register-setup-A7N4PNT3.js} +15 -15
  206. package/dist/cli-bundle/chunks/{register-setup-7UKEFKT6.js → register-setup-WHG3NBP6.js} +15 -15
  207. package/dist/cli-bundle/chunks/{restore-NNVPBBVJ.js → restore-TSWSULYY.js} +11 -11
  208. package/dist/cli-bundle/chunks/restore-XQXICL3V.js +19 -0
  209. package/dist/cli-bundle/chunks/scheduling-shortcuts-NC46K6BD.js +91 -0
  210. package/dist/cli-bundle/chunks/scheduling-shortcuts-NC46K6BD.js.map +7 -0
  211. package/dist/cli-bundle/chunks/scheduling-shortcuts-UGDPQALY.js +88 -0
  212. package/dist/cli-bundle/chunks/scheduling-shortcuts-UGDPQALY.js.map +1 -0
  213. package/dist/cli-bundle/chunks/{schema-3YKCQ3VO.js → schema-7U7JUYGK.js} +779 -10
  214. package/dist/cli-bundle/chunks/schema-7U7JUYGK.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{schema-3HCLXCFX.js → schema-TSBYSEMW.js} +792 -9
  216. package/dist/cli-bundle/chunks/schema-TSBYSEMW.js.map +7 -0
  217. package/dist/cli-bundle/chunks/{search-NQ42NC6A.js → search-OXLSQKHP.js} +11 -11
  218. package/dist/cli-bundle/chunks/{search-V7PZ2ICH.js → search-T3TOFLOQ.js} +11 -11
  219. package/dist/cli-bundle/chunks/{stats-7KD4PJC5.js → stats-5CLG22YZ.js} +8 -8
  220. package/dist/cli-bundle/chunks/{stats-GRHO6RFB.js → stats-XEMUXS42.js} +8 -8
  221. package/dist/cli-bundle/chunks/{telemetry-TRRYZXWT.js → telemetry-23OPBBZT.js} +4 -4
  222. package/dist/cli-bundle/chunks/{telemetry-H5GLXNG5.js → telemetry-I3D7XZ55.js} +4 -4
  223. package/dist/cli-bundle/chunks/{test-6CZNIIGA.js → test-AROS3LIV.js} +15 -14
  224. package/dist/cli-bundle/chunks/{test-7GVQ3VMN.js → test-CECIMKOA.js} +15 -14
  225. package/dist/cli-bundle/chunks/{test-all-ODVADHV6.js → test-all-4DEQPIXH.js} +17 -16
  226. package/dist/cli-bundle/chunks/{test-all-ODVADHV6.js.map → test-all-4DEQPIXH.js.map} +1 -1
  227. package/dist/cli-bundle/chunks/{test-all-3LF2OZD2.js → test-all-6RO6X3SM.js} +15 -14
  228. package/dist/cli-bundle/chunks/{test-all-3LF2OZD2.js.map → test-all-6RO6X3SM.js.map} +1 -1
  229. package/dist/cli-bundle/chunks/{test-runs-LYT6ZTNQ.js → test-runs-AAXVFWKH.js} +5 -5
  230. package/dist/cli-bundle/chunks/{test-runs-RVP6VWN7.js → test-runs-LYBQSYRC.js} +5 -5
  231. package/dist/cli-bundle/chunks/update-MIWEJC76.js +24 -0
  232. package/dist/cli-bundle/chunks/update-P7I5YSRB.js +28 -0
  233. package/dist/cli-bundle/chunks/{update-many-XSEQJ24X.js → update-many-5B4HLVBK.js} +23 -23
  234. package/dist/cli-bundle/chunks/{update-many-FCU6RKTO.js → update-many-G2QOVZSB.js} +23 -23
  235. package/dist/cli-bundle/chunks/{upgrade-FOB5LHO5.js → upgrade-GFIDL62L.js} +5 -5
  236. package/dist/cli-bundle/chunks/{upgrade-A6TL3INC.js → upgrade-QUQYL7D3.js} +5 -5
  237. package/dist/cli-bundle/chunks/{validate-EHL3MI2V.js → validate-ADDZBMM3.js} +20 -19
  238. package/dist/cli-bundle/chunks/{validate-EHL3MI2V.js.map → validate-ADDZBMM3.js.map} +1 -1
  239. package/dist/cli-bundle/chunks/{validate-7BLDG3AT.js → validate-MAS3H6ZP.js} +22 -21
  240. package/dist/cli-bundle/chunks/{validate-7BLDG3AT.js.map → validate-MAS3H6ZP.js.map} +1 -1
  241. package/dist/cli-bundle/main.js +61 -19
  242. package/dist/cli-bundle/main.js.map +2 -2
  243. package/dist/core/config/nested-settings.js +40 -2
  244. package/dist/core/config/nested-settings.js.map +1 -1
  245. package/dist/core/item/parse.d.ts +32 -0
  246. package/dist/core/item/parse.js +61 -2
  247. package/dist/core/item/parse.js.map +1 -1
  248. package/dist/core/schema/fields-file.d.ts +94 -0
  249. package/dist/core/schema/fields-file.js +317 -0
  250. package/dist/core/schema/fields-file.js.map +1 -0
  251. package/dist/core/schema/type-inference.d.ts +34 -0
  252. package/dist/core/schema/type-inference.js +97 -0
  253. package/dist/core/schema/type-inference.js.map +1 -0
  254. package/dist/core/schema/type-presets.d.ts +30 -0
  255. package/dist/core/schema/type-presets.js +96 -0
  256. package/dist/core/schema/type-presets.js.map +1 -0
  257. package/dist/core/store/front-matter-cache.d.ts +13 -0
  258. package/dist/core/store/front-matter-cache.js +21 -11
  259. package/dist/core/store/front-matter-cache.js.map +1 -1
  260. package/dist/mcp/server.js +51 -4
  261. package/dist/mcp/server.js.map +1 -1
  262. package/dist/mcp/tool-definitions.js +49 -8
  263. package/dist/mcp/tool-definitions.js.map +1 -1
  264. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  265. package/dist/sdk/cli-contracts/enum-contracts.js +5 -2
  266. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  267. package/dist/sdk/cli-contracts/tool-parameter-tables.js +46 -5
  268. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  269. package/dist/sdk/cli-contracts.d.ts +3 -0
  270. package/dist/sdk/cli-contracts.js +76 -3
  271. package/dist/sdk/cli-contracts.js.map +1 -1
  272. package/docs/COMMANDS.md +35 -3
  273. package/docs/CONFIGURATION.md +83 -0
  274. package/package.json +1 -1
  275. package/dist/cli-bundle/chunks/activity-5P2KQCTH.js +0 -18
  276. package/dist/cli-bundle/chunks/chunk-3XOXWOGA.js.map +0 -1
  277. package/dist/cli-bundle/chunks/chunk-4KBK4BA3.js.map +0 -7
  278. package/dist/cli-bundle/chunks/chunk-7K2MXFMX.js.map +0 -1
  279. package/dist/cli-bundle/chunks/chunk-AERT7KT3.js.map +0 -1
  280. package/dist/cli-bundle/chunks/chunk-F7WSO5UX.js.map +0 -1
  281. package/dist/cli-bundle/chunks/chunk-G3CEIXTV.js.map +0 -7
  282. package/dist/cli-bundle/chunks/chunk-H6EH6ENJ.js.map +0 -7
  283. package/dist/cli-bundle/chunks/chunk-HDIDUME4.js.map +0 -1
  284. package/dist/cli-bundle/chunks/chunk-IQVB3YDD.js.map +0 -7
  285. package/dist/cli-bundle/chunks/chunk-KQ3LAMDO.js.map +0 -7
  286. package/dist/cli-bundle/chunks/chunk-OLTYNVJR.js.map +0 -7
  287. package/dist/cli-bundle/chunks/chunk-PZD7WPUC.js.map +0 -1
  288. package/dist/cli-bundle/chunks/chunk-SY4GKIWT.js.map +0 -1
  289. package/dist/cli-bundle/chunks/close-ILMZR3D7.js +0 -13
  290. package/dist/cli-bundle/chunks/config-IOJELD6O.js.map +0 -1
  291. package/dist/cli-bundle/chunks/config-PXTMAYV3.js.map +0 -7
  292. package/dist/cli-bundle/chunks/contracts-NSBVLXQ3.js.map +0 -7
  293. package/dist/cli-bundle/chunks/create-F5HZX2S4.js +0 -30
  294. package/dist/cli-bundle/chunks/history-SSXGGTVZ.js +0 -20
  295. package/dist/cli-bundle/chunks/history-redact-VBH44Y7F.js +0 -21
  296. package/dist/cli-bundle/chunks/init-7FBQO77A.js +0 -19
  297. package/dist/cli-bundle/chunks/register-mutation-UFZK6Q57.js.map +0 -7
  298. package/dist/cli-bundle/chunks/register-mutation-XFORLS6D.js.map +0 -1
  299. package/dist/cli-bundle/chunks/restore-XXXLQ2XC.js +0 -19
  300. package/dist/cli-bundle/chunks/schema-3HCLXCFX.js.map +0 -7
  301. package/dist/cli-bundle/chunks/schema-3YKCQ3VO.js.map +0 -1
  302. package/dist/cli-bundle/chunks/update-MPGM6SBE.js +0 -28
  303. package/dist/cli-bundle/chunks/update-UN75XW3C.js +0 -24
  304. /package/dist/cli-bundle/chunks/{activity-5P2KQCTH.js.map → activity-PZYSZA26.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{activity-MJGTX4LO.js.map → activity-SFM4THAU.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{aggregate-OUGCDFNC.js.map → aggregate-Y5ADDKBM.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{aggregate-MH3GROKB.js.map → aggregate-YTAUQLRW.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{append-VCRUG2W6.js.map → append-4M7OVV7M.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{append-2Q4BPUBW.js.map → append-HSPK4L4V.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-F2GC6L3N.js.map → chunk-26BM6YLO.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-ILHLIA47.js.map → chunk-2C6FU3D3.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-B5Q7XC4K.js.map → chunk-2OPYLXDO.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-CBMETQ2U.js.map → chunk-2S46FKLB.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-MJZUZ2QE.js.map → chunk-2TMKMTEI.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-M23HXJL3.js.map → chunk-2VH7DFSJ.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-BJWTFOZM.js.map → chunk-3ENF4NO4.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-7EILPFMA.js.map → chunk-3GR2HTYY.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-764O7EUA.js.map → chunk-3R3FYCBV.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-4VLB4JH2.js.map → chunk-5FDYWOJT.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-WZCQVABQ.js.map → chunk-5XGWFUW2.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-667XI4UJ.js.map → chunk-6BD77FGL.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-KZYVTOG5.js.map → chunk-6HF6CIY2.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-XLNNCKTN.js.map → chunk-6PBPD4MN.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-Z3MUNQRV.js.map → chunk-6VFUEGOA.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-O46LTCXQ.js.map → chunk-AJCQ5GT6.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-7ZGKNHUL.js.map → chunk-ALTGYHN3.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-SY4PZWIZ.js.map → chunk-AXLDUGXA.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-YGRPBFMA.js.map → chunk-BITCVGHT.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-UUKORJSN.js.map → chunk-CGQTFWYI.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-LV5FFQ7M.js.map → chunk-CHM2VFVL.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-7AGIXLNK.js.map → chunk-COVLE33A.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-2JEGCDYT.js.map → chunk-F5MSD5HE.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-NIQHNDBZ.js.map → chunk-FAXB6F6R.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-TIRZIQRP.js.map → chunk-G2MOUCTU.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-GAVE4MYM.js.map → chunk-IROHIK2T.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-ZJRDVYZI.js.map → chunk-JZHL4E3Q.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-UBMCSJXX.js.map → chunk-KCAGIH6K.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-656HPQPO.js.map → chunk-KO3VM5GS.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-OY3P2I6B.js.map → chunk-LNH5Q32E.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-GQ4JKNMV.js.map → chunk-LORM3M2I.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-OCTQJP42.js.map → chunk-M4AVU7VC.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-3WAULYOY.js.map → chunk-MIBX6ZRN.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-FXNT5LPX.js.map → chunk-MMF2E3FM.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-IMQG4VR3.js.map → chunk-MUTUZ2HD.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-NCIBNERT.js.map → chunk-OOIH6J5T.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-II7OGE3V.js.map → chunk-OSBJPPX3.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-HPELHUTG.js.map → chunk-PJS3WDO2.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-6NQXMGYU.js.map → chunk-QGPE2H6Z.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-ASM4DVRW.js.map → chunk-QVTFFLR2.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-FTAZLAR7.js.map → chunk-QW2F6ARZ.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-A576QZDL.js.map → chunk-QXC3LWB7.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-6BV7ENQL.js.map → chunk-QXMXRPX5.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-SPYPC5CB.js.map → chunk-R4AKUPKI.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-UAR2VNCK.js.map → chunk-RASR23HV.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-YXTLI4XP.js.map → chunk-SCDCNGCV.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-2IUJBMKS.js.map → chunk-SCS5PVAA.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-KTVETP66.js.map → chunk-SJCMTOEU.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-L6FJPOT4.js.map → chunk-SO2ES46D.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-GYMG7AG6.js.map → chunk-TBV33CB4.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{chunk-XNOY7TCB.js.map → chunk-UGUJ2UOR.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{chunk-E6J2PEK6.js.map → chunk-UN6P3IJ4.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{chunk-ZONXMSVB.js.map → chunk-V2GYOMEX.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{chunk-T5VU7ROQ.js.map → chunk-VF3KQGNY.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{chunk-RKKIH2ZQ.js.map → chunk-VHG6LUKR.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{chunk-G2YVUY7I.js.map → chunk-VXRFAE7W.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{chunk-Q5RLUCP3.js.map → chunk-WQRL4COW.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{chunk-TUB3DZAZ.js.map → chunk-YLAW3FZN.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{claim-NEO7AGWH.js.map → claim-WGAWJCPY.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{claim-4APLUXJW.js.map → claim-ZI6P4LMU.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{close-ILMZR3D7.js.map → close-I7PRQ5G7.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{close-3QABBNGU.js.map → close-JMVVSIQE.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{close-many-MIZLTYGL.js.map → close-many-IKPJXVOZ.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{close-many-Q7Y5AHQI.js.map → close-many-TXABDCSJ.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{comments-DAIQPOMU.js.map → comments-RLWR2S7W.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{comments-IWFSVM4P.js.map → comments-YAMXKHUX.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{context-QHJSCJW4.js.map → context-K6QAHN5H.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{context-XZS2VFKU.js.map → context-VGXOOAH2.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{copy-Q64T5FD4.js.map → copy-Q2PPU4AY.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{copy-SG34LCMU.js.map → copy-SC6UF3PI.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{create-IPAX2SNL.js.map → create-76FE7JVF.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{create-F5HZX2S4.js.map → create-RTRFW6RE.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{delete-VH3L7DZ6.js.map → delete-T6DJSUJI.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{delete-TLXR7LJ2.js.map → delete-XFUX533E.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{deps-J3HBBLDB.js.map → deps-5GWMMS6D.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{deps-XV6JJ6IN.js.map → deps-MCCU633S.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{docs-GWDEB7JH.js.map → docs-HE3HCQ4S.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{docs-RCLNSKID.js.map → docs-SXMOABHR.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{extension-7KO2NX2A.js.map → extension-E23K4QRR.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{extension-5RN65LHT.js.map → extension-PMD3XMLN.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{files-3TCQHUHA.js.map → files-2RSWGPEU.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{files-5FDUPSEA.js.map → files-ZWFJFWBK.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{focus-HQXBYPKM.js.map → focus-KTTB3P3F.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{focus-7AQMNRSU.js.map → focus-ZMDP4FEL.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{gc-5B6ABL3Z.js.map → gc-BXIAKLAH.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{gc-2FGKYRJ4.js.map → gc-C7K6JNUO.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{get-FUMVOJQD.js.map → get-AZQLC4NO.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{get-H5BZTW4A.js.map → get-I65HTAWO.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{health-JSVOR6B4.js.map → health-3MFFPQVZ.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{health-LE2ZQGSM.js.map → health-MYZEOCLI.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{history-QO4JVJJP.js.map → history-73Z6OBFZ.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{history-SSXGGTVZ.js.map → history-BIPHVUMF.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{history-compact-ID74DOUI.js.map → history-compact-24VQ63A3.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{history-compact-SDFRPZ4V.js.map → history-compact-UIAR2OI4.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{history-redact-Z4P5MM3G.js.map → history-redact-7YCXEWJD.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{history-redact-VBH44Y7F.js.map → history-redact-WZZ6GZ2Z.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{history-repair-CKE7GLZR.js.map → history-repair-4NOFFG2W.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{history-repair-ANHEYWKF.js.map → history-repair-GQN2X4TR.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{init-7FBQO77A.js.map → init-K34V4PZR.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{init-K6MSMB37.js.map → init-TDEDNVMM.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{learnings-VIS3NOQV.js.map → learnings-TV2CTGJ3.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{learnings-YYNB64GN.js.map → learnings-U67FTXPB.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{list-UHMA3N2K.js.map → list-MSHYOCFU.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{list-7UE44A2R.js.map → list-VV57WGUD.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{notes-IN3UMA7W.js.map → notes-EUANWWKD.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{notes-2HRMV67I.js.map → notes-GYVNDAL4.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{plan-PAWCCAPW.js.map → plan-4LF4AV63.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{plan-I3SVH7FV.js.map → plan-W27O6DBS.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{register-list-query-OTIK4DVA.js.map → register-list-query-BXLEHJ7L.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{register-list-query-N7Z7RTDM.js.map → register-list-query-C2MS3BVQ.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{register-setup-7RKGE4BQ.js.map → register-setup-A7N4PNT3.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{register-setup-7UKEFKT6.js.map → register-setup-WHG3NBP6.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{restore-NNVPBBVJ.js.map → restore-TSWSULYY.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{restore-XXXLQ2XC.js.map → restore-XQXICL3V.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{search-NQ42NC6A.js.map → search-OXLSQKHP.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{search-V7PZ2ICH.js.map → search-T3TOFLOQ.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{stats-7KD4PJC5.js.map → stats-5CLG22YZ.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{stats-GRHO6RFB.js.map → stats-XEMUXS42.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{telemetry-TRRYZXWT.js.map → telemetry-23OPBBZT.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{telemetry-H5GLXNG5.js.map → telemetry-I3D7XZ55.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{test-6CZNIIGA.js.map → test-AROS3LIV.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{test-7GVQ3VMN.js.map → test-CECIMKOA.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{test-runs-LYT6ZTNQ.js.map → test-runs-AAXVFWKH.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{test-runs-RVP6VWN7.js.map → test-runs-LYBQSYRC.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{update-UN75XW3C.js.map → update-MIWEJC76.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{update-MPGM6SBE.js.map → update-P7I5YSRB.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{update-many-XSEQJ24X.js.map → update-many-5B4HLVBK.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{update-many-FCU6RKTO.js.map → update-many-G2QOVZSB.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{upgrade-FOB5LHO5.js.map → upgrade-GFIDL62L.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{upgrade-A6TL3INC.js.map → upgrade-QUQYL7D3.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../cli/commands/linked-artifacts.ts"],"sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport fg from \"fast-glob\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport {\n assertNoUnknownCsvKeys,\n createStdinTokenResolver,\n looksLikeGenericKeyValueEntry,\n parseCsvKv,\n} from \"../../core/item/parse.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { listAllFrontMatter, locateItem, mutateItem, readLocatedItem } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { SCOPE_VALUES } from \"../../types/index.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { LinkScope } from \"../../types/index.js\";\n\nexport type LinkedArtifact = {\n path: string;\n scope: LinkScope;\n note?: string;\n};\n\n/** Allowed CSV/markdown keys for each structured linked-artifact option (GH-258). */\nexport const LINKED_ARTIFACT_ADD_KEYS = [\"path\", \"scope\", \"note\"] as const;\nexport const LINKED_ARTIFACT_ADD_GLOB_KEYS = [\"pattern\", \"glob\", \"path\", \"scope\", \"note\"] as const;\nexport const LINKED_ARTIFACT_REMOVE_KEYS = [\"path\"] as const;\nexport const LINKED_ARTIFACT_MIGRATE_KEYS = [\"from\", \"to\"] as const;\n\nexport interface LinkedArtifactCommandOptions {\n add?: string[];\n addGlob?: string[];\n remove?: string[];\n migrate?: string[];\n /**\n * GH-170 (pm-pfnx): standalone note applied to every link added by --add /\n * --add-glob in the same invocation. A per-entry embedded note (the\n * `path=...,note=...` pair syntax) takes precedence over this flag.\n * Requires at least one --add/--add-glob; rejected otherwise.\n */\n note?: string;\n list?: boolean;\n appendStable?: boolean;\n validatePaths?: boolean;\n audit?: boolean;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\nexport interface PathMigration {\n from: string;\n to: string;\n}\n\nexport interface AddGlobEntry {\n pattern: string;\n scope: LinkScope;\n note?: string;\n}\n\nexport interface LinkedPathValidation {\n checked: number;\n existing_files: string[];\n missing_paths: string[];\n non_file_paths: string[];\n}\n\nexport interface LinkedPathAuditEntry {\n path: string;\n linked_by_count: number;\n linked_item_ids: string[];\n}\n\nexport interface LinkedArtifactResult {\n id: string;\n changed: boolean;\n count: number;\n migrations_applied?: number;\n validation?: LinkedPathValidation;\n audit?: LinkedPathAuditEntry[];\n artifacts: LinkedArtifact[];\n}\n\n/**\n * Configuration that adapts the shared linked-artifact command core to a\n * specific resource kind (files or docs) while preserving every behavioral\n * detail of the original twin implementations.\n */\nexport interface LinkedArtifactKindConfig {\n /** Metadata key under which the artifacts are stored (e.g. \"files\" | \"docs\"). */\n metadataKey: \"files\" | \"docs\";\n /** Mutation op recorded in history (e.g. \"files_add\" | \"docs_add\"). */\n op: \"files_add\" | \"docs_add\";\n /** Noun used in the \"bare <noun> path\" --add usage error (e.g. \"file\" | \"doc\"). */\n bareNoun: \"file\" | \"doc\";\n /**\n * Whether this kind honors the append-stable option. files supports it;\n * docs always sorts and must never expose append-stable behavior.\n */\n supportsAppendStable: boolean;\n}\n\nexport function ensureScope(raw: string | undefined): LinkScope {\n const value = (raw ?? \"project\") as LinkScope;\n if (!SCOPE_VALUES.includes(value)) {\n throw new PmCliError(\n `Invalid scope \"${raw}\". Valid scopes: ${SCOPE_VALUES.join(\", \")} (default: project).`,\n EXIT_CODE.USAGE,\n );\n }\n return value;\n}\n\nexport function looksLikeStructuredPathEntry(raw: string): boolean {\n if (raw.startsWith(\"```\") || raw.includes(\"\\n\")) {\n return true;\n }\n if (/^(?:[-*+]\\s+)?(?:path|scope|note)\\s*[:=]/i.test(raw)) {\n return true;\n }\n // A first-key typo (e.g. `lable=main,path=…`) must still be parsed so the\n // unknown key is rejected rather than swallowed as a bare path (GH-258).\n return looksLikeGenericKeyValueEntry(raw);\n}\n\nexport function parseAddEntries(raw: string[] | undefined, bareNoun: \"file\" | \"doc\"): LinkedArtifact[] {\n if (!raw) return [];\n return raw.map((entry) => {\n const trimmed = entry.trim();\n const kv = looksLikeStructuredPathEntry(trimmed) ? parseCsvKv(entry, \"--add\") : { path: trimmed };\n assertNoUnknownCsvKeys(kv, \"--add\", LINKED_ARTIFACT_ADD_KEYS);\n if (!kv.path) {\n throw new PmCliError(`--add requires path=<value> or a bare ${bareNoun} path`, EXIT_CODE.USAGE);\n }\n return {\n path: kv.path,\n scope: ensureScope(kv.scope),\n note: kv.note?.trim() || undefined,\n };\n });\n}\n\nexport function parseAddGlobEntries(raw: string[] | undefined): AddGlobEntry[] {\n if (!raw) return [];\n return raw.map((entry) => {\n const trimmed = entry.trim();\n if (!trimmed) {\n throw new PmCliError(\"--add-glob requires a glob pattern value\", EXIT_CODE.USAGE);\n }\n if (trimmed.includes(\"=\") || /^(?:[-*+]\\s+)?(?:pattern|glob|path)\\s*[:=]/i.test(trimmed) || trimmed.startsWith(\"```\")) {\n const kv = parseCsvKv(trimmed, \"--add-glob\");\n assertNoUnknownCsvKeys(kv, \"--add-glob\", LINKED_ARTIFACT_ADD_GLOB_KEYS);\n const pattern = kv.pattern?.trim() || kv.glob?.trim() || kv.path?.trim();\n if (!pattern) {\n throw new PmCliError(\"--add-glob key/value form requires pattern=<glob>\", EXIT_CODE.USAGE);\n }\n return {\n pattern,\n scope: ensureScope(kv.scope),\n note: kv.note?.trim() || undefined,\n };\n }\n return {\n pattern: trimmed,\n scope: \"project\",\n };\n });\n}\n\nexport function parseRemoveEntries(raw: string[] | undefined): string[] {\n if (!raw) return [];\n return raw.map((entry) => {\n const trimmed = entry.trim();\n if (!trimmed) {\n throw new PmCliError(\"--remove requires a path value\", EXIT_CODE.USAGE);\n }\n if (trimmed.includes(\"=\") || /^(?:[-*+]\\s+)?path\\s*[:=]/i.test(trimmed) || trimmed.startsWith(\"```\")) {\n const kv = parseCsvKv(trimmed, \"--remove\");\n assertNoUnknownCsvKeys(kv, \"--remove\", LINKED_ARTIFACT_REMOVE_KEYS);\n if (!kv.path) {\n throw new PmCliError(\"--remove key/value form requires path=<value>\", EXIT_CODE.USAGE);\n }\n return kv.path;\n }\n return trimmed;\n });\n}\n\nexport function parseMigrateEntries(raw: string[] | undefined): PathMigration[] {\n if (!raw) return [];\n return raw.map((entry) => {\n const kv = parseCsvKv(entry, \"--migrate\");\n assertNoUnknownCsvKeys(kv, \"--migrate\", LINKED_ARTIFACT_MIGRATE_KEYS);\n const from = kv.from?.trim();\n const to = kv.to?.trim();\n if (!from || !to) {\n throw new PmCliError(\"--migrate requires from=<value> and to=<value>\", EXIT_CODE.USAGE);\n }\n return { from, to };\n });\n}\n\nexport function applyPathMigrations(artifactPath: string, migrations: PathMigration[]): string {\n let next = artifactPath;\n for (const migration of migrations) {\n if (next.startsWith(migration.from)) {\n next = `${migration.to}${next.slice(migration.from.length)}`;\n }\n }\n return next;\n}\n\nexport function normalizeLinkedPath(value: string): string {\n return value.split(path.sep).join(\"/\");\n}\n\nexport async function expandAddGlobEntries(entries: AddGlobEntry[]): Promise<LinkedArtifact[]> {\n const expanded: LinkedArtifact[] = [];\n for (const entry of entries) {\n const absolutePattern = path.isAbsolute(entry.pattern);\n const matches = await fg(entry.pattern, {\n cwd: process.cwd(),\n absolute: absolutePattern,\n onlyFiles: true,\n dot: true,\n unique: true,\n followSymbolicLinks: true,\n });\n const sortedMatches = [...new Set(matches.map((match) => normalizeLinkedPath(path.normalize(match))))].sort((left, right) =>\n left.localeCompare(right),\n );\n for (const matchedPath of sortedMatches) {\n expanded.push({\n path: matchedPath,\n scope: entry.scope,\n note: entry.note,\n });\n }\n }\n return expanded;\n}\n\n/**\n * GH-170 (pm-pfnx): apply a standalone --note to the links added in this\n * invocation. Semantics (documented on pm-pfnx): the note is attached to EVERY\n * entry added via --add/--add-glob so a single flag annotates the whole batch\n * predictably; a per-entry embedded `note=` wins over the standalone flag; and\n * --note without any --add/--add-glob flag is a usage error because there is\n * nothing to annotate (it never retro-edits existing links). `hasAddFlags`\n * reflects flag presence, not match count, so a glob that legitimately matches\n * zero files is not an error.\n */\nexport function applyStandaloneNote(\n adds: LinkedArtifact[],\n note: string | undefined,\n hasAddFlags: boolean,\n): LinkedArtifact[] {\n if (note === undefined) {\n return adds;\n }\n if (!hasAddFlags) {\n throw new PmCliError(\n \"--note requires --add or --add-glob in the same invocation (the note annotates the links being added)\",\n EXIT_CODE.USAGE,\n );\n }\n const trimmed = note.trim();\n if (trimmed.length === 0) {\n return adds;\n }\n return adds.map((entry) => (entry.note === undefined ? { ...entry, note: trimmed } : entry));\n}\n\nexport function artifactKey(value: Pick<LinkedArtifact, \"path\" | \"scope\">): string {\n return `${value.path}::${value.scope}`;\n}\n\nexport function sortLinkedArtifacts(artifacts: LinkedArtifact[]): LinkedArtifact[] {\n return [...artifacts].sort((left, right) => {\n const byPath = left.path.localeCompare(right.path);\n if (byPath !== 0) return byPath;\n return left.scope.localeCompare(right.scope);\n });\n}\n\nexport function dedupeLinkedArtifacts(artifacts: LinkedArtifact[]): LinkedArtifact[] {\n return [...new Map(artifacts.map((entry) => [artifactKey(entry), entry])).values()].map((entry) => ({\n ...entry,\n note: entry.note?.trim() || undefined,\n }));\n}\n\nexport async function validateLinkedPaths(paths: string[]): Promise<LinkedPathValidation> {\n const uniquePaths = [...new Set(paths)].sort((left, right) => left.localeCompare(right));\n const existingFiles: string[] = [];\n const missingPaths: string[] = [];\n const nonFilePaths: string[] = [];\n for (const relativePath of uniquePaths) {\n const resolvedPath = path.isAbsolute(relativePath) ? relativePath : path.resolve(process.cwd(), relativePath);\n try {\n const stats = await fs.stat(resolvedPath);\n if (stats.isFile()) {\n existingFiles.push(relativePath);\n } else {\n nonFilePaths.push(relativePath);\n }\n } catch (error: unknown) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\") {\n missingPaths.push(relativePath);\n continue;\n }\n nonFilePaths.push(relativePath);\n }\n }\n return {\n checked: uniquePaths.length,\n existing_files: existingFiles,\n missing_paths: missingPaths,\n non_file_paths: nonFilePaths,\n };\n}\n\nexport function buildLinkedPathAudit(\n paths: string[],\n allItems: Array<{ id: string; artifacts?: LinkedArtifact[] }>,\n): LinkedPathAuditEntry[] {\n const index = new Map<string, Set<string>>();\n for (const item of allItems) {\n for (const linkedArtifact of item.artifacts ?? []) {\n const seen = index.get(linkedArtifact.path) ?? new Set<string>();\n seen.add(item.id);\n index.set(linkedArtifact.path, seen);\n }\n }\n return [...new Set(paths)]\n .sort((left, right) => left.localeCompare(right))\n .map((linkedPath) => {\n const linkedIds = [...(index.get(linkedPath) ?? new Set<string>())].sort((left, right) => left.localeCompare(right));\n return {\n path: linkedPath,\n linked_by_count: linkedIds.length,\n linked_item_ids: linkedIds,\n };\n });\n}\n\n/**\n * Shared linked-artifact list/mutate command core used by runFiles and runDocs.\n * The kind config selects metadata key, op, bare-path noun, and whether\n * append-stable ordering is honored, preserving each twin's exact semantics.\n */\nexport async function runLinkedArtifacts(\n id: string,\n options: LinkedArtifactCommandOptions,\n global: GlobalOptions,\n config: LinkedArtifactKindConfig,\n): Promise<LinkedArtifactResult> {\n const { metadataKey } = config;\n const stdinResolver = createStdinTokenResolver();\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const resolvedAdds = await stdinResolver.resolveList(options.add, \"--add\");\n const resolvedAddGlobs = await stdinResolver.resolveList(options.addGlob, \"--add-glob\");\n const resolvedRemoves = await stdinResolver.resolveList(options.remove, \"--remove\");\n const resolvedMigrations = await stdinResolver.resolveList(options.migrate, \"--migrate\");\n const parsedAdds = parseAddEntries(resolvedAdds, config.bareNoun);\n const addGlobs = parseAddGlobEntries(resolvedAddGlobs);\n const expandedGlobAdds = await expandAddGlobEntries(addGlobs);\n const adds = applyStandaloneNote(\n [...parsedAdds, ...expandedGlobAdds],\n options.note,\n parsedAdds.length > 0 || addGlobs.length > 0,\n );\n const removes = parseRemoveEntries(resolvedRemoves);\n const migrations = parseMigrateEntries(resolvedMigrations);\n const shouldMutate = adds.length > 0 || removes.length > 0 || migrations.length > 0;\n\n const collectAuditItems = async (): Promise<Array<{ id: string; artifacts?: LinkedArtifact[] }>> =>\n (await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema)).map((entry) => ({\n id: entry.id,\n artifacts: (entry as Record<string, unknown>)[metadataKey] as LinkedArtifact[] | undefined,\n }));\n\n if (!shouldMutate) {\n const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);\n if (!located) {\n throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);\n }\n const loaded = await readLocatedItem(located, { schema: settings.schema });\n const artifacts = ((loaded.document.metadata as Record<string, unknown>)[metadataKey] as LinkedArtifact[] | undefined) ?? [];\n return {\n id: located.id,\n artifacts,\n changed: false,\n count: artifacts.length,\n validation: options.validatePaths ? await validateLinkedPaths(artifacts.map((entry) => entry.path)) : undefined,\n audit: options.audit ? buildLinkedPathAudit(artifacts.map((entry) => entry.path), await collectAuditItems()) : undefined,\n };\n }\n\n const author = resolveAuthor(options.author, settings.author_default);\n const result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: config.op,\n author,\n message: options.message,\n force: options.force,\n mutate(document) {\n const metadata = document.metadata as Record<string, unknown>;\n const next = [...((metadata[metadataKey] as LinkedArtifact[] | undefined) ?? [])];\n let migrationCount = 0;\n if (migrations.length > 0) {\n for (let index = 0; index < next.length; index += 1) {\n const migratedPath = applyPathMigrations(next[index].path, migrations);\n if (migratedPath !== next[index].path) {\n next[index] = { ...next[index], path: migratedPath };\n migrationCount += 1;\n }\n }\n }\n const migratedAdds = adds.map((entry) => {\n const migratedPath = applyPathMigrations(entry.path, migrations);\n if (migratedPath !== entry.path) {\n migrationCount += 1;\n }\n return {\n ...entry,\n path: migratedPath,\n };\n });\n const migratedRemoves = removes.map((entry) => applyPathMigrations(entry, migrations));\n for (const add of migratedAdds) {\n const exists = next.some((entry) => entry.path === add.path && entry.scope === add.scope);\n if (!exists) {\n next.push(add);\n }\n }\n if (migratedRemoves.length > 0) {\n for (let i = next.length - 1; i >= 0; i -= 1) {\n if (migratedRemoves.includes(next[i].path)) {\n next.splice(i, 1);\n }\n }\n }\n const deduped = dedupeLinkedArtifacts(next);\n const normalized = config.supportsAppendStable && options.appendStable ? deduped : sortLinkedArtifacts(deduped);\n if (normalized.length > 0) {\n metadata[metadataKey] = normalized;\n } else {\n delete metadata[metadataKey];\n }\n return { changedFields: [metadataKey], warnings: migrationCount > 0 ? [`path_migrations_applied:${migrationCount}`] : [] };\n },\n });\n\n const artifacts = ((result.item as Record<string, unknown>)[metadataKey] as LinkedArtifact[] | undefined) ?? [];\n const migrationWarning = result.warnings.find((warning) => warning.startsWith(\"path_migrations_applied:\"));\n const migrationCount = migrationWarning ? Number(migrationWarning.slice(\"path_migrations_applied:\".length)) : 0;\n const allItems = options.audit ? await collectAuditItems() : [];\n return {\n id: result.item.id,\n artifacts,\n changed: true,\n count: artifacts.length,\n migrations_applied: migrationCount > 0 ? migrationCount : undefined,\n validation: options.validatePaths ? await validateLinkedPaths(artifacts.map((entry) => entry.path)) : undefined,\n audit: options.audit ? buildLinkedPathAudit(artifacts.map((entry) => entry.path), allItems) : undefined,\n };\n}\n\n/**\n * Re-key the generic `artifacts` field to the resource-specific name (files/docs)\n * while preserving the original key order and presence so kind-specific result\n * shapes (and their deterministic JSON key ordering) stay byte-identical.\n */\nexport function renameArtifactsResultKey(result: LinkedArtifactResult, key: \"files\" | \"docs\"): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [field, value] of Object.entries(result)) {\n out[field === \"artifacts\" ? key : field] = value;\n }\n return out;\n}\n"],"names":["artifacts","migrationCount"],"mappings":"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","debugId":"0c108345-f796-539a-bb38-2591891bb6f1"}
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-J27KIHTG.js";
6
6
  import {
7
7
  readHistoryEntries
8
- } from "./chunk-L6FJPOT4.js";
8
+ } from "./chunk-SO2ES46D.js";
9
9
  import {
10
10
  EMPTY_REPLAY_DOCUMENT,
11
11
  historyEntriesToRaw,
@@ -13,27 +13,27 @@ import {
13
13
  replayToItemDocument,
14
14
  tryApplyReplayPatch,
15
15
  verifyHistoryChain
16
- } from "./chunk-UUKORJSN.js";
16
+ } from "./chunk-CGQTFWYI.js";
17
17
  import {
18
18
  acquireLock,
19
19
  createHistoryEntry,
20
20
  locateItem,
21
21
  readLocatedItem
22
- } from "./chunk-7K2MXFMX.js";
22
+ } from "./chunk-FPDK5BZQ.js";
23
23
  import {
24
24
  normalizeItemId,
25
25
  normalizeRawItemId
26
- } from "./chunk-2JEGCDYT.js";
26
+ } from "./chunk-F5MSD5HE.js";
27
27
  import {
28
28
  canonicalDocument,
29
29
  serializeItemDocument
30
- } from "./chunk-GAVE4MYM.js";
30
+ } from "./chunk-IROHIK2T.js";
31
31
  import {
32
32
  resolveItemTypeRegistry
33
- } from "./chunk-ZONXMSVB.js";
33
+ } from "./chunk-V2GYOMEX.js";
34
34
  import {
35
35
  nowIso
36
- } from "./chunk-G2YVUY7I.js";
36
+ } from "./chunk-VXRFAE7W.js";
37
37
  import {
38
38
  EXIT_CODE,
39
39
  PmCliError,
@@ -48,7 +48,7 @@ import {
48
48
  resolvePmRoot,
49
49
  runActiveOnWriteHooks,
50
50
  writeFileAtomic
51
- } from "./chunk-KTVETP66.js";
51
+ } from "./chunk-SJCMTOEU.js";
52
52
 
53
53
  // dist/cli/commands/history-redact.js
54
54
  import fs from "node:fs/promises";
@@ -579,6 +579,6 @@ export {
579
579
  runHistoryRedact,
580
580
  _testOnly
581
581
  };
582
- //# sourceMappingURL=chunk-IMQG4VR3.js.map
582
+ //# sourceMappingURL=chunk-MUTUZ2HD.js.map
583
583
 
584
584
  //# debugId=5a380b92-c839-5d29-919f-9f3cfc61947e
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  EXIT_CODE,
3
3
  PmCliError
4
- } from "./chunk-LV5FFQ7M.js";
4
+ } from "./chunk-CHM2VFVL.js";
5
5
 
6
6
  // dist/core/item/parse.js
7
7
  !(function() {
8
8
  try {
9
9
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
10
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "59d5296b-b08e-58c0-a4dc-ed3a45bdeddd");
10
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "cc88ee68-a99b-5f5f-8591-e7762739ba97");
11
11
  } catch (e2) {
12
12
  }
13
13
  })();
@@ -250,6 +250,33 @@ function parseCsvKv(raw, optionName) {
250
250
  }
251
251
  return result;
252
252
  }
253
+ var WINDOWS_ABSOLUTE_PATH_PATTERN = /^[A-Za-z]:[\\/]/;
254
+ var GENERIC_LEADING_KV_KEY_PATTERN = /^(?:[-*+]\s+)?[A-Za-z_][A-Za-z0-9_.-]*\s*=/;
255
+ function looksLikeGenericKeyValueEntry(raw) {
256
+ const trimmed = raw.trim();
257
+ if (WINDOWS_ABSOLUTE_PATH_PATTERN.test(trimmed)) {
258
+ return false;
259
+ }
260
+ return GENERIC_LEADING_KV_KEY_PATTERN.test(trimmed);
261
+ }
262
+ function assertNoUnknownCsvKeys(kv, optionName, allowedKeys) {
263
+ const allowed = new Set(allowedKeys.map((key) => key.toLowerCase()));
264
+ const unknownKeys = Object.keys(kv).filter((key) => !allowed.has(key.toLowerCase()));
265
+ if (unknownKeys.length > 0) {
266
+ throw new PmCliError(`${optionName} does not recognize key${unknownKeys.length > 1 ? "s" : ""} ${unknownKeys.map((key) => `"${key}"`).join(", ")}. Allowed keys: ${allowedKeys.join(", ")}.`, EXIT_CODE.USAGE);
267
+ }
268
+ for (const key of Object.keys(kv)) {
269
+ const normalizedKey = key.toLowerCase();
270
+ if (normalizedKey === key) {
271
+ continue;
272
+ }
273
+ if (Object.hasOwn(kv, normalizedKey)) {
274
+ throw new PmCliError(`${optionName} provides key "${key}" more than once after case normalization.`, EXIT_CODE.USAGE);
275
+ }
276
+ kv[normalizedKey] = kv[key];
277
+ delete kv[key];
278
+ }
279
+ }
253
280
  async function readStdinText(optionName) {
254
281
  if (process.stdin.isTTY === true) {
255
282
  throw new PmCliError(`${optionName} value "${STDIN_TOKEN}" requires piped stdin input. Pipe content into the command, or end manual stdin with Ctrl+D (Unix/macOS) or Ctrl+Z then Enter (Windows).`, EXIT_CODE.USAGE);
@@ -324,7 +351,9 @@ export {
324
351
  mergeAdditiveTags,
325
352
  applyTagRemovals,
326
353
  parseCsvKv,
354
+ looksLikeGenericKeyValueEntry,
355
+ assertNoUnknownCsvKeys,
327
356
  createStdinTokenResolver,
328
357
  parseOptionalNumber
329
358
  };
330
- //# sourceMappingURL=chunk-7L5VOUYP.js.map
359
+ //# sourceMappingURL=chunk-OGXEBTX3.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../../core/item/parse.ts"],
4
- "sourcesContent": ["import { PmCliError } from \"../shared/errors.js\";\nimport { EXIT_CODE } from \"../shared/constants.js\";\n\nconst STDIN_TOKEN = \"-\";\nconst CONTINUABLE_VALUE_KEYS = new Set([\n \"actual_result\",\n \"body\",\n \"cmd\",\n \"command\",\n \"customer_impact\",\n \"description\",\n \"environment\",\n \"expected_result\",\n \"impact\",\n \"location\",\n \"message\",\n \"note\",\n \"outcome\",\n \"repro_steps\",\n \"resolution\",\n \"text\",\n \"title\",\n \"unblock_note\",\n \"value\",\n \"why_now\",\n]);\n\nexport function parseTags(raw: string): string[] {\n const trimmed = raw.trim();\n if (trimmed === \"\") {\n return [];\n }\n const source = coerceJsonTagArray(trimmed) ?? trimmed;\n const tags = source\n .split(\",\")\n .map((tag) => tag.trim())\n .filter(Boolean)\n .map((tag) => tag.toLowerCase());\n return Array.from(new Set(tags)).sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Merge repeated `--add-tags` / `--remove-tags` values into a single normalized\n * tag list. Each entry can itself be CSV or a JSON array, mirroring the format\n * accepted by `--tags`. Returns a deterministically sorted, deduped list.\n */\nexport function collectTagFlagValues(values: readonly string[] | undefined): string[] {\n if (!Array.isArray(values) || values.length === 0) {\n return [];\n }\n const collected: string[] = [];\n for (const raw of values) {\n if (typeof raw !== \"string\") {\n continue;\n }\n for (const tag of parseTags(raw)) {\n collected.push(tag);\n }\n }\n return Array.from(new Set(collected)).sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Normalize a base tag list to the canonical form pm stores: trimmed,\n * lowercased, non-empty. Existing front-matter tags are almost always already\n * canonical (parseTags lowercases on write), but legacy or hand-edited `.toon`\n * files can carry mixed-case entries — normalizing here keeps additive and\n * subtractive mutations case-insensitive (so `--add-tags beta` dedupes against\n * an existing `Beta`, and `--remove-tags alpha` removes an existing `Alpha`).\n */\nfunction normalizeBaseTags(baseTags: readonly string[]): string[] {\n // Defensive: front-matter parsed from corrupted/hand-edited `.toon` (or an\n // external SDK caller) could pass a non-array or non-string entries despite\n // the `string[]` type — guard the array and skip non-strings rather than\n // throwing on `.filter`/`.trim()`.\n if (!Array.isArray(baseTags)) {\n return [];\n }\n return baseTags\n .filter((tag): tag is string => typeof tag === \"string\")\n .map((tag) => tag.trim().toLowerCase())\n .filter(Boolean);\n}\n\n/**\n * Apply an additive tag mutation to a base tag list. Used by `pm create` and\n * `pm update` so `--add-tags` extends `--tags` (or the existing tags) without\n * replacing them. Output is sorted + deduped lowercase, matching `parseTags`.\n */\nexport function mergeAdditiveTags(baseTags: readonly string[], add: readonly string[] | undefined): string[] {\n const normalizedBase = normalizeBaseTags(baseTags);\n if (!add || add.length === 0) {\n return Array.from(new Set(normalizedBase)).sort((a, b) => a.localeCompare(b));\n }\n const merged = new Set<string>(normalizedBase);\n for (const tag of collectTagFlagValues(add)) {\n merged.add(tag);\n }\n return Array.from(merged).sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Apply a subtractive tag mutation to a base tag list. Used by `pm update` so\n * `--remove-tags x,y` prunes those entries without rewriting the full set.\n * Removal is case-insensitive: both the base list and the removal selectors are\n * normalized to canonical lowercase before matching.\n */\nexport function applyTagRemovals(baseTags: readonly string[], remove: readonly string[] | undefined): string[] {\n const normalizedBase = Array.from(new Set(normalizeBaseTags(baseTags))).sort((a, b) => a.localeCompare(b));\n if (!remove || remove.length === 0) {\n return normalizedBase;\n }\n const removeSet = new Set(collectTagFlagValues(remove));\n if (removeSet.size === 0) {\n return normalizedBase;\n }\n return normalizedBase.filter((tag) => !removeSet.has(tag));\n}\n\n// Agents and MCP callers frequently pass --tags as a JSON array (e.g.\n// `--tags '[\"a\",\"b\"]'`). The MCP server normalizes that upstream, but direct\n// CLI invocations used to write the raw bracket string into front matter,\n// silently corrupting tags. Accept JSON arrays of primitives transparently.\nfunction coerceJsonTagArray(trimmed: string): string | null {\n if (!trimmed.startsWith(\"[\")) {\n return null;\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n return null;\n }\n const parsedArray = parsed as unknown[];\n return parsedArray\n .map((entry) =>\n typeof entry === \"string\" || typeof entry === \"number\" || typeof entry === \"boolean\"\n ? String(entry).replace(/,/g, \" \")\n : \"\",\n )\n .filter((entry) => entry.length > 0)\n .join(\",\");\n}\n\nfunction normalizeLineEndings(value: string): string {\n return value.replace(/\\r\\n/g, \"\\n\");\n}\n\nfunction stripCodeFenceEnvelope(value: string): string {\n const normalized = normalizeLineEndings(value).trim();\n if (!normalized.startsWith(\"```\")) {\n return value;\n }\n const lines = normalized.split(\"\\n\");\n if (lines.length < 2) {\n return value;\n }\n if (lines.at(-1)?.trim() !== \"```\") {\n return value;\n }\n return lines.slice(1, -1).join(\"\\n\");\n}\n\nfunction splitCsvSegments(raw: string): string[] {\n const segments: string[] = [];\n let current = \"\";\n let inQuotes = false;\n let escaped = false;\n\n for (const char of raw) {\n if (escaped) {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"\\\"\") {\n inQuotes = !inQuotes;\n current += char;\n continue;\n }\n if (char === \",\" && !inQuotes) {\n segments.push(current.trim());\n current = \"\";\n continue;\n }\n current += char;\n }\n if (current.trim()) {\n segments.push(current.trim());\n }\n return segments;\n}\n\nfunction unquoteValue(value: string): string {\n const trimmed = value.trim();\n if (trimmed.startsWith(\"\\\"\") && trimmed.endsWith(\"\\\"\")) {\n return trimmed.slice(1, -1).replace(/\\\\\"/g, \"\\\"\");\n }\n return value;\n}\n\nfunction findKeyValueDelimiter(segment: string): number {\n const equalsIndex = segment.indexOf(\"=\");\n const colonIndex = segment.indexOf(\":\");\n const hasEquals = equalsIndex > 0;\n const hasColon = colonIndex > 0;\n if (hasEquals && hasColon) {\n return Math.min(equalsIndex, colonIndex);\n }\n if (hasEquals) {\n return equalsIndex;\n }\n if (hasColon) {\n return colonIndex;\n }\n return -1;\n}\n\nfunction buildOptionSpecificKvGuidance(raw: string, optionName: string): string {\n if (optionName === \"--add\" || optionName === \"--add-glob\") {\n const looksLikePath = /[./\\\\]/.test(raw) || /\\.[a-z]{1,6}$/i.test(raw.trim());\n if (looksLikePath) {\n return 'For file/doc paths use: path=<file-path>[,scope=project|global]. The scope field is optional and defaults to project (example: path=src/api.ts or path=README.md,scope=project). ';\n }\n }\n if (optionName !== \"--event\") {\n return \"\";\n }\n const lowered = raw.toLowerCase();\n const recurrenceHint =\n lowered.includes(\"recur_\") || lowered.includes(\"recurrence\")\n ? ' Recurrence list values must stay in one field and use \"|\" delimiters (for example recur_by_weekday=mon|wed or recur_by_month_day=1|15).'\n : \"\";\n const weekdayAliasHint = lowered.includes(\"recur_byweekday\")\n ? \" Use recur_by_weekday (with underscores) for weekday recurrence filters.\"\n : \"\";\n return `${recurrenceHint}${weekdayAliasHint}`;\n}\n\nfunction buildInvalidKvMessage(raw: string, optionName: string): string {\n const condensed = raw.replaceAll(/\\s+/g, \" \").trim();\n const preview = condensed.length > 160 ? `${condensed.slice(0, 157)}...` : condensed;\n const optionSpecificGuidance = buildOptionSpecificKvGuidance(raw, optionName);\n return (\n `Invalid ${optionName} value \"${preview}\". Expected key=value entries separated by commas. ` +\n optionSpecificGuidance +\n 'Also accepts markdown-style key/value lines (for example \"- path: README.md\"). ' +\n `Use ${optionName} ${STDIN_TOKEN} to read piped stdin input.`\n );\n}\n\nfunction parseMarkdownKeyValueLines(raw: string): Record<string, string> | null {\n const normalized = stripCodeFenceEnvelope(raw).trim();\n if (normalized.length === 0) {\n return null;\n }\n if (!normalized.includes(\"\\n\") && !normalized.startsWith(\"-\") && !normalized.startsWith(\"*\") && !normalized.startsWith(\"+\")) {\n return null;\n }\n\n const result: Record<string, string> = {};\n let activeKey: string | undefined;\n const lines = normalizeLineEndings(normalized)\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n\n for (const line of lines) {\n const match = line.match(/^(?:[-*+]\\s+)?([a-zA-Z0-9_.-]+)\\s*(=|:)\\s*(.*)$/);\n if (match) {\n const key = match[1].trim();\n result[key] = unquoteValue(match[3].trim());\n activeKey = key;\n continue;\n }\n if (activeKey && CONTINUABLE_VALUE_KEYS.has(activeKey.toLowerCase())) {\n result[activeKey] = `${result[activeKey]}\\n${line}`;\n continue;\n }\n return null;\n }\n\n return result;\n}\n\nexport function parseCsvKv(raw: string, optionName: string): Record<string, string> {\n const trimmed = stripCodeFenceEnvelope(raw).trim();\n if (!trimmed) {\n throw new PmCliError(`${optionName} cannot be empty`, EXIT_CODE.USAGE);\n }\n\n const markdownStyle = parseMarkdownKeyValueLines(trimmed);\n if (markdownStyle) {\n return markdownStyle;\n }\n\n const result: Record<string, string> = {};\n let activeKey: string | undefined;\n const segments = splitCsvSegments(trimmed);\n\n for (const segment of segments) {\n const delimiterIndex = findKeyValueDelimiter(segment);\n if (delimiterIndex > 0) {\n const key = segment.slice(0, delimiterIndex).trim();\n const value = unquoteValue(segment.slice(delimiterIndex + 1).trim());\n result[key] = value;\n activeKey = key;\n continue;\n }\n if (activeKey && CONTINUABLE_VALUE_KEYS.has(activeKey.toLowerCase())) {\n result[activeKey] = `${result[activeKey]},${segment.trim()}`;\n continue;\n }\n throw new PmCliError(buildInvalidKvMessage(raw, optionName), EXIT_CODE.USAGE);\n }\n\n return result;\n}\n\nasync function readStdinText(optionName: string): Promise<string> {\n if (process.stdin.isTTY === true) {\n throw new PmCliError(\n `${optionName} value \"${STDIN_TOKEN}\" requires piped stdin input. Pipe content into the command, or end manual stdin with Ctrl+D (Unix/macOS) or Ctrl+Z then Enter (Windows).`,\n EXIT_CODE.USAGE,\n );\n }\n process.stdin.setEncoding(\"utf8\");\n return await new Promise<string>((resolve, reject) => {\n let input = \"\";\n process.stdin.on(\"data\", (chunk: string) => {\n input += chunk;\n });\n process.stdin.on(\"end\", () => {\n resolve(normalizeLineEndings(input));\n });\n process.stdin.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nexport interface StdinTokenResolver {\n resolveValue(value: string | undefined, optionName: string): Promise<string | undefined>;\n resolveList(values: string[] | undefined, optionName: string): Promise<string[] | undefined>;\n}\n\nexport function createStdinTokenResolver(): StdinTokenResolver {\n let stdinValuePromise: Promise<string> | undefined;\n let stdinConsumerOption: string | undefined;\n\n const consumeStdin = async (optionName: string): Promise<string> => {\n if (stdinConsumerOption && stdinConsumerOption !== optionName) {\n throw new PmCliError(\n `Only one option may use \"${STDIN_TOKEN}\" stdin token per command invocation. Already used by ${stdinConsumerOption}.`,\n EXIT_CODE.USAGE,\n );\n }\n stdinConsumerOption = optionName;\n if (!stdinValuePromise) {\n stdinValuePromise = readStdinText(optionName);\n }\n return await stdinValuePromise;\n };\n\n const resolveValue = async (value: string | undefined, optionName: string): Promise<string | undefined> => {\n if (value === undefined) {\n return undefined;\n }\n if (value.trim() !== STDIN_TOKEN) {\n return value;\n }\n return await consumeStdin(optionName);\n };\n\n const resolveList = async (values: string[] | undefined, optionName: string): Promise<string[] | undefined> => {\n if (!values) {\n return undefined;\n }\n const tokenIndexes = values\n .map((entry, index) => (entry.trim() === STDIN_TOKEN ? index : -1))\n .filter((index) => index >= 0);\n if (tokenIndexes.length === 0) {\n return values;\n }\n if (tokenIndexes.length > 1) {\n throw new PmCliError(\n `${optionName} accepts \"${STDIN_TOKEN}\" stdin token at most once per command invocation`,\n EXIT_CODE.USAGE,\n );\n }\n const stdinValue = await consumeStdin(optionName);\n const next = [...values];\n next[tokenIndexes[0]] = stdinValue;\n return next;\n };\n\n return {\n resolveValue,\n resolveList,\n };\n}\n\nexport function parseOptionalNumber(raw: string, optionName: string): number {\n const value = Number(raw);\n if (!Number.isFinite(value)) {\n throw new PmCliError(`Invalid ${optionName} value \"${raw}\"`, EXIT_CODE.USAGE);\n }\n return value;\n}\n\nexport const _testOnly = {\n coerceJsonTagArray,\n stripCodeFenceEnvelope,\n parseMarkdownKeyValueLines,\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;AAGA,IAAM,cAAc;AACpB,IAAM,yBAAyB,oBAAI,IAAI;EACrC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD;AAEK,SAAU,UAAU,KAAW;AACnC,QAAM,UAAU,IAAI,KAAI;AACxB,MAAI,YAAY,IAAI;AAClB,WAAO,CAAA;EACT;AACA,QAAM,SAAS,mBAAmB,OAAO,KAAK;AAC9C,QAAM,OAAO,OACV,MAAM,GAAG,EACT,IAAI,CAAC,QAAQ,IAAI,KAAI,CAAE,EACvB,OAAO,OAAO,EACd,IAAI,CAAC,QAAQ,IAAI,YAAW,CAAE;AACjC,SAAO,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AACpE;AAOM,SAAU,qBAAqB,QAAqC;AACxE,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAG;AACjD,WAAO,CAAA;EACT;AACA,QAAM,YAAsB,CAAA;AAC5B,aAAW,OAAO,QAAQ;AACxB,QAAI,OAAO,QAAQ,UAAU;AAC3B;IACF;AACA,eAAW,OAAO,UAAU,GAAG,GAAG;AAChC,gBAAU,KAAK,GAAG;IACpB;EACF;AACA,SAAO,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AACzE;AAUA,SAAS,kBAAkB,UAA2B;AAKpD,MAAI,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAC5B,WAAO,CAAA;EACT;AACA,SAAO,SACJ,OAAO,CAAC,QAAuB,OAAO,QAAQ,QAAQ,EACtD,IAAI,CAAC,QAAQ,IAAI,KAAI,EAAG,YAAW,CAAE,EACrC,OAAO,OAAO;AACnB;AAOM,SAAU,kBAAkB,UAA6B,KAAkC;AAC/F,QAAM,iBAAiB,kBAAkB,QAAQ;AACjD,MAAI,CAAC,OAAO,IAAI,WAAW,GAAG;AAC5B,WAAO,MAAM,KAAK,IAAI,IAAI,cAAc,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;EAC9E;AACA,QAAM,SAAS,IAAI,IAAY,cAAc;AAC7C,aAAW,OAAO,qBAAqB,GAAG,GAAG;AAC3C,WAAO,IAAI,GAAG;EAChB;AACA,SAAO,MAAM,KAAK,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AAC7D;AAQM,SAAU,iBAAiB,UAA6B,QAAqC;AACjG,QAAM,iBAAiB,MAAM,KAAK,IAAI,IAAI,kBAAkB,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,cAAc,CAAC,CAAC;AACzG,MAAI,CAAC,UAAU,OAAO,WAAW,GAAG;AAClC,WAAO;EACT;AACA,QAAM,YAAY,IAAI,IAAI,qBAAqB,MAAM,CAAC;AACtD,MAAI,UAAU,SAAS,GAAG;AACxB,WAAO;EACT;AACA,SAAO,eAAe,OAAO,CAAC,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAC;AAC3D;AAMA,SAAS,mBAAmB,SAAe;AACzC,MAAI,CAAC,QAAQ,WAAW,GAAG,GAAG;AAC5B,WAAO;EACT;AACA,MAAI;AACJ,MAAI;AACF,aAAS,KAAK,MAAM,OAAO;EAC7B,QAAQ;AACN,WAAO;EACT;AACA,QAAM,cAAc;AACpB,SAAO,YACJ,IAAI,CAAC,UACJ,OAAO,UAAU,YAAY,OAAO,UAAU,YAAY,OAAO,UAAU,YACvE,OAAO,KAAK,EAAE,QAAQ,MAAM,GAAG,IAC/B,EAAE,EAEP,OAAO,CAAC,UAAU,MAAM,SAAS,CAAC,EAClC,KAAK,GAAG;AACb;AAEA,SAAS,qBAAqB,OAAa;AACzC,SAAO,MAAM,QAAQ,SAAS,IAAI;AACpC;AAEA,SAAS,uBAAuB,OAAa;AAC3C,QAAM,aAAa,qBAAqB,KAAK,EAAE,KAAI;AACnD,MAAI,CAAC,WAAW,WAAW,KAAK,GAAG;AACjC,WAAO;EACT;AACA,QAAM,QAAQ,WAAW,MAAM,IAAI;AACnC,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO;EACT;AACA,MAAI,MAAM,GAAG,EAAE,GAAG,KAAI,MAAO,OAAO;AAClC,WAAO;EACT;AACA,SAAO,MAAM,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI;AACrC;AAEA,SAAS,iBAAiB,KAAW;AACnC,QAAM,WAAqB,CAAA;AAC3B,MAAI,UAAU;AACd,MAAI,WAAW;AACf,MAAI,UAAU;AAEd,aAAW,QAAQ,KAAK;AACtB,QAAI,SAAS;AACX,iBAAW;AACX,gBAAU;AACV;IACF;AACA,QAAI,SAAS,MAAM;AACjB,iBAAW;AACX,gBAAU;AACV;IACF;AACA,QAAI,SAAS,KAAM;AACjB,iBAAW,CAAC;AACZ,iBAAW;AACX;IACF;AACA,QAAI,SAAS,OAAO,CAAC,UAAU;AAC7B,eAAS,KAAK,QAAQ,KAAI,CAAE;AAC5B,gBAAU;AACV;IACF;AACA,eAAW;EACb;AACA,MAAI,QAAQ,KAAI,GAAI;AAClB,aAAS,KAAK,QAAQ,KAAI,CAAE;EAC9B;AACA,SAAO;AACT;AAEA,SAAS,aAAa,OAAa;AACjC,QAAM,UAAU,MAAM,KAAI;AAC1B,MAAI,QAAQ,WAAW,GAAI,KAAK,QAAQ,SAAS,GAAI,GAAG;AACtD,WAAO,QAAQ,MAAM,GAAG,EAAE,EAAE,QAAQ,QAAQ,GAAI;EAClD;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,SAAe;AAC5C,QAAM,cAAc,QAAQ,QAAQ,GAAG;AACvC,QAAM,aAAa,QAAQ,QAAQ,GAAG;AACtC,QAAM,YAAY,cAAc;AAChC,QAAM,WAAW,aAAa;AAC9B,MAAI,aAAa,UAAU;AACzB,WAAO,KAAK,IAAI,aAAa,UAAU;EACzC;AACA,MAAI,WAAW;AACb,WAAO;EACT;AACA,MAAI,UAAU;AACZ,WAAO;EACT;AACA,SAAO;AACT;AAEA,SAAS,8BAA8B,KAAa,YAAkB;AACpE,MAAI,eAAe,WAAW,eAAe,cAAc;AACzD,UAAM,gBAAgB,SAAS,KAAK,GAAG,KAAK,iBAAiB,KAAK,IAAI,KAAI,CAAE;AAC5E,QAAI,eAAe;AACjB,aAAO;IACT;EACF;AACA,MAAI,eAAe,WAAW;AAC5B,WAAO;EACT;AACA,QAAM,UAAU,IAAI,YAAW;AAC/B,QAAM,iBACJ,QAAQ,SAAS,QAAQ,KAAK,QAAQ,SAAS,YAAY,IACvD,6IACA;AACN,QAAM,mBAAmB,QAAQ,SAAS,iBAAiB,IACvD,6EACA;AACJ,SAAO,GAAG,cAAc,GAAG,gBAAgB;AAC7C;AAEA,SAAS,sBAAsB,KAAa,YAAkB;AAC5D,QAAM,YAAY,IAAI,WAAW,QAAQ,GAAG,EAAE,KAAI;AAClD,QAAM,UAAU,UAAU,SAAS,MAAM,GAAG,UAAU,MAAM,GAAG,GAAG,CAAC,QAAQ;AAC3E,QAAM,yBAAyB,8BAA8B,KAAK,UAAU;AAC5E,SACE,WAAW,UAAU,WAAW,OAAO,wDACvC,yBACA,sFACO,UAAU,IAAI,WAAW;AAEpC;AAEA,SAAS,2BAA2B,KAAW;AAC7C,QAAM,aAAa,uBAAuB,GAAG,EAAE,KAAI;AACnD,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO;EACT;AACA,MAAI,CAAC,WAAW,SAAS,IAAI,KAAK,CAAC,WAAW,WAAW,GAAG,KAAK,CAAC,WAAW,WAAW,GAAG,KAAK,CAAC,WAAW,WAAW,GAAG,GAAG;AAC3H,WAAO;EACT;AAEA,QAAM,SAAiC,CAAA;AACvC,MAAI;AACJ,QAAM,QAAQ,qBAAqB,UAAU,EAC1C,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,KAAK,KAAI,CAAE,EACzB,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC;AAEnC,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,KAAK,MAAM,iDAAiD;AAC1E,QAAI,OAAO;AACT,YAAM,MAAM,MAAM,CAAC,EAAE,KAAI;AACzB,aAAO,GAAG,IAAI,aAAa,MAAM,CAAC,EAAE,KAAI,CAAE;AAC1C,kBAAY;AACZ;IACF;AACA,QAAI,aAAa,uBAAuB,IAAI,UAAU,YAAW,CAAE,GAAG;AACpE,aAAO,SAAS,IAAI,GAAG,OAAO,SAAS,CAAC;EAAK,IAAI;AACjD;IACF;AACA,WAAO;EACT;AAEA,SAAO;AACT;AAEM,SAAU,WAAW,KAAa,YAAkB;AACxD,QAAM,UAAU,uBAAuB,GAAG,EAAE,KAAI;AAChD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,WAAW,GAAG,UAAU,oBAAoB,UAAU,KAAK;EACvE;AAEA,QAAM,gBAAgB,2BAA2B,OAAO;AACxD,MAAI,eAAe;AACjB,WAAO;EACT;AAEA,QAAM,SAAiC,CAAA;AACvC,MAAI;AACJ,QAAM,WAAW,iBAAiB,OAAO;AAEzC,aAAW,WAAW,UAAU;AAC9B,UAAM,iBAAiB,sBAAsB,OAAO;AACpD,QAAI,iBAAiB,GAAG;AACtB,YAAM,MAAM,QAAQ,MAAM,GAAG,cAAc,EAAE,KAAI;AACjD,YAAM,QAAQ,aAAa,QAAQ,MAAM,iBAAiB,CAAC,EAAE,KAAI,CAAE;AACnE,aAAO,GAAG,IAAI;AACd,kBAAY;AACZ;IACF;AACA,QAAI,aAAa,uBAAuB,IAAI,UAAU,YAAW,CAAE,GAAG;AACpE,aAAO,SAAS,IAAI,GAAG,OAAO,SAAS,CAAC,IAAI,QAAQ,KAAI,CAAE;AAC1D;IACF;AACA,UAAM,IAAI,WAAW,sBAAsB,KAAK,UAAU,GAAG,UAAU,KAAK;EAC9E;AAEA,SAAO;AACT;AAEA,eAAe,cAAc,YAAkB;AAC7C,MAAI,QAAQ,MAAM,UAAU,MAAM;AAChC,UAAM,IAAI,WACR,GAAG,UAAU,WAAW,WAAW,6IACnC,UAAU,KAAK;EAEnB;AACA,UAAQ,MAAM,YAAY,MAAM;AAChC,SAAO,MAAM,IAAI,QAAgB,CAAC,SAAS,WAAU;AACnD,QAAI,QAAQ;AACZ,YAAQ,MAAM,GAAG,QAAQ,CAAC,UAAiB;AACzC,eAAS;IACX,CAAC;AACD,YAAQ,MAAM,GAAG,OAAO,MAAK;AAC3B,cAAQ,qBAAqB,KAAK,CAAC;IACrC,CAAC;AACD,YAAQ,MAAM,GAAG,SAAS,CAAC,UAAS;AAClC,aAAO,KAAK;IACd,CAAC;EACH,CAAC;AACH;AAOM,SAAU,2BAAwB;AACtC,MAAI;AACJ,MAAI;AAEJ,QAAM,eAAe,OAAO,eAAuC;AACjE,QAAI,uBAAuB,wBAAwB,YAAY;AAC7D,YAAM,IAAI,WACR,4BAA4B,WAAW,yDAAyD,mBAAmB,KACnH,UAAU,KAAK;IAEnB;AACA,0BAAsB;AACtB,QAAI,CAAC,mBAAmB;AACtB,0BAAoB,cAAc,UAAU;IAC9C;AACA,WAAO,MAAM;EACf;AAEA,QAAM,eAAe,OAAO,OAA2B,eAAmD;AACxG,QAAI,UAAU,QAAW;AACvB,aAAO;IACT;AACA,QAAI,MAAM,KAAI,MAAO,aAAa;AAChC,aAAO;IACT;AACA,WAAO,MAAM,aAAa,UAAU;EACtC;AAEA,QAAM,cAAc,OAAO,QAA8B,eAAqD;AAC5G,QAAI,CAAC,QAAQ;AACX,aAAO;IACT;AACA,UAAM,eAAe,OAClB,IAAI,CAAC,OAAO,UAAW,MAAM,KAAI,MAAO,cAAc,QAAQ,EAAG,EACjE,OAAO,CAAC,UAAU,SAAS,CAAC;AAC/B,QAAI,aAAa,WAAW,GAAG;AAC7B,aAAO;IACT;AACA,QAAI,aAAa,SAAS,GAAG;AAC3B,YAAM,IAAI,WACR,GAAG,UAAU,aAAa,WAAW,qDACrC,UAAU,KAAK;IAEnB;AACA,UAAM,aAAa,MAAM,aAAa,UAAU;AAChD,UAAM,OAAO,CAAC,GAAG,MAAM;AACvB,SAAK,aAAa,CAAC,CAAC,IAAI;AACxB,WAAO;EACT;AAEA,SAAO;IACL;IACA;;AAEJ;AAEM,SAAU,oBAAoB,KAAa,YAAkB;AACjE,QAAM,QAAQ,OAAO,GAAG;AACxB,MAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC3B,UAAM,IAAI,WAAW,WAAW,UAAU,WAAW,GAAG,KAAK,UAAU,KAAK;EAC9E;AACA,SAAO;AACT;",
4
+ "sourcesContent": ["import { PmCliError } from \"../shared/errors.js\";\nimport { EXIT_CODE } from \"../shared/constants.js\";\n\nconst STDIN_TOKEN = \"-\";\nconst CONTINUABLE_VALUE_KEYS = new Set([\n \"actual_result\",\n \"body\",\n \"cmd\",\n \"command\",\n \"customer_impact\",\n \"description\",\n \"environment\",\n \"expected_result\",\n \"impact\",\n \"location\",\n \"message\",\n \"note\",\n \"outcome\",\n \"repro_steps\",\n \"resolution\",\n \"text\",\n \"title\",\n \"unblock_note\",\n \"value\",\n \"why_now\",\n]);\n\nexport function parseTags(raw: string): string[] {\n const trimmed = raw.trim();\n if (trimmed === \"\") {\n return [];\n }\n const source = coerceJsonTagArray(trimmed) ?? trimmed;\n const tags = source\n .split(\",\")\n .map((tag) => tag.trim())\n .filter(Boolean)\n .map((tag) => tag.toLowerCase());\n return Array.from(new Set(tags)).sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Merge repeated `--add-tags` / `--remove-tags` values into a single normalized\n * tag list. Each entry can itself be CSV or a JSON array, mirroring the format\n * accepted by `--tags`. Returns a deterministically sorted, deduped list.\n */\nexport function collectTagFlagValues(values: readonly string[] | undefined): string[] {\n if (!Array.isArray(values) || values.length === 0) {\n return [];\n }\n const collected: string[] = [];\n for (const raw of values) {\n if (typeof raw !== \"string\") {\n continue;\n }\n for (const tag of parseTags(raw)) {\n collected.push(tag);\n }\n }\n return Array.from(new Set(collected)).sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Normalize a base tag list to the canonical form pm stores: trimmed,\n * lowercased, non-empty. Existing front-matter tags are almost always already\n * canonical (parseTags lowercases on write), but legacy or hand-edited `.toon`\n * files can carry mixed-case entries — normalizing here keeps additive and\n * subtractive mutations case-insensitive (so `--add-tags beta` dedupes against\n * an existing `Beta`, and `--remove-tags alpha` removes an existing `Alpha`).\n */\nfunction normalizeBaseTags(baseTags: readonly string[]): string[] {\n // Defensive: front-matter parsed from corrupted/hand-edited `.toon` (or an\n // external SDK caller) could pass a non-array or non-string entries despite\n // the `string[]` type — guard the array and skip non-strings rather than\n // throwing on `.filter`/`.trim()`.\n if (!Array.isArray(baseTags)) {\n return [];\n }\n return baseTags\n .filter((tag): tag is string => typeof tag === \"string\")\n .map((tag) => tag.trim().toLowerCase())\n .filter(Boolean);\n}\n\n/**\n * Apply an additive tag mutation to a base tag list. Used by `pm create` and\n * `pm update` so `--add-tags` extends `--tags` (or the existing tags) without\n * replacing them. Output is sorted + deduped lowercase, matching `parseTags`.\n */\nexport function mergeAdditiveTags(baseTags: readonly string[], add: readonly string[] | undefined): string[] {\n const normalizedBase = normalizeBaseTags(baseTags);\n if (!add || add.length === 0) {\n return Array.from(new Set(normalizedBase)).sort((a, b) => a.localeCompare(b));\n }\n const merged = new Set<string>(normalizedBase);\n for (const tag of collectTagFlagValues(add)) {\n merged.add(tag);\n }\n return Array.from(merged).sort((a, b) => a.localeCompare(b));\n}\n\n/**\n * Apply a subtractive tag mutation to a base tag list. Used by `pm update` so\n * `--remove-tags x,y` prunes those entries without rewriting the full set.\n * Removal is case-insensitive: both the base list and the removal selectors are\n * normalized to canonical lowercase before matching.\n */\nexport function applyTagRemovals(baseTags: readonly string[], remove: readonly string[] | undefined): string[] {\n const normalizedBase = Array.from(new Set(normalizeBaseTags(baseTags))).sort((a, b) => a.localeCompare(b));\n if (!remove || remove.length === 0) {\n return normalizedBase;\n }\n const removeSet = new Set(collectTagFlagValues(remove));\n if (removeSet.size === 0) {\n return normalizedBase;\n }\n return normalizedBase.filter((tag) => !removeSet.has(tag));\n}\n\n// Agents and MCP callers frequently pass --tags as a JSON array (e.g.\n// `--tags '[\"a\",\"b\"]'`). The MCP server normalizes that upstream, but direct\n// CLI invocations used to write the raw bracket string into front matter,\n// silently corrupting tags. Accept JSON arrays of primitives transparently.\nfunction coerceJsonTagArray(trimmed: string): string | null {\n if (!trimmed.startsWith(\"[\")) {\n return null;\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(trimmed);\n } catch {\n return null;\n }\n const parsedArray = parsed as unknown[];\n return parsedArray\n .map((entry) =>\n typeof entry === \"string\" || typeof entry === \"number\" || typeof entry === \"boolean\"\n ? String(entry).replace(/,/g, \" \")\n : \"\",\n )\n .filter((entry) => entry.length > 0)\n .join(\",\");\n}\n\nfunction normalizeLineEndings(value: string): string {\n return value.replace(/\\r\\n/g, \"\\n\");\n}\n\nfunction stripCodeFenceEnvelope(value: string): string {\n const normalized = normalizeLineEndings(value).trim();\n if (!normalized.startsWith(\"```\")) {\n return value;\n }\n const lines = normalized.split(\"\\n\");\n if (lines.length < 2) {\n return value;\n }\n if (lines.at(-1)?.trim() !== \"```\") {\n return value;\n }\n return lines.slice(1, -1).join(\"\\n\");\n}\n\nfunction splitCsvSegments(raw: string): string[] {\n const segments: string[] = [];\n let current = \"\";\n let inQuotes = false;\n let escaped = false;\n\n for (const char of raw) {\n if (escaped) {\n current += char;\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n current += char;\n escaped = true;\n continue;\n }\n if (char === \"\\\"\") {\n inQuotes = !inQuotes;\n current += char;\n continue;\n }\n if (char === \",\" && !inQuotes) {\n segments.push(current.trim());\n current = \"\";\n continue;\n }\n current += char;\n }\n if (current.trim()) {\n segments.push(current.trim());\n }\n return segments;\n}\n\nfunction unquoteValue(value: string): string {\n const trimmed = value.trim();\n if (trimmed.startsWith(\"\\\"\") && trimmed.endsWith(\"\\\"\")) {\n return trimmed.slice(1, -1).replace(/\\\\\"/g, \"\\\"\");\n }\n return value;\n}\n\nfunction findKeyValueDelimiter(segment: string): number {\n const equalsIndex = segment.indexOf(\"=\");\n const colonIndex = segment.indexOf(\":\");\n const hasEquals = equalsIndex > 0;\n const hasColon = colonIndex > 0;\n if (hasEquals && hasColon) {\n return Math.min(equalsIndex, colonIndex);\n }\n if (hasEquals) {\n return equalsIndex;\n }\n if (hasColon) {\n return colonIndex;\n }\n return -1;\n}\n\nfunction buildOptionSpecificKvGuidance(raw: string, optionName: string): string {\n if (optionName === \"--add\" || optionName === \"--add-glob\") {\n const looksLikePath = /[./\\\\]/.test(raw) || /\\.[a-z]{1,6}$/i.test(raw.trim());\n if (looksLikePath) {\n return 'For file/doc paths use: path=<file-path>[,scope=project|global]. The scope field is optional and defaults to project (example: path=src/api.ts or path=README.md,scope=project). ';\n }\n }\n if (optionName !== \"--event\") {\n return \"\";\n }\n const lowered = raw.toLowerCase();\n const recurrenceHint =\n lowered.includes(\"recur_\") || lowered.includes(\"recurrence\")\n ? ' Recurrence list values must stay in one field and use \"|\" delimiters (for example recur_by_weekday=mon|wed or recur_by_month_day=1|15).'\n : \"\";\n const weekdayAliasHint = lowered.includes(\"recur_byweekday\")\n ? \" Use recur_by_weekday (with underscores) for weekday recurrence filters.\"\n : \"\";\n return `${recurrenceHint}${weekdayAliasHint}`;\n}\n\nfunction buildInvalidKvMessage(raw: string, optionName: string): string {\n const condensed = raw.replaceAll(/\\s+/g, \" \").trim();\n const preview = condensed.length > 160 ? `${condensed.slice(0, 157)}...` : condensed;\n const optionSpecificGuidance = buildOptionSpecificKvGuidance(raw, optionName);\n return (\n `Invalid ${optionName} value \"${preview}\". Expected key=value entries separated by commas. ` +\n optionSpecificGuidance +\n 'Also accepts markdown-style key/value lines (for example \"- path: README.md\"). ' +\n `Use ${optionName} ${STDIN_TOKEN} to read piped stdin input.`\n );\n}\n\nfunction parseMarkdownKeyValueLines(raw: string): Record<string, string> | null {\n const normalized = stripCodeFenceEnvelope(raw).trim();\n if (normalized.length === 0) {\n return null;\n }\n if (!normalized.includes(\"\\n\") && !normalized.startsWith(\"-\") && !normalized.startsWith(\"*\") && !normalized.startsWith(\"+\")) {\n return null;\n }\n\n const result: Record<string, string> = {};\n let activeKey: string | undefined;\n const lines = normalizeLineEndings(normalized)\n .split(\"\\n\")\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n\n for (const line of lines) {\n const match = line.match(/^(?:[-*+]\\s+)?([a-zA-Z0-9_.-]+)\\s*(=|:)\\s*(.*)$/);\n if (match) {\n const key = match[1].trim();\n result[key] = unquoteValue(match[3].trim());\n activeKey = key;\n continue;\n }\n if (activeKey && CONTINUABLE_VALUE_KEYS.has(activeKey.toLowerCase())) {\n result[activeKey] = `${result[activeKey]}\\n${line}`;\n continue;\n }\n return null;\n }\n\n return result;\n}\n\nexport function parseCsvKv(raw: string, optionName: string): Record<string, string> {\n const trimmed = stripCodeFenceEnvelope(raw).trim();\n if (!trimmed) {\n throw new PmCliError(`${optionName} cannot be empty`, EXIT_CODE.USAGE);\n }\n\n const markdownStyle = parseMarkdownKeyValueLines(trimmed);\n if (markdownStyle) {\n return markdownStyle;\n }\n\n const result: Record<string, string> = {};\n let activeKey: string | undefined;\n const segments = splitCsvSegments(trimmed);\n\n for (const segment of segments) {\n const delimiterIndex = findKeyValueDelimiter(segment);\n if (delimiterIndex > 0) {\n const key = segment.slice(0, delimiterIndex).trim();\n const value = unquoteValue(segment.slice(delimiterIndex + 1).trim());\n result[key] = value;\n activeKey = key;\n continue;\n }\n if (activeKey && CONTINUABLE_VALUE_KEYS.has(activeKey.toLowerCase())) {\n result[activeKey] = `${result[activeKey]},${segment.trim()}`;\n continue;\n }\n throw new PmCliError(buildInvalidKvMessage(raw, optionName), EXIT_CODE.USAGE);\n }\n\n return result;\n}\n\nconst WINDOWS_ABSOLUTE_PATH_PATTERN = /^[A-Za-z]:[\\\\/]/;\nconst GENERIC_LEADING_KV_KEY_PATTERN = /^(?:[-*+]\\s+)?[A-Za-z_][A-Za-z0-9_.-]*\\s*=/;\n\n/**\n * Detect a CSV/markdown entry that opens with a generic `key=` token even when\n * that key is unknown (e.g. a typo like `lable=main,path=README.md`). Callers\n * combine this with their known-key prefix check so a first-key typo is routed\n * through structured parsing and rejected by {@link assertNoUnknownCsvKeys}\n * (GH-258) instead of being silently swallowed as a bare path/value.\n *\n * Windows absolute paths (`C:\\…`) are excluded so a drive-lettered bare path is\n * never misread as a `C=…` key/value entry.\n */\nexport function looksLikeGenericKeyValueEntry(raw: string): boolean {\n const trimmed = raw.trim();\n if (WINDOWS_ABSOLUTE_PATH_PATTERN.test(trimmed)) {\n return false;\n }\n return GENERIC_LEADING_KV_KEY_PATTERN.test(trimmed);\n}\n\n/**\n * Reject any key in a parsed CSV/markdown key/value map that is not part of the\n * caller's allowed-key contract, mirroring the strict `test --add` behavior\n * (see linked-test-parsers). This closes the cross-command consistency defect\n * (GH-258) where structured link/metadata parsers silently DROPPED typoed keys\n * (e.g. `lable=` instead of `label=`), storing data the author never intended.\n *\n * Comparison is case-insensitive so a key the downstream reader would accept\n * (e.g. `Path`) is never falsely rejected; the emitted \"Allowed keys\" list\n * preserves the canonical casing the caller passes in. Recognized keys are then\n * normalized in-place to their lowercase canonical form so downstream readers\n * (`kv.path`, `kv.id`, `kv.at`, …) see the value even when the input used mixed\n * casing — otherwise `Path=README.md` would pass validation yet read back as an\n * undefined `path` and surface a confusing \"requires path\" error. A key that\n * collides with another after normalization (e.g. `path=a,Path=b`) is rejected.\n *\n * Parsers with an intentional plaintext fallback (`--comment`/`--note`/\n * `--learning`, annotation `--add`) deliberately do NOT call this — there an\n * unrecognized key means \"treat the whole entry as plaintext\", not an error.\n */\nexport function assertNoUnknownCsvKeys(\n kv: Record<string, string>,\n optionName: string,\n allowedKeys: readonly string[],\n): void {\n const allowed = new Set(allowedKeys.map((key) => key.toLowerCase()));\n const unknownKeys = Object.keys(kv).filter((key) => !allowed.has(key.toLowerCase()));\n if (unknownKeys.length > 0) {\n throw new PmCliError(\n `${optionName} does not recognize key${unknownKeys.length > 1 ? \"s\" : \"\"} ${unknownKeys\n .map((key) => `\"${key}\"`)\n .join(\", \")}. Allowed keys: ${allowedKeys.join(\", \")}.`,\n EXIT_CODE.USAGE,\n );\n }\n for (const key of Object.keys(kv)) {\n const normalizedKey = key.toLowerCase();\n if (normalizedKey === key) {\n continue;\n }\n if (Object.hasOwn(kv, normalizedKey)) {\n throw new PmCliError(\n `${optionName} provides key \"${key}\" more than once after case normalization.`,\n EXIT_CODE.USAGE,\n );\n }\n kv[normalizedKey] = kv[key];\n delete kv[key];\n }\n}\n\nasync function readStdinText(optionName: string): Promise<string> {\n if (process.stdin.isTTY === true) {\n throw new PmCliError(\n `${optionName} value \"${STDIN_TOKEN}\" requires piped stdin input. Pipe content into the command, or end manual stdin with Ctrl+D (Unix/macOS) or Ctrl+Z then Enter (Windows).`,\n EXIT_CODE.USAGE,\n );\n }\n process.stdin.setEncoding(\"utf8\");\n return await new Promise<string>((resolve, reject) => {\n let input = \"\";\n process.stdin.on(\"data\", (chunk: string) => {\n input += chunk;\n });\n process.stdin.on(\"end\", () => {\n resolve(normalizeLineEndings(input));\n });\n process.stdin.on(\"error\", (error) => {\n reject(error);\n });\n });\n}\n\nexport interface StdinTokenResolver {\n resolveValue(value: string | undefined, optionName: string): Promise<string | undefined>;\n resolveList(values: string[] | undefined, optionName: string): Promise<string[] | undefined>;\n}\n\nexport function createStdinTokenResolver(): StdinTokenResolver {\n let stdinValuePromise: Promise<string> | undefined;\n let stdinConsumerOption: string | undefined;\n\n const consumeStdin = async (optionName: string): Promise<string> => {\n if (stdinConsumerOption && stdinConsumerOption !== optionName) {\n throw new PmCliError(\n `Only one option may use \"${STDIN_TOKEN}\" stdin token per command invocation. Already used by ${stdinConsumerOption}.`,\n EXIT_CODE.USAGE,\n );\n }\n stdinConsumerOption = optionName;\n if (!stdinValuePromise) {\n stdinValuePromise = readStdinText(optionName);\n }\n return await stdinValuePromise;\n };\n\n const resolveValue = async (value: string | undefined, optionName: string): Promise<string | undefined> => {\n if (value === undefined) {\n return undefined;\n }\n if (value.trim() !== STDIN_TOKEN) {\n return value;\n }\n return await consumeStdin(optionName);\n };\n\n const resolveList = async (values: string[] | undefined, optionName: string): Promise<string[] | undefined> => {\n if (!values) {\n return undefined;\n }\n const tokenIndexes = values\n .map((entry, index) => (entry.trim() === STDIN_TOKEN ? index : -1))\n .filter((index) => index >= 0);\n if (tokenIndexes.length === 0) {\n return values;\n }\n if (tokenIndexes.length > 1) {\n throw new PmCliError(\n `${optionName} accepts \"${STDIN_TOKEN}\" stdin token at most once per command invocation`,\n EXIT_CODE.USAGE,\n );\n }\n const stdinValue = await consumeStdin(optionName);\n const next = [...values];\n next[tokenIndexes[0]] = stdinValue;\n return next;\n };\n\n return {\n resolveValue,\n resolveList,\n };\n}\n\nexport function parseOptionalNumber(raw: string, optionName: string): number {\n const value = Number(raw);\n if (!Number.isFinite(value)) {\n throw new PmCliError(`Invalid ${optionName} value \"${raw}\"`, EXIT_CODE.USAGE);\n }\n return value;\n}\n\nexport const _testOnly = {\n coerceJsonTagArray,\n stripCodeFenceEnvelope,\n parseMarkdownKeyValueLines,\n};\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -6,7 +6,7 @@ import {
6
6
  runActiveRendererOverride,
7
7
  runActiveServiceOverrideSync,
8
8
  setActiveCommandResult
9
- } from "./chunk-KTVETP66.js";
9
+ } from "./chunk-SJCMTOEU.js";
10
10
 
11
11
  // dist/core/output/mutation-projection.js
12
12
  var CHANGED_FIELDS_KEY = "changed_fields";
@@ -334,6 +334,6 @@ export {
334
334
  printResult,
335
335
  printError
336
336
  };
337
- //# sourceMappingURL=chunk-NCIBNERT.js.map
337
+ //# sourceMappingURL=chunk-OOIH6J5T.js.map
338
338
 
339
339
  //# debugId=e76ec835-15fe-5a06-b713-4557c1e8bede
@@ -7,13 +7,13 @@ import {
7
7
  mutateItem,
8
8
  readLocatedItem,
9
9
  toItemRecord
10
- } from "./chunk-7K2MXFMX.js";
10
+ } from "./chunk-FPDK5BZQ.js";
11
11
  import {
12
12
  isTerminalStatus
13
- } from "./chunk-GAVE4MYM.js";
13
+ } from "./chunk-IROHIK2T.js";
14
14
  import {
15
15
  resolveItemTypeRegistry
16
- } from "./chunk-ZONXMSVB.js";
16
+ } from "./chunk-V2GYOMEX.js";
17
17
  import {
18
18
  EXIT_CODE,
19
19
  PmCliError,
@@ -22,7 +22,7 @@ import {
22
22
  readSettings,
23
23
  resolvePmRoot,
24
24
  resolveRuntimeStatusRegistry
25
- } from "./chunk-KTVETP66.js";
25
+ } from "./chunk-SJCMTOEU.js";
26
26
 
27
27
  // dist/cli/commands/close.js
28
28
  function toAuthor(candidate, defaultAuthor) {
@@ -314,6 +314,6 @@ async function runClose(id, closeReasonText, options, global) {
314
314
  export {
315
315
  runClose
316
316
  };
317
- //# sourceMappingURL=chunk-II7OGE3V.js.map
317
+ //# sourceMappingURL=chunk-OSBJPPX3.js.map
318
318
 
319
319
  //# debugId=4f51ba93-f32f-5921-b8ab-8043f9e84d64
@@ -12,15 +12,15 @@ import {
12
12
  readFirstStringFromCommanderOptions,
13
13
  readFirstValueFromCommanderOptions,
14
14
  readStringArrayFromCommanderOptions
15
- } from "./chunk-3XOXWOGA.js";
15
+ } from "./chunk-FPY2TOFI.js";
16
16
  import {
17
17
  refreshSearchArtifactsForMutation,
18
18
  shouldRunSearchRefreshInForeground
19
- } from "./chunk-CBMETQ2U.js";
19
+ } from "./chunk-2S46FKLB.js";
20
20
  import {
21
21
  printError,
22
22
  writeStdout
23
- } from "./chunk-NCIBNERT.js";
23
+ } from "./chunk-OOIH6J5T.js";
24
24
  import {
25
25
  EXIT_CODE,
26
26
  PmCliError,
@@ -29,7 +29,7 @@ import {
29
29
  readSettings,
30
30
  resolvePmRoot,
31
31
  setActiveCommandResult
32
- } from "./chunk-KTVETP66.js";
32
+ } from "./chunk-SJCMTOEU.js";
33
33
 
34
34
  // dist/cli/registration-helpers.js
35
35
  var RESOLVED_GLOBAL_OPTIONS = /* @__PURE__ */ Symbol("pm.resolvedGlobalOptions");
@@ -796,6 +796,6 @@ export {
796
796
  normalizeContextOptions,
797
797
  invalidateSearchCachesForMutation
798
798
  };
799
- //# sourceMappingURL=chunk-HPELHUTG.js.map
799
+ //# sourceMappingURL=chunk-PJS3WDO2.js.map
800
800
 
801
801
  //# debugId=66f89286-fa96-58ff-8433-3c6542539b84
@@ -5,13 +5,13 @@ import {
5
5
  mutateItem,
6
6
  readLocatedItem,
7
7
  toItemRecord
8
- } from "./chunk-4KBK4BA3.js";
8
+ } from "./chunk-KA22USXD.js";
9
9
  import {
10
10
  isTerminalStatus
11
- } from "./chunk-GYMG7AG6.js";
11
+ } from "./chunk-TBV33CB4.js";
12
12
  import {
13
13
  resolveItemTypeRegistry
14
- } from "./chunk-6BV7ENQL.js";
14
+ } from "./chunk-QXMXRPX5.js";
15
15
  import {
16
16
  EXIT_CODE,
17
17
  PmCliError,
@@ -20,7 +20,7 @@ import {
20
20
  readSettings,
21
21
  resolvePmRoot,
22
22
  resolveRuntimeStatusRegistry
23
- } from "./chunk-LV5FFQ7M.js";
23
+ } from "./chunk-CHM2VFVL.js";
24
24
 
25
25
  // dist/cli/commands/close.js
26
26
  !(function() {
@@ -319,4 +319,4 @@ async function runClose(id, closeReasonText, options, global2) {
319
319
  export {
320
320
  runClose
321
321
  };
322
- //# sourceMappingURL=chunk-6NQXMGYU.js.map
322
+ //# sourceMappingURL=chunk-QGPE2H6Z.js.map
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  getRuntimePath,
5
5
  writeFileAtomic
6
- } from "./chunk-KTVETP66.js";
6
+ } from "./chunk-SJCMTOEU.js";
7
7
 
8
8
  // dist/core/session/session-state.js
9
9
  import { promises as fs } from "node:fs";
@@ -53,6 +53,6 @@ export {
53
53
  setFocusedItem,
54
54
  clearFocusedItem
55
55
  };
56
- //# sourceMappingURL=chunk-ASM4DVRW.js.map
56
+ //# sourceMappingURL=chunk-QVTFFLR2.js.map
57
57
 
58
58
  //# debugId=a5908b03-2f19-5791-9031-2e99d2956a1c
@@ -5,7 +5,7 @@ import {
5
5
  PmCliError,
6
6
  isPathWithinDirectory,
7
7
  pathExists
8
- } from "./chunk-KTVETP66.js";
8
+ } from "./chunk-SJCMTOEU.js";
9
9
 
10
10
  // dist/cli/commands/extension/shared.js
11
11
  import fs from "node:fs/promises";
@@ -110,6 +110,6 @@ export {
110
110
  parseExtensionManifest,
111
111
  validateExtensionDirectory
112
112
  };
113
- //# sourceMappingURL=chunk-FTAZLAR7.js.map
113
+ //# sourceMappingURL=chunk-QW2F6ARZ.js.map
114
114
 
115
115
  //# debugId=b6f39b42-b30d-556c-b72b-86fa0bc7f26a
@@ -2,7 +2,7 @@
2
2
  !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="98b95c9f-4bca-5118-a3da-691d585bda64")}catch(e){}}();
3
3
  import {
4
4
  nowIso
5
- } from "./chunk-G2YVUY7I.js";
5
+ } from "./chunk-VXRFAE7W.js";
6
6
  import {
7
7
  EXIT_CODE,
8
8
  appendLineAtomic,
@@ -13,7 +13,7 @@ import {
13
13
  resolveTelemetryErrorCategory,
14
14
  writeFileAtomic,
15
15
  writeSettings
16
- } from "./chunk-KTVETP66.js";
16
+ } from "./chunk-SJCMTOEU.js";
17
17
 
18
18
  // dist/core/telemetry/observability.js
19
19
  var SETUP_ROOT_COMMANDS = /* @__PURE__ */ new Set(["init", "config", "completion", "completion-statuses", "completion-tags", "completion-types"]);
@@ -1742,6 +1742,6 @@ export {
1742
1742
  finishTelemetryCommand,
1743
1743
  emitTelemetryErrorEvent
1744
1744
  };
1745
- //# sourceMappingURL=chunk-A576QZDL.js.map
1745
+ //# sourceMappingURL=chunk-QXC3LWB7.js.map
1746
1746
 
1747
1747
  //# debugId=98b95c9f-4bca-5118-a3da-691d585bda64
@@ -4,7 +4,7 @@ import {
4
4
  normalizeItemTypeDefinition,
5
5
  normalizeItemTypeStringList,
6
6
  strictPolicyCommand
7
- } from "./chunk-LV5FFQ7M.js";
7
+ } from "./chunk-CHM2VFVL.js";
8
8
 
9
9
  // dist/core/item/type-registry.js
10
10
  !(function() {
@@ -654,4 +654,4 @@ export {
654
654
  resolveCommandOptionPolicyState,
655
655
  validateTypeOptions
656
656
  };
657
- //# sourceMappingURL=chunk-6BV7ENQL.js.map
657
+ //# sourceMappingURL=chunk-QXMXRPX5.js.map
@@ -4,7 +4,7 @@ import {
4
4
  runActiveRendererOverride,
5
5
  runActiveServiceOverrideSync,
6
6
  setActiveCommandResult
7
- } from "./chunk-LV5FFQ7M.js";
7
+ } from "./chunk-CHM2VFVL.js";
8
8
 
9
9
  // dist/core/output/mutation-projection.js
10
10
  !(function() {
@@ -346,4 +346,4 @@ export {
346
346
  printResult,
347
347
  printError
348
348
  };
349
- //# sourceMappingURL=chunk-SPYPC5CB.js.map
349
+ //# sourceMappingURL=chunk-R4AKUPKI.js.map
@@ -2,7 +2,7 @@
2
2
  !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d9c38660-7b8d-54c6-82c4-12f9a2204743")}catch(e){}}();
3
3
  import {
4
4
  toNonEmptyStringOrUndefined
5
- } from "./chunk-KTVETP66.js";
5
+ } from "./chunk-SJCMTOEU.js";
6
6
 
7
7
  // dist/core/governance/metadata-coverage.js
8
8
  function normalizeStatus(status, registry) {
@@ -389,6 +389,6 @@ export {
389
389
  contentFiltersNeedBody,
390
390
  computeContentFieldUtilization
391
391
  };
392
- //# sourceMappingURL=chunk-UAR2VNCK.js.map
392
+ //# sourceMappingURL=chunk-RASR23HV.js.map
393
393
 
394
394
  //# debugId=d9c38660-7b8d-54c6-82c4-12f9a2204743
@@ -2,22 +2,22 @@
2
2
  !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4f107dad-a5f1-5d97-b18e-83beee2c6267")}catch(e){}}();
3
3
  import {
4
4
  readHistoryEntries
5
- } from "./chunk-L6FJPOT4.js";
5
+ } from "./chunk-SO2ES46D.js";
6
6
  import {
7
7
  parseLimit
8
- } from "./chunk-UBMCSJXX.js";
8
+ } from "./chunk-KCAGIH6K.js";
9
9
  import {
10
10
  enforceHistoryStreamPolicyForItems,
11
11
  listAllFrontMatterLight
12
- } from "./chunk-7K2MXFMX.js";
12
+ } from "./chunk-FPDK5BZQ.js";
13
13
  import {
14
14
  resolveItemTypeRegistry
15
- } from "./chunk-ZONXMSVB.js";
15
+ } from "./chunk-V2GYOMEX.js";
16
16
  import {
17
17
  compareTimestampStrings,
18
18
  nowIso,
19
19
  resolveIsoOrRelative
20
- } from "./chunk-G2YVUY7I.js";
20
+ } from "./chunk-VXRFAE7W.js";
21
21
  import {
22
22
  EXIT_CODE,
23
23
  PmCliError,
@@ -27,7 +27,7 @@ import {
27
27
  readSettings,
28
28
  resolvePmRoot,
29
29
  runActiveOnReadHooks
30
- } from "./chunk-KTVETP66.js";
30
+ } from "./chunk-SJCMTOEU.js";
31
31
 
32
32
  // dist/cli/commands/activity.js
33
33
  import fs from "node:fs/promises";
@@ -188,6 +188,6 @@ export {
188
188
  _testOnly,
189
189
  runActivity
190
190
  };
191
- //# sourceMappingURL=chunk-YXTLI4XP.js.map
191
+ //# sourceMappingURL=chunk-SCDCNGCV.js.map
192
192
 
193
193
  //# debugId=4f107dad-a5f1-5d97-b18e-83beee2c6267
@@ -3,26 +3,26 @@ import {
3
3
  normalizeReplayPatchOps,
4
4
  tryApplyReplayPatch,
5
5
  verifyHistoryChain
6
- } from "./chunk-ZJRDVYZI.js";
6
+ } from "./chunk-JZHL4E3Q.js";
7
7
  import {
8
8
  parseLimit
9
- } from "./chunk-7AGIXLNK.js";
9
+ } from "./chunk-COVLE33A.js";
10
10
  import {
11
11
  enforceHistoryStreamPolicyForItem,
12
12
  hashDocument,
13
13
  hashEmptyDocument,
14
14
  locateItem,
15
15
  readLocatedItem
16
- } from "./chunk-4KBK4BA3.js";
16
+ } from "./chunk-KA22USXD.js";
17
17
  import {
18
18
  normalizeItemId
19
- } from "./chunk-WZCQVABQ.js";
19
+ } from "./chunk-5XGWFUW2.js";
20
20
  import {
21
21
  findFirstMergeConflictMarker
22
- } from "./chunk-GYMG7AG6.js";
22
+ } from "./chunk-TBV33CB4.js";
23
23
  import {
24
24
  resolveItemTypeRegistry
25
- } from "./chunk-6BV7ENQL.js";
25
+ } from "./chunk-QXMXRPX5.js";
26
26
  import {
27
27
  EXIT_CODE,
28
28
  PmCliError,
@@ -34,7 +34,7 @@ import {
34
34
  readSettings,
35
35
  resolvePmRoot,
36
36
  runActiveOnReadHooks
37
- } from "./chunk-LV5FFQ7M.js";
37
+ } from "./chunk-CHM2VFVL.js";
38
38
 
39
39
  // dist/core/history/history-diff.js
40
40
  !(function() {
@@ -276,4 +276,4 @@ export {
276
276
  readHistoryEntries,
277
277
  runHistory
278
278
  };
279
- //# sourceMappingURL=chunk-2IUJBMKS.js.map
279
+ //# sourceMappingURL=chunk-SCS5PVAA.js.map