@unbrained/pm-cli 2026.7.9 → 2026.7.10

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 (405) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cli/bootstrap-args.js +6 -3
  3. package/dist/cli/bootstrap-args.js.map +1 -1
  4. package/dist/cli/commands/context.d.ts +23 -0
  5. package/dist/cli/commands/context.js +96 -7
  6. package/dist/cli/commands/context.js.map +1 -1
  7. package/dist/cli/commands/extension.d.ts +1 -1
  8. package/dist/cli/commands/extension.js +91 -32
  9. package/dist/cli/commands/extension.js.map +1 -1
  10. package/dist/cli/commands/init.d.ts +19 -3
  11. package/dist/cli/commands/init.js +57 -24
  12. package/dist/cli/commands/init.js.map +1 -1
  13. package/dist/cli/commands/next.d.ts +3 -1
  14. package/dist/cli/commands/next.js +19 -7
  15. package/dist/cli/commands/next.js.map +1 -1
  16. package/dist/cli/commands/update.js +20 -10
  17. package/dist/cli/commands/update.js.map +1 -1
  18. package/dist/cli/register-list-query.js +8 -4
  19. package/dist/cli/register-list-query.js.map +1 -1
  20. package/dist/cli/register-setup.js +11 -2
  21. package/dist/cli/register-setup.js.map +1 -1
  22. package/dist/cli-bundle/chunks/append-G7NGOQVU.js +11 -0
  23. package/dist/cli-bundle/chunks/{append-RSPHC423.js → append-SIECQAPH.js} +5 -5
  24. package/dist/cli-bundle/chunks/{chunk-CGDUIPJL.js → chunk-22PW73KV.js} +3 -3
  25. package/dist/cli-bundle/chunks/{chunk-NBJCIAVV.js → chunk-2RW5DWHQ.js} +13 -8
  26. package/dist/cli-bundle/chunks/chunk-2RW5DWHQ.js.map +1 -0
  27. package/dist/cli-bundle/chunks/{chunk-GO2X6ZRB.js → chunk-35U3AVRY.js} +3 -3
  28. package/dist/cli-bundle/chunks/{chunk-4I7KS5ES.js → chunk-3JFQRPOI.js} +2 -2
  29. package/dist/cli-bundle/chunks/{chunk-NRMDT4OV.js → chunk-3THCOPYI.js} +4 -4
  30. package/dist/cli-bundle/chunks/{chunk-D6J5673C.js → chunk-4BINCIRM.js} +4 -4
  31. package/dist/cli-bundle/chunks/{chunk-26MFLA7K.js → chunk-4P2GYOM5.js} +7 -7
  32. package/dist/cli-bundle/chunks/{chunk-LHDHS4Z6.js → chunk-4QE5HOJY.js} +5 -5
  33. package/dist/cli-bundle/chunks/{chunk-5VAZHYVQ.js → chunk-56J3MPGE.js} +2 -2
  34. package/dist/cli-bundle/chunks/{chunk-MCZK7LY6.js → chunk-5BFBDJ4R.js} +24 -16
  35. package/dist/cli-bundle/chunks/chunk-5BFBDJ4R.js.map +1 -0
  36. package/dist/cli-bundle/chunks/{chunk-IINCZYM3.js → chunk-62ECRG6J.js} +3 -3
  37. package/dist/cli-bundle/chunks/{chunk-VCGHRLJU.js → chunk-62KPBB2W.js} +10 -10
  38. package/dist/cli-bundle/chunks/{chunk-3FUXM574.js → chunk-6MK6M35B.js} +4 -4
  39. package/dist/cli-bundle/chunks/{chunk-TI7QSUFK.js → chunk-6PBZBIS6.js} +5 -5
  40. package/dist/cli-bundle/chunks/{chunk-Y2736PT5.js → chunk-6WIP52LQ.js} +8 -8
  41. package/dist/cli-bundle/chunks/{chunk-GLMJLBLR.js → chunk-75NAGPEL.js} +3 -3
  42. package/dist/cli-bundle/chunks/{chunk-6TD5QGIB.js → chunk-77CWXIAC.js} +4 -4
  43. package/dist/cli-bundle/chunks/{chunk-CEX2DQXZ.js → chunk-7S2UC7S6.js} +37 -73
  44. package/dist/cli-bundle/chunks/chunk-7S2UC7S6.js.map +7 -0
  45. package/dist/cli-bundle/chunks/{chunk-PAWPLIWW.js → chunk-7THLDY3D.js} +5 -5
  46. package/dist/cli-bundle/chunks/{chunk-QJZM5WO5.js → chunk-7TRCAREE.js} +3 -3
  47. package/dist/cli-bundle/chunks/{chunk-EEJKHF7M.js → chunk-7TRVVYPI.js} +5 -5
  48. package/dist/cli-bundle/chunks/{chunk-ONADVBMD.js → chunk-A62N3BM3.js} +5 -5
  49. package/dist/cli-bundle/chunks/{chunk-MBLHA6LR.js → chunk-A7DJG5EF.js} +55 -6
  50. package/dist/cli-bundle/chunks/chunk-A7DJG5EF.js.map +7 -0
  51. package/dist/cli-bundle/chunks/{chunk-GZ365M6E.js → chunk-AD4HJKQZ.js} +49 -7
  52. package/dist/cli-bundle/chunks/chunk-AD4HJKQZ.js.map +1 -0
  53. package/dist/cli-bundle/chunks/{chunk-7QKSLAHB.js → chunk-AIWGQK6K.js} +2 -2
  54. package/dist/cli-bundle/chunks/{chunk-WDNPNW22.js → chunk-AKCHJXJ4.js} +7 -7
  55. package/dist/cli-bundle/chunks/{chunk-KFL3XHMA.js → chunk-AYPXY3HF.js} +2 -2
  56. package/dist/cli-bundle/chunks/{chunk-RL24NAUX.js → chunk-B7FCPO65.js} +4 -4
  57. package/dist/cli-bundle/chunks/{chunk-4OCWJ2AP.js → chunk-BC7QBM2A.js} +7 -7
  58. package/dist/cli-bundle/chunks/{chunk-LD2NBQ5T.js → chunk-BST7GFIX.js} +3 -3
  59. package/dist/cli-bundle/chunks/{chunk-P5SUMCU5.js → chunk-CUBPPDDF.js} +145 -62
  60. package/dist/cli-bundle/chunks/chunk-CUBPPDDF.js.map +1 -0
  61. package/dist/cli-bundle/chunks/{chunk-FJR2S7S4.js → chunk-CYBW4HK7.js} +7 -7
  62. package/dist/cli-bundle/chunks/{chunk-7UCBLJDF.js → chunk-DDF7UMVV.js} +2 -2
  63. package/dist/cli-bundle/chunks/{chunk-DQLP22K2.js → chunk-DLHFJZ2S.js} +7 -7
  64. package/dist/cli-bundle/chunks/{chunk-PCBZ2VJD.js → chunk-DMD2TENU.js} +4 -4
  65. package/dist/cli-bundle/chunks/{chunk-SCJPFQQT.js → chunk-DN67YDFH.js} +3 -3
  66. package/dist/cli-bundle/chunks/{chunk-7TBUV7XS.js → chunk-DNHILSD7.js} +4 -4
  67. package/dist/cli-bundle/chunks/{chunk-FFB3WITE.js → chunk-DT6NDP53.js} +3 -3
  68. package/dist/cli-bundle/chunks/{chunk-DBV5A7FT.js → chunk-DWGHHSDC.js} +5 -5
  69. package/dist/cli-bundle/chunks/{chunk-3V5C7PUH.js → chunk-DYUAQVDK.js} +2 -2
  70. package/dist/cli-bundle/chunks/{chunk-MCH6IKK7.js → chunk-E2RJZQNW.js} +3 -3
  71. package/dist/cli-bundle/chunks/{chunk-6ZKDMEVT.js → chunk-ECXJ7OHI.js} +3 -3
  72. package/dist/cli-bundle/chunks/{chunk-LG4N6YOK.js → chunk-ESXG6VFX.js} +5 -5
  73. package/dist/cli-bundle/chunks/{chunk-K4NMHZR3.js → chunk-EXG6XTJC.js} +13 -8
  74. package/dist/cli-bundle/chunks/chunk-EXG6XTJC.js.map +7 -0
  75. package/dist/cli-bundle/chunks/{chunk-BPJ5NYSJ.js → chunk-F7UA74OZ.js} +54 -7
  76. package/dist/cli-bundle/chunks/chunk-F7UA74OZ.js.map +7 -0
  77. package/dist/cli-bundle/chunks/{chunk-GSQVQINP.js → chunk-FBD2WUNS.js} +4 -4
  78. package/dist/cli-bundle/chunks/{chunk-YSRXFGNV.js → chunk-FSD7W7Y2.js} +3 -3
  79. package/dist/cli-bundle/chunks/{chunk-JYVPLGOW.js → chunk-FWL5XVYI.js} +4 -4
  80. package/dist/cli-bundle/chunks/{chunk-BPYVKTZE.js → chunk-FYMHD6VX.js} +16 -16
  81. package/dist/cli-bundle/chunks/{chunk-SIQGG335.js → chunk-GMNCW27N.js} +7 -7
  82. package/dist/cli-bundle/chunks/{chunk-3SHDAKMF.js → chunk-GPPWUJMR.js} +3 -3
  83. package/dist/cli-bundle/chunks/{chunk-W2VFNVSJ.js → chunk-H3HKQXQJ.js} +3 -3
  84. package/dist/cli-bundle/chunks/{chunk-UIHDZS6X.js → chunk-HFQ7QQZL.js} +7 -7
  85. package/dist/cli-bundle/chunks/{chunk-Z6RLSNUX.js → chunk-HLUB7G6J.js} +3 -3
  86. package/dist/cli-bundle/chunks/{chunk-NRYZ4QLH.js → chunk-HWUIK7YL.js} +16 -16
  87. package/dist/cli-bundle/chunks/{chunk-U72GF3I2.js → chunk-INAZHXOI.js} +3 -3
  88. package/dist/cli-bundle/chunks/{chunk-INOWVPUD.js → chunk-J3ELHLOJ.js} +5 -5
  89. package/dist/cli-bundle/chunks/{chunk-2BVD4ZD2.js → chunk-J3FDNQWM.js} +4 -3
  90. package/dist/cli-bundle/chunks/chunk-J3FDNQWM.js.map +7 -0
  91. package/dist/cli-bundle/chunks/{chunk-UH6VFRV6.js → chunk-J3Z2JMDV.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-2FKIIQMJ.js → chunk-JDEXIVKQ.js} +372 -20
  93. package/dist/cli-bundle/chunks/chunk-JDEXIVKQ.js.map +1 -0
  94. package/dist/cli-bundle/chunks/{chunk-KAJNWMBE.js → chunk-JFOBTM4D.js} +8 -8
  95. package/dist/cli-bundle/chunks/{chunk-J6AD3GWC.js → chunk-JNELC5UO.js} +2 -2
  96. package/dist/cli-bundle/chunks/{chunk-YPE5MFPJ.js → chunk-JQ5NB6O2.js} +4 -4
  97. package/dist/cli-bundle/chunks/{chunk-3UXIMY62.js → chunk-KFC6X4PI.js} +3 -3
  98. package/dist/cli-bundle/chunks/{chunk-C3YU3TXX.js → chunk-L2SWAZ3S.js} +2 -2
  99. package/dist/cli-bundle/chunks/{chunk-QLEH6FTQ.js → chunk-LVVZLEW5.js} +4 -4
  100. package/dist/cli-bundle/chunks/{chunk-RFHLRMLQ.js → chunk-M66PC7JI.js} +3 -3
  101. package/dist/cli-bundle/chunks/{chunk-63PZJCKO.js → chunk-M7DWRMNY.js} +4 -4
  102. package/dist/cli-bundle/chunks/{chunk-UEATYUZW.js → chunk-M7JYEBPT.js} +2 -2
  103. package/dist/cli-bundle/chunks/{chunk-Z2JQH2MG.js → chunk-MQ632QRB.js} +2 -2
  104. package/dist/cli-bundle/chunks/{chunk-5ZMZF53A.js → chunk-N7N3PUUP.js} +7 -7
  105. package/dist/cli-bundle/chunks/{chunk-3YJDIJIE.js → chunk-NPJLTZQZ.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-ASSVI7FP.js → chunk-NQTIOKHL.js} +8 -8
  107. package/dist/cli-bundle/chunks/{chunk-BFNFTHWQ.js → chunk-O67XP4FD.js} +3 -3
  108. package/dist/cli-bundle/chunks/{chunk-K2OKKYSO.js → chunk-OVYXSZOQ.js} +8 -8
  109. package/dist/cli-bundle/chunks/{chunk-FOJEBRDD.js → chunk-P7PDLLCE.js} +5 -5
  110. package/dist/cli-bundle/chunks/{chunk-XXN2B2MJ.js → chunk-PEACKWHL.js} +4 -4
  111. package/dist/cli-bundle/chunks/{chunk-HZZ3AC27.js → chunk-PFRGQZG2.js} +3 -3
  112. package/dist/cli-bundle/chunks/{chunk-Q3CFSOQZ.js → chunk-PMU2OJ3N.js} +4 -4
  113. package/dist/cli-bundle/chunks/{chunk-5STY7NVM.js → chunk-PUMTJMMF.js} +4 -4
  114. package/dist/cli-bundle/chunks/{chunk-K52C6YPA.js → chunk-QTJCMK2S.js} +5 -5
  115. package/dist/cli-bundle/chunks/{chunk-6FU5BVRB.js → chunk-RAE2SLNO.js} +4 -4
  116. package/dist/cli-bundle/chunks/{chunk-S7J3GEHL.js → chunk-RYA7QE7B.js} +10 -10
  117. package/dist/cli-bundle/chunks/{chunk-N4S7BV43.js → chunk-SL337EYZ.js} +379 -20
  118. package/dist/cli-bundle/chunks/chunk-SL337EYZ.js.map +7 -0
  119. package/dist/cli-bundle/chunks/{chunk-NSPSJWGL.js → chunk-SMKQFGDI.js} +4 -4
  120. package/dist/cli-bundle/chunks/{chunk-UFNFHCAC.js → chunk-SWQMU4AD.js} +2 -2
  121. package/dist/cli-bundle/chunks/{chunk-MFLLULHU.js → chunk-TB2CZJAQ.js} +5 -4
  122. package/dist/cli-bundle/chunks/chunk-TB2CZJAQ.js.map +1 -0
  123. package/dist/cli-bundle/chunks/{chunk-WVEMZZCR.js → chunk-TEKAGPZV.js} +3 -3
  124. package/dist/cli-bundle/chunks/{chunk-JH5XDDYS.js → chunk-TM5E2IED.js} +5 -5
  125. package/dist/cli-bundle/chunks/{chunk-C6XSTACC.js → chunk-TTRL5GE6.js} +3 -3
  126. package/dist/cli-bundle/chunks/{chunk-AEOFBBWO.js → chunk-UA2VI62P.js} +3 -3
  127. package/dist/cli-bundle/chunks/{chunk-6RR4XM5H.js → chunk-UYK26VRP.js} +3 -3
  128. package/dist/cli-bundle/chunks/{chunk-CXH7EMSB.js → chunk-VBDQTL3Z.js} +3 -3
  129. package/dist/cli-bundle/chunks/{chunk-NGBWEYNY.js → chunk-W2FXYQ6D.js} +5 -5
  130. package/dist/cli-bundle/chunks/{chunk-UURYLDDC.js → chunk-WZ7EPGUX.js} +5 -5
  131. package/dist/cli-bundle/chunks/{chunk-PPY3GXFK.js → chunk-XES6AVCK.js} +39 -68
  132. package/dist/cli-bundle/chunks/chunk-XES6AVCK.js.map +1 -0
  133. package/dist/cli-bundle/chunks/{chunk-QYZMZD4L.js → chunk-XVCB574W.js} +4 -4
  134. package/dist/cli-bundle/chunks/{chunk-F5DDGY6R.js → chunk-XWS3Z57Q.js} +3 -3
  135. package/dist/cli-bundle/chunks/{chunk-EP2CKDS7.js → chunk-XXJB4GLJ.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-NTOOEVJ4.js → chunk-Y5Q4FEE4.js} +47 -7
  137. package/dist/cli-bundle/chunks/chunk-Y5Q4FEE4.js.map +1 -0
  138. package/dist/cli-bundle/chunks/{chunk-CHSXGTWF.js → chunk-YA4B6P3L.js} +23 -15
  139. package/dist/cli-bundle/chunks/chunk-YA4B6P3L.js.map +7 -0
  140. package/dist/cli-bundle/chunks/{chunk-YHKXNGLA.js → chunk-Z3R2Z5KW.js} +145 -62
  141. package/dist/cli-bundle/chunks/chunk-Z3R2Z5KW.js.map +7 -0
  142. package/dist/cli-bundle/chunks/{chunk-5RJ4LFD3.js → chunk-Z5MFM54X.js} +5 -5
  143. package/dist/cli-bundle/chunks/{chunk-6WCXSC5V.js → chunk-ZGDJA6WI.js} +5 -5
  144. package/dist/cli-bundle/chunks/{chunk-TKWTJGD6.js → chunk-ZIU35KME.js} +5 -5
  145. package/dist/cli-bundle/chunks/{chunk-YUMNZS3X.js → chunk-ZQ2KEWE7.js} +3 -3
  146. package/dist/cli-bundle/chunks/close-2NVUCJXV.js +12 -0
  147. package/dist/cli-bundle/chunks/{close-TKTFRL7N.js → close-BZPS37KL.js} +5 -5
  148. package/dist/cli-bundle/chunks/{close-many-HEPL66EG.js → close-many-KKNCGLVR.js} +13 -13
  149. package/dist/cli-bundle/chunks/close-many-S5WKLWVO.js +22 -0
  150. package/dist/cli-bundle/chunks/{comments-PLFK5ZKK.js → comments-PV5XG342.js} +7 -7
  151. package/dist/cli-bundle/chunks/comments-XAM2ADHO.js +13 -0
  152. package/dist/cli-bundle/chunks/copy-OJ2YNJ7S.js +9 -0
  153. package/dist/cli-bundle/chunks/{copy-VH3L4MN2.js → copy-OZDYDQUG.js} +4 -4
  154. package/dist/cli-bundle/chunks/create-5O3QK3PX.js +25 -0
  155. package/dist/cli-bundle/chunks/{create-LD4SEUD6.js → create-WGFKEJAK.js} +9 -9
  156. package/dist/cli-bundle/chunks/{delete-ZNXUNCZR.js → delete-NTYXFL7A.js} +4 -4
  157. package/dist/cli-bundle/chunks/delete-V7FPW6JL.js +10 -0
  158. package/dist/cli-bundle/chunks/{deps-CVDY7FFK.js → deps-7WVENNH3.js} +4 -4
  159. package/dist/cli-bundle/chunks/{deps-SZXQHV73.js → deps-Z6RD6RWW.js} +4 -4
  160. package/dist/cli-bundle/chunks/{docs-DR74ITCD.js → docs-2NIRGHAN.js} +6 -6
  161. package/dist/cli-bundle/chunks/docs-SOY2CMH3.js +14 -0
  162. package/dist/cli-bundle/chunks/{files-QEFQ2M3H.js → files-4OH2I663.js} +6 -6
  163. package/dist/cli-bundle/chunks/{files-H5YCA74Z.js → files-5KNAFW67.js} +6 -6
  164. package/dist/cli-bundle/chunks/{focus-55TRYSNA.js → focus-CLNZWWKW.js} +5 -5
  165. package/dist/cli-bundle/chunks/focus-JUKXZN3J.js +10 -0
  166. package/dist/cli-bundle/chunks/{history-compact-JJZ4EFL3.js → history-compact-R3T3XPD4.js} +9 -9
  167. package/dist/cli-bundle/chunks/history-compact-WKAKPLFQ.js +21 -0
  168. package/dist/cli-bundle/chunks/{history-redact-TPPUT3A5.js → history-redact-CLJDCBNF.js} +7 -7
  169. package/dist/cli-bundle/chunks/history-redact-Y67UDKD3.js +17 -0
  170. package/dist/cli-bundle/chunks/history-repair-2WLXWQAM.js +19 -0
  171. package/dist/cli-bundle/chunks/{history-repair-J7PIZ6ZP.js → history-repair-LNA7V2VI.js} +9 -9
  172. package/dist/cli-bundle/chunks/{learnings-KB6BT4NR.js → learnings-2L72KBOE.js} +7 -7
  173. package/dist/cli-bundle/chunks/learnings-PNK7WUWO.js +13 -0
  174. package/dist/cli-bundle/chunks/{notes-ZTHXVOKM.js → notes-USDIABZV.js} +7 -7
  175. package/dist/cli-bundle/chunks/notes-X4SWEJSB.js +13 -0
  176. package/dist/cli-bundle/chunks/plan-JU454RMZ.js +24 -0
  177. package/dist/cli-bundle/chunks/{plan-LUR7C24X.js → plan-U4RWU56Z.js} +10 -10
  178. package/dist/cli-bundle/chunks/{profile-JRDMDGT5.js → profile-COBKZJUQ.js} +9 -9
  179. package/dist/cli-bundle/chunks/{profile-5F75MO5O.js → profile-RKIRCXH7.js} +9 -9
  180. package/dist/cli-bundle/chunks/{register-list-query-GZYRZLQZ.js → register-list-query-2VBANNFM.js} +19 -17
  181. package/dist/cli-bundle/chunks/{register-list-query-GZYRZLQZ.js.map → register-list-query-2VBANNFM.js.map} +1 -1
  182. package/dist/cli-bundle/chunks/{register-list-query-W2W7RQJJ.js → register-list-query-4AZEKWZ5.js} +18 -16
  183. package/dist/cli-bundle/chunks/{register-list-query-W2W7RQJJ.js.map → register-list-query-4AZEKWZ5.js.map} +2 -2
  184. package/dist/cli-bundle/chunks/{register-mutation-7DMOYDPC.js → register-mutation-JGXTDEIZ.js} +29 -29
  185. package/dist/cli-bundle/chunks/{register-mutation-5UDT3WL3.js → register-mutation-XVO4GGZI.js} +29 -29
  186. package/dist/cli-bundle/chunks/{register-operations-Y4E32W4D.js → register-operations-4EEFV5KJ.js} +26 -26
  187. package/dist/cli-bundle/chunks/{register-operations-NW43IUPE.js → register-operations-UV25Z4BN.js} +26 -26
  188. package/dist/cli-bundle/chunks/{register-setup-3GVJ7XPE.js → register-setup-MMXQQC5J.js} +27 -19
  189. package/dist/cli-bundle/chunks/register-setup-MMXQQC5J.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{register-setup-MPTTS52V.js → register-setup-NQE5MW63.js} +26 -18
  191. package/dist/cli-bundle/chunks/register-setup-NQE5MW63.js.map +7 -0
  192. package/dist/cli-bundle/chunks/restore-54HR2EYD.js +15 -0
  193. package/dist/cli-bundle/chunks/{restore-BTBEZ5CK.js → restore-BINCHJIY.js} +7 -7
  194. package/dist/cli-bundle/chunks/{schema-DGSTYYQB.js → schema-2JZNEQSG.js} +6 -6
  195. package/dist/cli-bundle/chunks/{schema-HAIBEE24.js → schema-VV3K5WZI.js} +6 -6
  196. package/dist/cli-bundle/chunks/{update-ZMYVXM77.js → update-DK3GAY5D.js} +12 -12
  197. package/dist/cli-bundle/chunks/update-OIMRKTX6.js +21 -0
  198. package/dist/cli-bundle/chunks/update-many-5KI6MW76.js +31 -0
  199. package/dist/cli-bundle/chunks/update-many-IOLDHIZT.js +35 -0
  200. package/dist/cli-bundle/main.js +16 -54
  201. package/dist/cli-bundle/main.js.map +3 -3
  202. package/dist/cli-bundle/sdk-runtime.js +52 -52
  203. package/dist/cli-bundle/sdk-testing.js +6 -6
  204. package/dist/cli-bundle/sdk.js +75 -55
  205. package/dist/cli-bundle/sdk.js.map +2 -2
  206. package/dist/core/extensions/extension-types.d.ts +1 -1
  207. package/dist/core/extensions/extension-types.js +3 -2
  208. package/dist/core/extensions/extension-types.js.map +1 -1
  209. package/dist/core/extensions/index.d.ts +1 -0
  210. package/dist/core/extensions/index.js +3 -2
  211. package/dist/core/extensions/index.js.map +1 -1
  212. package/dist/core/store/front-matter-cache.d.ts +8 -0
  213. package/dist/core/store/front-matter-cache.js +22 -9
  214. package/dist/core/store/front-matter-cache.js.map +1 -1
  215. package/dist/sdk/cli-contracts/commander-mutation-options.js +4 -4
  216. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  217. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  218. package/dist/sdk/cli-contracts/flag-contracts.js +7 -2
  219. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  220. package/dist/sdk/context-relevance.d.ts +166 -0
  221. package/dist/sdk/context-relevance.js +299 -0
  222. package/dist/sdk/context-relevance.js.map +1 -0
  223. package/dist/sdk/index.d.ts +1 -0
  224. package/dist/sdk/index.js +3 -2
  225. package/dist/sdk/index.js.map +1 -1
  226. package/docs/COMMANDS.md +7 -1
  227. package/docs/EXTENSIONS.md +3 -1
  228. package/docs/SDK.md +78 -0
  229. package/docs/TESTING.md +40 -1
  230. package/package.json +4 -2
  231. package/dist/cli-bundle/chunks/append-CDPAYYSB.js +0 -11
  232. package/dist/cli-bundle/chunks/chunk-2BVD4ZD2.js.map +0 -7
  233. package/dist/cli-bundle/chunks/chunk-2FKIIQMJ.js.map +0 -1
  234. package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js.map +0 -7
  235. package/dist/cli-bundle/chunks/chunk-CEX2DQXZ.js.map +0 -7
  236. package/dist/cli-bundle/chunks/chunk-CHSXGTWF.js.map +0 -7
  237. package/dist/cli-bundle/chunks/chunk-GZ365M6E.js.map +0 -1
  238. package/dist/cli-bundle/chunks/chunk-K4NMHZR3.js.map +0 -7
  239. package/dist/cli-bundle/chunks/chunk-MBLHA6LR.js.map +0 -7
  240. package/dist/cli-bundle/chunks/chunk-MCZK7LY6.js.map +0 -1
  241. package/dist/cli-bundle/chunks/chunk-MFLLULHU.js.map +0 -1
  242. package/dist/cli-bundle/chunks/chunk-N4S7BV43.js.map +0 -7
  243. package/dist/cli-bundle/chunks/chunk-NBJCIAVV.js.map +0 -1
  244. package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js.map +0 -1
  245. package/dist/cli-bundle/chunks/chunk-P5SUMCU5.js.map +0 -1
  246. package/dist/cli-bundle/chunks/chunk-PPY3GXFK.js.map +0 -1
  247. package/dist/cli-bundle/chunks/chunk-YHKXNGLA.js.map +0 -7
  248. package/dist/cli-bundle/chunks/close-5WY6QO5F.js +0 -12
  249. package/dist/cli-bundle/chunks/close-many-U2KLQ3NL.js +0 -22
  250. package/dist/cli-bundle/chunks/comments-ZNOD5PTV.js +0 -13
  251. package/dist/cli-bundle/chunks/copy-F7BUFY4J.js +0 -9
  252. package/dist/cli-bundle/chunks/create-KCQM6UYM.js +0 -25
  253. package/dist/cli-bundle/chunks/delete-6KQHZYIP.js +0 -10
  254. package/dist/cli-bundle/chunks/docs-WCVYY6I7.js +0 -14
  255. package/dist/cli-bundle/chunks/focus-N2QGNS5D.js +0 -10
  256. package/dist/cli-bundle/chunks/history-compact-GWQ4UOEI.js +0 -21
  257. package/dist/cli-bundle/chunks/history-redact-4GJOLXCM.js +0 -17
  258. package/dist/cli-bundle/chunks/history-repair-HVCVCGUF.js +0 -19
  259. package/dist/cli-bundle/chunks/learnings-YYY3U2Y7.js +0 -13
  260. package/dist/cli-bundle/chunks/notes-BGG7VL72.js +0 -13
  261. package/dist/cli-bundle/chunks/plan-B42KBMX7.js +0 -24
  262. package/dist/cli-bundle/chunks/register-setup-3GVJ7XPE.js.map +0 -1
  263. package/dist/cli-bundle/chunks/register-setup-MPTTS52V.js.map +0 -7
  264. package/dist/cli-bundle/chunks/restore-EX4UUZL6.js +0 -15
  265. package/dist/cli-bundle/chunks/update-76CRUMC7.js +0 -21
  266. package/dist/cli-bundle/chunks/update-many-QYQRGNPU.js +0 -31
  267. package/dist/cli-bundle/chunks/update-many-U4CEQWI4.js +0 -35
  268. /package/dist/cli-bundle/chunks/{append-CDPAYYSB.js.map → append-G7NGOQVU.js.map} +0 -0
  269. /package/dist/cli-bundle/chunks/{append-RSPHC423.js.map → append-SIECQAPH.js.map} +0 -0
  270. /package/dist/cli-bundle/chunks/{chunk-CGDUIPJL.js.map → chunk-22PW73KV.js.map} +0 -0
  271. /package/dist/cli-bundle/chunks/{chunk-GO2X6ZRB.js.map → chunk-35U3AVRY.js.map} +0 -0
  272. /package/dist/cli-bundle/chunks/{chunk-4I7KS5ES.js.map → chunk-3JFQRPOI.js.map} +0 -0
  273. /package/dist/cli-bundle/chunks/{chunk-NRMDT4OV.js.map → chunk-3THCOPYI.js.map} +0 -0
  274. /package/dist/cli-bundle/chunks/{chunk-D6J5673C.js.map → chunk-4BINCIRM.js.map} +0 -0
  275. /package/dist/cli-bundle/chunks/{chunk-26MFLA7K.js.map → chunk-4P2GYOM5.js.map} +0 -0
  276. /package/dist/cli-bundle/chunks/{chunk-LHDHS4Z6.js.map → chunk-4QE5HOJY.js.map} +0 -0
  277. /package/dist/cli-bundle/chunks/{chunk-5VAZHYVQ.js.map → chunk-56J3MPGE.js.map} +0 -0
  278. /package/dist/cli-bundle/chunks/{chunk-IINCZYM3.js.map → chunk-62ECRG6J.js.map} +0 -0
  279. /package/dist/cli-bundle/chunks/{chunk-VCGHRLJU.js.map → chunk-62KPBB2W.js.map} +0 -0
  280. /package/dist/cli-bundle/chunks/{chunk-3FUXM574.js.map → chunk-6MK6M35B.js.map} +0 -0
  281. /package/dist/cli-bundle/chunks/{chunk-TI7QSUFK.js.map → chunk-6PBZBIS6.js.map} +0 -0
  282. /package/dist/cli-bundle/chunks/{chunk-Y2736PT5.js.map → chunk-6WIP52LQ.js.map} +0 -0
  283. /package/dist/cli-bundle/chunks/{chunk-GLMJLBLR.js.map → chunk-75NAGPEL.js.map} +0 -0
  284. /package/dist/cli-bundle/chunks/{chunk-6TD5QGIB.js.map → chunk-77CWXIAC.js.map} +0 -0
  285. /package/dist/cli-bundle/chunks/{chunk-PAWPLIWW.js.map → chunk-7THLDY3D.js.map} +0 -0
  286. /package/dist/cli-bundle/chunks/{chunk-QJZM5WO5.js.map → chunk-7TRCAREE.js.map} +0 -0
  287. /package/dist/cli-bundle/chunks/{chunk-EEJKHF7M.js.map → chunk-7TRVVYPI.js.map} +0 -0
  288. /package/dist/cli-bundle/chunks/{chunk-ONADVBMD.js.map → chunk-A62N3BM3.js.map} +0 -0
  289. /package/dist/cli-bundle/chunks/{chunk-7QKSLAHB.js.map → chunk-AIWGQK6K.js.map} +0 -0
  290. /package/dist/cli-bundle/chunks/{chunk-WDNPNW22.js.map → chunk-AKCHJXJ4.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{chunk-KFL3XHMA.js.map → chunk-AYPXY3HF.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{chunk-RL24NAUX.js.map → chunk-B7FCPO65.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{chunk-4OCWJ2AP.js.map → chunk-BC7QBM2A.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{chunk-LD2NBQ5T.js.map → chunk-BST7GFIX.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{chunk-FJR2S7S4.js.map → chunk-CYBW4HK7.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{chunk-7UCBLJDF.js.map → chunk-DDF7UMVV.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{chunk-DQLP22K2.js.map → chunk-DLHFJZ2S.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{chunk-PCBZ2VJD.js.map → chunk-DMD2TENU.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{chunk-SCJPFQQT.js.map → chunk-DN67YDFH.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{chunk-7TBUV7XS.js.map → chunk-DNHILSD7.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-FFB3WITE.js.map → chunk-DT6NDP53.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{chunk-DBV5A7FT.js.map → chunk-DWGHHSDC.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{chunk-3V5C7PUH.js.map → chunk-DYUAQVDK.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{chunk-MCH6IKK7.js.map → chunk-E2RJZQNW.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{chunk-6ZKDMEVT.js.map → chunk-ECXJ7OHI.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{chunk-LG4N6YOK.js.map → chunk-ESXG6VFX.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{chunk-GSQVQINP.js.map → chunk-FBD2WUNS.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{chunk-YSRXFGNV.js.map → chunk-FSD7W7Y2.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{chunk-JYVPLGOW.js.map → chunk-FWL5XVYI.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-BPYVKTZE.js.map → chunk-FYMHD6VX.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-SIQGG335.js.map → chunk-GMNCW27N.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-3SHDAKMF.js.map → chunk-GPPWUJMR.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-W2VFNVSJ.js.map → chunk-H3HKQXQJ.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-UIHDZS6X.js.map → chunk-HFQ7QQZL.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-Z6RLSNUX.js.map → chunk-HLUB7G6J.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-NRYZ4QLH.js.map → chunk-HWUIK7YL.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-U72GF3I2.js.map → chunk-INAZHXOI.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-INOWVPUD.js.map → chunk-J3ELHLOJ.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-UH6VFRV6.js.map → chunk-J3Z2JMDV.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-KAJNWMBE.js.map → chunk-JFOBTM4D.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-J6AD3GWC.js.map → chunk-JNELC5UO.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-YPE5MFPJ.js.map → chunk-JQ5NB6O2.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-3UXIMY62.js.map → chunk-KFC6X4PI.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-C3YU3TXX.js.map → chunk-L2SWAZ3S.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-QLEH6FTQ.js.map → chunk-LVVZLEW5.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-RFHLRMLQ.js.map → chunk-M66PC7JI.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-63PZJCKO.js.map → chunk-M7DWRMNY.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-UEATYUZW.js.map → chunk-M7JYEBPT.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-Z2JQH2MG.js.map → chunk-MQ632QRB.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-5ZMZF53A.js.map → chunk-N7N3PUUP.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-3YJDIJIE.js.map → chunk-NPJLTZQZ.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-ASSVI7FP.js.map → chunk-NQTIOKHL.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-BFNFTHWQ.js.map → chunk-O67XP4FD.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-K2OKKYSO.js.map → chunk-OVYXSZOQ.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-FOJEBRDD.js.map → chunk-P7PDLLCE.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-XXN2B2MJ.js.map → chunk-PEACKWHL.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-HZZ3AC27.js.map → chunk-PFRGQZG2.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-Q3CFSOQZ.js.map → chunk-PMU2OJ3N.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-5STY7NVM.js.map → chunk-PUMTJMMF.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-K52C6YPA.js.map → chunk-QTJCMK2S.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-6FU5BVRB.js.map → chunk-RAE2SLNO.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-S7J3GEHL.js.map → chunk-RYA7QE7B.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-NSPSJWGL.js.map → chunk-SMKQFGDI.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-UFNFHCAC.js.map → chunk-SWQMU4AD.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-WVEMZZCR.js.map → chunk-TEKAGPZV.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-JH5XDDYS.js.map → chunk-TM5E2IED.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-C6XSTACC.js.map → chunk-TTRL5GE6.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-AEOFBBWO.js.map → chunk-UA2VI62P.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-6RR4XM5H.js.map → chunk-UYK26VRP.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-CXH7EMSB.js.map → chunk-VBDQTL3Z.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-NGBWEYNY.js.map → chunk-W2FXYQ6D.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-UURYLDDC.js.map → chunk-WZ7EPGUX.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-QYZMZD4L.js.map → chunk-XVCB574W.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-F5DDGY6R.js.map → chunk-XWS3Z57Q.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-EP2CKDS7.js.map → chunk-XXJB4GLJ.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-5RJ4LFD3.js.map → chunk-Z5MFM54X.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-6WCXSC5V.js.map → chunk-ZGDJA6WI.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-TKWTJGD6.js.map → chunk-ZIU35KME.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-YUMNZS3X.js.map → chunk-ZQ2KEWE7.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{close-5WY6QO5F.js.map → close-2NVUCJXV.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{close-TKTFRL7N.js.map → close-BZPS37KL.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{close-many-HEPL66EG.js.map → close-many-KKNCGLVR.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{close-many-U2KLQ3NL.js.map → close-many-S5WKLWVO.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{comments-PLFK5ZKK.js.map → comments-PV5XG342.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{comments-ZNOD5PTV.js.map → comments-XAM2ADHO.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{copy-F7BUFY4J.js.map → copy-OJ2YNJ7S.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{copy-VH3L4MN2.js.map → copy-OZDYDQUG.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{create-KCQM6UYM.js.map → create-5O3QK3PX.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{create-LD4SEUD6.js.map → create-WGFKEJAK.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{delete-ZNXUNCZR.js.map → delete-NTYXFL7A.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{delete-6KQHZYIP.js.map → delete-V7FPW6JL.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{deps-CVDY7FFK.js.map → deps-7WVENNH3.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{deps-SZXQHV73.js.map → deps-Z6RD6RWW.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{docs-DR74ITCD.js.map → docs-2NIRGHAN.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{docs-WCVYY6I7.js.map → docs-SOY2CMH3.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{files-QEFQ2M3H.js.map → files-4OH2I663.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{files-H5YCA74Z.js.map → files-5KNAFW67.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{focus-55TRYSNA.js.map → focus-CLNZWWKW.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{focus-N2QGNS5D.js.map → focus-JUKXZN3J.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{history-compact-JJZ4EFL3.js.map → history-compact-R3T3XPD4.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{history-compact-GWQ4UOEI.js.map → history-compact-WKAKPLFQ.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{history-redact-TPPUT3A5.js.map → history-redact-CLJDCBNF.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{history-redact-4GJOLXCM.js.map → history-redact-Y67UDKD3.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{history-repair-HVCVCGUF.js.map → history-repair-2WLXWQAM.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{history-repair-J7PIZ6ZP.js.map → history-repair-LNA7V2VI.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{learnings-KB6BT4NR.js.map → learnings-2L72KBOE.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{learnings-YYY3U2Y7.js.map → learnings-PNK7WUWO.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{notes-ZTHXVOKM.js.map → notes-USDIABZV.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{notes-BGG7VL72.js.map → notes-X4SWEJSB.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{plan-B42KBMX7.js.map → plan-JU454RMZ.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{plan-LUR7C24X.js.map → plan-U4RWU56Z.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{profile-JRDMDGT5.js.map → profile-COBKZJUQ.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{profile-5F75MO5O.js.map → profile-RKIRCXH7.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{register-mutation-7DMOYDPC.js.map → register-mutation-JGXTDEIZ.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{register-mutation-5UDT3WL3.js.map → register-mutation-XVO4GGZI.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{register-operations-Y4E32W4D.js.map → register-operations-4EEFV5KJ.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{register-operations-NW43IUPE.js.map → register-operations-UV25Z4BN.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{restore-EX4UUZL6.js.map → restore-54HR2EYD.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{restore-BTBEZ5CK.js.map → restore-BINCHJIY.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{schema-DGSTYYQB.js.map → schema-2JZNEQSG.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{schema-HAIBEE24.js.map → schema-VV3K5WZI.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{update-ZMYVXM77.js.map → update-DK3GAY5D.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{update-76CRUMC7.js.map → update-OIMRKTX6.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{update-many-QYQRGNPU.js.map → update-many-5KI6MW76.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{update-many-U4CEQWI4.js.map → update-many-IOLDHIZT.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../../cli/bootstrap-args.ts", "../../../../../../../../cli/commands/extension/shared.ts"],
4
- "sourcesContent": ["/**\n * @module cli/bootstrap-args\n *\n * Provides CLI runtime support for Bootstrap Args.\n */\nimport { resolveSubcommandFlagContractsForCommand, type CliFlagContract } from \"../sdk/cli-contracts.js\";\nimport { levenshteinDistanceWithinLimit } from \"../core/shared/levenshtein.js\";\n\nfunction parseBootstrapPathToken(\n token: string,\n next: string | undefined,\n): { consumed: number; pathValue?: string; preferred: boolean } | null {\n if (token === \"--path\" || token === \"--pm-path\") {\n if (typeof next === \"string\" && next.length > 0) {\n return {\n consumed: 2,\n pathValue: next,\n preferred: token === \"--pm-path\",\n };\n }\n return {\n consumed: 1,\n preferred: token === \"--pm-path\",\n };\n }\n\n const inlinePrefix = token.startsWith(\"--path=\")\n ? \"--path=\"\n : token.startsWith(\"--pm-path=\")\n ? \"--pm-path=\"\n : undefined;\n if (!inlinePrefix) {\n return null;\n }\n\n const value = token.slice(inlinePrefix.length);\n if (value.length > 0) {\n return {\n consumed: 1,\n pathValue: value,\n preferred: inlinePrefix === \"--pm-path=\",\n };\n }\n return {\n consumed: 1,\n preferred: inlinePrefix === \"--pm-path=\",\n };\n}\n\n/**\n * Documents the bootstrap global options payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapGlobalOptions {\n path?: string;\n noExtensions: boolean;\n noPager: boolean;\n json: boolean;\n quiet: boolean;\n}\n\n/**\n * Implements parse bootstrap global options for the public runtime surface of this module.\n */\nexport function parseBootstrapGlobalOptions(argv: string[]): BootstrapGlobalOptions {\n let legacyPathValue: string | undefined;\n let pmPathValue: string | undefined;\n let noExtensions = false;\n let noPager = false;\n let json = false;\n let quiet = false;\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n break;\n }\n if (token === \"--no-extensions\") {\n noExtensions = true;\n index += 1;\n continue;\n }\n if (token === \"--no-pager\") {\n noPager = true;\n index += 1;\n continue;\n }\n if (token === \"--json\") {\n json = true;\n index += 1;\n continue;\n }\n if (token === \"--quiet\") {\n quiet = true;\n index += 1;\n continue;\n }\n const parsedPath = parseBootstrapPathToken(token, argv[index + 1]);\n if (parsedPath) {\n if (parsedPath.pathValue !== undefined) {\n if (parsedPath.preferred) {\n pmPathValue = parsedPath.pathValue;\n } else {\n legacyPathValue = parsedPath.pathValue;\n }\n }\n index += parsedPath.consumed;\n continue;\n }\n index += 1;\n }\n return {\n path: pmPathValue ?? legacyPathValue,\n noExtensions,\n noPager,\n json,\n quiet,\n };\n}\n\n/**\n * Implements strip global bootstrap tokens for the public runtime surface of this module.\n */\nexport function stripGlobalBootstrapTokens(argv: string[]): string[] {\n const remaining: string[] = [];\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n break;\n }\n if (\n token === \"--json\" ||\n token === \"--quiet\" ||\n token === \"--no-extensions\" ||\n token === \"--no-pager\" ||\n token === \"--profile\" ||\n token === \"--id-only\" ||\n token === \"--explain\"\n ) {\n index += 1;\n continue;\n }\n if (token === \"--path\" || token === \"--pm-path\") {\n index += 2;\n continue;\n }\n if (token.startsWith(\"--path=\") || token.startsWith(\"--pm-path=\")) {\n index += 1;\n continue;\n }\n remaining.push(token);\n index += 1;\n }\n return remaining;\n}\n\n/**\n * Documents the bootstrap help request payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapHelpRequest {\n requested: boolean;\n commandPathTokens: string[];\n}\n\n/**\n * Implements parse bootstrap help request for the public runtime surface of this module.\n */\nexport function parseBootstrapHelpRequest(argv: string[]): BootstrapHelpRequest {\n const stripped = stripGlobalBootstrapTokens(argv);\n const first = stripped[0]?.trim().toLowerCase();\n if (first === \"help\") {\n const commandPathTokens: string[] = [];\n for (let index = 1; index < stripped.length; index += 1) {\n const token = stripped[index];\n if (token.startsWith(\"-\")) {\n break;\n }\n commandPathTokens.push(token.trim().toLowerCase());\n }\n return {\n requested: true,\n commandPathTokens,\n };\n }\n\n const helpFlagIndex = stripped.findIndex((token) => token === \"--help\" || token === \"-h\");\n if (helpFlagIndex < 0) {\n return {\n requested: false,\n commandPathTokens: [],\n };\n }\n\n const commandPathTokens: string[] = [];\n for (const token of stripped) {\n if (token.startsWith(\"-\")) {\n break;\n }\n commandPathTokens.push(token.trim().toLowerCase());\n }\n return {\n requested: true,\n commandPathTokens,\n };\n}\n\n/**\n * Index of the command token in argv — the first non-flag token, skipping the\n * value-consuming/global bootstrap flags. Returns undefined when there is none\n * (bare invocation, only global flags, or a leading `--`). Single source of truth\n * for command-position scanning shared by {@link parseBootstrapCommandName} and the\n * command-alias rewrite so their precedence rules can never drift apart.\n */\nfunction findCommandTokenIndex(argv: string[]): number | undefined {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === \"--\") {\n return undefined;\n }\n if (token === \"--path\" || token === \"--pm-path\") {\n index += 1;\n continue;\n }\n if (\n token.startsWith(\"--path=\") ||\n token.startsWith(\"--pm-path=\") ||\n token === \"--json\" ||\n token === \"--quiet\" ||\n token === \"--no-extensions\" ||\n token === \"--no-pager\" ||\n token === \"--profile\" ||\n token === \"--id-only\" ||\n token === \"--explain\"\n ) {\n continue;\n }\n if (token.startsWith(\"-\")) {\n continue;\n }\n return index;\n }\n return undefined;\n}\n\n/**\n * Implements parse bootstrap command name for the public runtime surface of this module.\n */\nexport function parseBootstrapCommandName(argv: string[]): string | undefined {\n const index = findCommandTokenIndex(argv);\n return index === undefined ? undefined : argv[index].trim().toLowerCase();\n}\n\nfunction shouldDisablePagerForInvocation(argv: string[], bootstrapGlobal: BootstrapGlobalOptions): boolean {\n if (bootstrapGlobal.noPager) {\n return true;\n }\n if (process.stdout.isTTY === true) {\n return false;\n }\n const helpRequest = parseBootstrapHelpRequest(argv);\n return helpRequest.requested;\n}\n\n/**\n * Implements apply bootstrap pager policy for the public runtime surface of this module.\n */\nexport function applyBootstrapPagerPolicy(argv: string[]): void {\n const bootstrapGlobal = parseBootstrapGlobalOptions(argv);\n if (!shouldDisablePagerForInvocation(argv, bootstrapGlobal)) {\n return;\n }\n process.env.PAGER = \"cat\";\n process.env.MANPAGER = \"cat\";\n process.env.GIT_PAGER = \"cat\";\n if (typeof process.env.LESS !== \"string\" || process.env.LESS.trim().length === 0) {\n process.env.LESS = \"FRX\";\n }\n}\n\ntype ExtensionSubcommandAction =\n | \"init\"\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"doctor\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\";\n\nconst EXTENSION_ACTION_SYNTAX_TOKENS = new Set<ExtensionSubcommandAction>([\n \"install\",\n \"uninstall\",\n \"explore\",\n \"manage\",\n \"doctor\",\n \"adopt\",\n \"adopt-all\",\n \"activate\",\n \"deactivate\",\n]);\n\n/**\n * Implements normalize legacy extension action syntax for the public runtime surface of this module.\n */\nexport function normalizeLegacyExtensionActionSyntax(argv: string[]): string[] {\n const extensionIndex = argv.findIndex((token) => token === \"extension\");\n if (extensionIndex < 0) {\n return [...argv];\n }\n const actionToken = argv[extensionIndex + 1];\n if (!actionToken || actionToken.startsWith(\"-\")) {\n return [...argv];\n }\n if (!EXTENSION_ACTION_SYNTAX_TOKENS.has(actionToken as ExtensionSubcommandAction)) {\n return [...argv];\n }\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n return [...argv];\n }\n const forcedActionFlag = `--${actionToken}`;\n if (argv.includes(forcedActionFlag)) {\n return [...argv];\n }\n return [...argv.slice(0, extensionIndex + 1), forcedActionFlag, ...argv.slice(extensionIndex + 2)];\n}\n\ntype BootstrapNormalizationReason =\n | \"legacy_extension_action\"\n | \"command_alias\"\n | \"flag_alias\"\n | \"flag_typo\"\n | \"bare_key_value\"\n | \"list_merge\";\ntype BootstrapNormalizationConfidence = \"high\" | \"medium\";\n\n/**\n * Executable command aliases: a leading command token here is rewritten to its\n * canonical command BEFORE commander parses, so the alias actually runs instead of\n * merely being suggested. These are the highest-frequency aliases real agents type\n * (telemetry: `pm show <id>` alone is the single most common unknown-command) and\n * each target takes the same positional/flags as the alias (with `--comment`/\n * `--note`/`--learning` flag-aliased to `--add` on the target command). Keeping this\n * in one place means the alias is consistent across registration, commander dispatch,\n * telemetry, and error handling — all of which read the normalized argv.\n */\nexport const EXECUTABLE_COMMAND_ALIASES: Readonly<Record<string, string>> = {\n show: \"get\",\n view: \"get\",\n comment: \"comments\",\n note: \"notes\",\n learning: \"learnings\",\n};\n\n/**\n * Rewrite a leading command-alias token (e.g. `show` -> `get`) in place. Only the\n * command position is considered — the same token appearing later as an argument\n * (`pm get show`) is left untouched — and only when it is not preceded by `--` or a\n * value-consuming global flag, mirroring {@link parseBootstrapCommandName}.\n */\nfunction rewriteCommandAlias(argv: string[], trace: BootstrapNormalizationEvent[]): string[] {\n const index = findCommandTokenIndex(argv);\n if (index === undefined) {\n return argv;\n }\n const token = argv[index];\n const canonical = EXECUTABLE_COMMAND_ALIASES[token.trim().toLowerCase()];\n if (!canonical) {\n return argv;\n }\n const rewritten = [...argv];\n rewritten[index] = canonical;\n trace.push({ from: token, to: [canonical], reason: \"command_alias\", confidence: \"high\" });\n return rewritten;\n}\n\n/**\n * Documents the bootstrap normalization event payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapNormalizationEvent {\n from: string;\n to: string[];\n reason: BootstrapNormalizationReason;\n confidence: BootstrapNormalizationConfidence;\n}\n\n/**\n * Documents the bootstrap invocation normalization result payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapInvocationNormalizationResult {\n argv: string[];\n commandName: string | undefined;\n trace: BootstrapNormalizationEvent[];\n}\n\ninterface FlagLookup {\n canonicalByNormalized: Map<string, string | null>;\n canonicalByCompact: Map<string, string | null>;\n canonicalComparables: Array<{ canonicalFlag: string; comparable: string }>;\n listCanonicalFlags: Set<string>;\n}\n\nfunction normalizeFlagKeyToken(raw: string): string {\n const withoutPrefix = raw.replace(/^--?/, \"\");\n return withoutPrefix\n .replace(/_/g, \"-\")\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .toLowerCase();\n}\n\nfunction toComparableFlagKey(raw: string): string {\n return normalizeFlagKeyToken(raw).replace(/-/g, \"\");\n}\n\nfunction markUnambiguousFlag(\n map: Map<string, string | null>,\n key: string,\n canonicalFlag: string,\n): void {\n const existing = map.get(key);\n if (existing === undefined) {\n map.set(key, canonicalFlag);\n return;\n }\n if (existing !== canonicalFlag) {\n map.set(key, null);\n }\n}\n\nfunction collectLongFlagCandidates(contract: CliFlagContract): string[] {\n const candidates: string[] = [];\n const pushLongFlag = (value: string | undefined): void => {\n if (typeof value !== \"string\") {\n return;\n }\n if (!value.startsWith(\"--\")) {\n return;\n }\n candidates.push(value);\n };\n pushLongFlag(contract.flag);\n for (const alias of contract.aliases ?? []) {\n pushLongFlag(alias);\n }\n return candidates;\n}\n\nfunction buildFlagLookup(\n commandName: string | undefined,\n contractsOverride?: CliFlagContract[],\n): FlagLookup {\n const contracts = contractsOverride ?? resolveSubcommandFlagContractsForCommand(commandName);\n const canonicalByNormalized = new Map<string, string | null>();\n const canonicalByCompact = new Map<string, string | null>();\n const canonicalComparablesMap = new Map<string, string>();\n const listCanonicalFlags = new Set<string>();\n for (const contract of contracts) {\n const longCandidates = collectLongFlagCandidates(contract);\n if (longCandidates.length === 0) {\n continue;\n }\n const canonicalFlag = `--${normalizeFlagKeyToken(longCandidates[0])}`;\n for (const candidate of longCandidates) {\n markUnambiguousFlag(canonicalByNormalized, normalizeFlagKeyToken(candidate), canonicalFlag);\n markUnambiguousFlag(canonicalByCompact, toComparableFlagKey(candidate), canonicalFlag);\n }\n const comparable = toComparableFlagKey(canonicalFlag);\n if (!canonicalComparablesMap.has(canonicalFlag)) {\n canonicalComparablesMap.set(canonicalFlag, comparable);\n }\n if (contract.list === true) {\n listCanonicalFlags.add(canonicalFlag);\n }\n }\n return {\n canonicalByNormalized,\n canonicalByCompact,\n canonicalComparables: [...canonicalComparablesMap.entries()].map(([canonicalFlag, comparable]) => ({\n canonicalFlag,\n comparable,\n })),\n listCanonicalFlags,\n };\n}\n\nfunction resolveCanonicalFlag(\n rawKey: string,\n lookup: FlagLookup,\n): { flag: string; reason: \"flag_alias\" | \"flag_typo\"; confidence: BootstrapNormalizationConfidence } | null {\n const normalizedKey = normalizeFlagKeyToken(rawKey);\n const direct = lookup.canonicalByNormalized.get(normalizedKey);\n if (typeof direct === \"string\") {\n return {\n flag: direct,\n reason: \"flag_alias\",\n confidence: \"high\",\n };\n }\n const comparableKey = normalizedKey.replace(/-/g, \"\");\n const compactMatch = lookup.canonicalByCompact.get(comparableKey);\n if (typeof compactMatch === \"string\") {\n return {\n flag: compactMatch,\n reason: \"flag_alias\",\n confidence: \"high\",\n };\n }\n const maxDistance = comparableKey.length >= 8 ? 2 : 1;\n let bestDistance = Number.POSITIVE_INFINITY;\n let bestFlag: string | undefined;\n let tied = false;\n for (const candidate of lookup.canonicalComparables) {\n const distance = levenshteinDistanceWithinLimit(comparableKey, candidate.comparable, maxDistance);\n if (distance === null) {\n continue;\n }\n if (distance < bestDistance) {\n bestDistance = distance;\n bestFlag = candidate.canonicalFlag;\n tied = false;\n continue;\n }\n if (distance === bestDistance && bestFlag !== candidate.canonicalFlag) {\n tied = true;\n }\n }\n if (!bestFlag || tied || !Number.isFinite(bestDistance) || bestDistance <= 0) {\n return null;\n }\n return {\n flag: bestFlag,\n reason: \"flag_typo\",\n confidence: bestDistance >= 2 ? \"medium\" : \"high\",\n };\n}\n\n/**\n * Implements list alias plural keys for the public runtime surface of this module.\n */\nexport function listAliasPluralKeys(normalizedKey: string): string[] {\n const candidates = [`${normalizedKey}s`];\n if (normalizedKey.endsWith(\"y\") && normalizedKey.length > 1) {\n candidates.push(`${normalizedKey.slice(0, -1)}ies`);\n }\n return candidates;\n}\n\nfunction parseBareKeyValueToken(token: string): { key: string; value: string } | null {\n if (token.includes(\"://\")) {\n return null;\n }\n const match = token.match(/^([A-Za-z][A-Za-z0-9_-]{1,63})([:=])(.*)$/);\n if (!match) {\n return null;\n }\n const key = match[1];\n const value = match[3];\n if (value.length === 0) {\n return null;\n }\n return {\n key,\n value,\n };\n}\n\nfunction normalizeLongOptionToken(\n token: string,\n lookup: FlagLookup,\n): { tokens: string[]; event?: BootstrapNormalizationEvent } {\n if (!token.startsWith(\"--\")) {\n return { tokens: [token] };\n }\n const equalsIndex = token.indexOf(\"=\");\n const key = equalsIndex >= 0 ? token.slice(0, equalsIndex) : token;\n const inlineValue = equalsIndex >= 0 ? token.slice(equalsIndex + 1) : undefined;\n const resolution = resolveCanonicalFlag(key, lookup);\n if (!resolution) {\n return { tokens: [token] };\n }\n const normalizedToken = inlineValue === undefined ? resolution.flag : `${resolution.flag}=${inlineValue}`;\n if (normalizedToken === token) {\n return { tokens: [token] };\n }\n return {\n tokens: [normalizedToken],\n event: {\n from: token,\n to: [normalizedToken],\n reason: resolution.reason,\n confidence: resolution.confidence,\n },\n };\n}\n\n// Global option flags whose value may legitimately begin with \"--\" (commander\n// accepts such values). Their value token must not be reinterpreted as a list\n// flag during coalescing. `--pm-path <dir>` and its legacy `--path <dir>`\n// alias are the documented cases; other globals\n// (--json/--quiet/--no-extensions/--no-pager/--profile) are boolean.\nconst GLOBAL_VALUE_CONSUMING_FLAGS = new Set<string>([\"--pm-path\", \"--path\"]);\n\nfunction splitCanonicalListToken(token: string): { flag: string; inlineValue?: string } | null {\n if (!token.startsWith(\"--\")) {\n return null;\n }\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex < 0) {\n return { flag: token };\n }\n return {\n flag: token.slice(0, equalsIndex),\n inlineValue: token.slice(equalsIndex + 1),\n };\n}\n\ninterface ListFlagSlot {\n outputIndex: number;\n originalTokens: string[];\n values: string[];\n occurrences: number;\n}\n\ninterface ListFlagOccurrence {\n originalTokens: string[];\n value: string | undefined;\n consumed: number;\n}\n\ninterface ValuedListFlagOccurrence {\n originalTokens: string[];\n value: string;\n}\n\nfunction copyValueConsumingFlag(argv: string[], index: number, result: (string | null)[]): number {\n result.push(argv[index]);\n const next = argv[index + 1];\n if (typeof next === \"string\" && next !== \"--\") {\n result.push(next);\n return index + 2;\n }\n return index + 1;\n}\n\nfunction readListFlagOccurrence(\n argv: string[],\n index: number,\n parsed: { flag: string; inlineValue?: string },\n multiValueListFlags: Set<string>,\n): ListFlagOccurrence {\n if (parsed.inlineValue !== undefined) {\n return {\n originalTokens: [argv[index]],\n value: parsed.inlineValue,\n consumed: 1,\n };\n }\n\n const values: string[] = [];\n let valueIndex = index + 1;\n while (\n valueIndex < argv.length &&\n argv[valueIndex] !== \"--\" &&\n !argv[valueIndex].startsWith(\"-\") &&\n (values.length === 0 || multiValueListFlags.has(parsed.flag))\n ) {\n values.push(argv[valueIndex]);\n valueIndex += 1;\n }\n\n const consumed = values.length === 0 ? 1 : 1 + values.length;\n return {\n originalTokens: argv.slice(index, index + consumed),\n value: values.length === 0 ? undefined : values.join(\",\"),\n consumed,\n };\n}\n\nfunction recordListFlagOccurrence(\n slots: Map<string, ListFlagSlot>,\n result: (string | null)[],\n flag: string,\n occurrence: ValuedListFlagOccurrence,\n): void {\n const existing = slots.get(flag);\n if (existing) {\n existing.values.push(occurrence.value);\n existing.occurrences += 1;\n return;\n }\n\n slots.set(flag, {\n outputIndex: result.length,\n originalTokens: occurrence.originalTokens,\n values: [occurrence.value],\n occurrences: 1,\n });\n // Reserve the anchor position; finalized after the walk so we know the full\n // merged value or can restore the original token form for single uses.\n result.push(null);\n}\n\nfunction buildListFlagCoalescingSplices(\n slots: Map<string, ListFlagSlot>,\n multiValueListFlags: Set<string>,\n): {\n events: BootstrapNormalizationEvent[];\n splices: Array<{ outputIndex: number; tokens: string[] }>;\n} {\n const events: BootstrapNormalizationEvent[] = [];\n const splices: Array<{ outputIndex: number; tokens: string[] }> = [];\n for (const [flag, slot] of slots) {\n const shouldMerge = slot.occurrences >= 2 || (multiValueListFlags.has(flag) && slot.originalTokens.length > 2);\n if (!shouldMerge) {\n splices.push({ outputIndex: slot.outputIndex, tokens: slot.originalTokens });\n continue;\n }\n const mergedToken = `${flag}=${slot.values.join(\",\")}`;\n splices.push({ outputIndex: slot.outputIndex, tokens: [mergedToken] });\n events.push({\n from: `${flag} (x${slot.occurrences})`,\n to: [mergedToken],\n reason: \"list_merge\",\n confidence: \"high\",\n });\n }\n return { events, splices };\n}\n\nfunction applyListFlagSplices(result: (string | null)[], splices: Array<{ outputIndex: number; tokens: string[] }>): void {\n splices.sort((a, b) => b.outputIndex - a.outputIndex);\n for (const splice of splices) {\n result.splice(splice.outputIndex, 1, ...splice.tokens);\n }\n}\n\n/**\n * Coalesce repeated occurrences of comma-separated list flags into a single\n * `--flag=v1,v2,v3` token anchored at the FIRST occurrence. Without this,\n * Commander treats these flags as scalars and silently keeps only the last\n * value (data loss). Both `--flag value` and `--flag=value` forms are merged;\n * a value-less occurrence is preserved untouched, and a `--` terminator stops\n * coalescing (remainder is passed through verbatim).\n *\n * `valueConsumingFlags` lists option flags (e.g. global `--path`) whose value\n * may itself begin with `--`. Their value token is emitted verbatim so a\n * list-flag-looking value (`--path --tags`) is never reinterpreted as a flag\n * nor allowed to swallow the following command/positional token.\n */\nexport function coalesceRepeatedListFlags(\n argv: string[],\n listFlags: Set<string>,\n valueConsumingFlags: Set<string> = new Set(),\n multiValueListFlags: Set<string> = new Set(),\n): { argv: string[]; events: BootstrapNormalizationEvent[] } {\n if (listFlags.size === 0) {\n return { argv: [...argv], events: [] };\n }\n\n const result: (string | null)[] = [];\n const slots = new Map<string, ListFlagSlot>();\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n result.push(...argv.slice(index));\n break;\n }\n // A value-consuming option in space form owns the next token as its value,\n // even when that value begins with \"--\". Emit both verbatim so the value is\n // never misread as a list-flag occurrence.\n if (valueConsumingFlags.has(token)) {\n index = copyValueConsumingFlag(argv, index, result);\n continue;\n }\n const parsed = splitCanonicalListToken(token);\n if (!parsed || !listFlags.has(parsed.flag)) {\n result.push(token);\n index += 1;\n continue;\n }\n\n const occurrence = readListFlagOccurrence(argv, index, parsed, multiValueListFlags);\n if (occurrence.value === undefined) {\n // Value-less occurrence: leave untouched, do not coalesce.\n result.push(token);\n index += occurrence.consumed;\n continue;\n }\n\n recordListFlagOccurrence(slots, result, parsed.flag, {\n originalTokens: occurrence.originalTokens,\n value: occurrence.value,\n });\n index += occurrence.consumed;\n }\n\n // Apply anchor splices from the end so earlier indices stay valid when a\n // single-occurrence anchor expands back into two tokens.\n const { events, splices } = buildListFlagCoalescingSplices(slots, multiValueListFlags);\n applyListFlagSplices(result, splices);\n\n return { argv: result as string[], events };\n}\n\n/**\n * Linked-test entry keys accepted in the two-token form `pm test <id> --add command\n * \"npm test -- parser\"` (GH-191). Only entry-identity keys are merged: `command`/`cmd`\n * name the shell command and `path` names the test file, so a single key=value entry is\n * meaningful for them. Other structured keys (scope, env_set, assertions, ...) cannot\n * form a valid standalone entry and are left for the normal parser to reject. `--remove`\n * matches existing entries by `command=`/`path=` only, so `cmd` is excluded there.\n * Key names mirror STRUCTURED_LINKED_TEST_KEYS in src/cli/commands/linked-test-entry.ts.\n */\nconst LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG: ReadonlyMap<string, ReadonlySet<string>> = new Map([\n [\"--add\", new Set([\"command\", \"cmd\", \"path\"])],\n [\"--remove\", new Set([\"command\", \"path\"])],\n]);\n\n/**\n * Sandbox-safe linked-test commands legitimately start with env assignments\n * (`PM_PATH=... PM_GLOBAL_PATH=... vitest run -- parser`), which look like bare\n * key=value settings tokens. When the two preceding tokens are a linked-test\n * flag plus a bare two-token key (`--add command <value>`), the value must be\n * left intact for mergeLinkedTestTwoTokenEntries instead of being rewritten\n * into a canonical flag (e.g. PM_PATH= -> --pm-path), which would silently\n * corrupt the command into `--add command --pm-path ...`.\n */\nfunction isLinkedTestTwoTokenValuePosition(commandName: string | undefined, emittedTokens: readonly string[]): boolean {\n if (commandName !== \"test\" || emittedTokens.length < 2) {\n return false;\n }\n const key = emittedTokens[emittedTokens.length - 1];\n const flag = emittedTokens[emittedTokens.length - 2];\n const keys = LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG.get(flag);\n return keys !== undefined && keys.has(key);\n}\n\n/**\n * Accept the two-token linked-test form `pm test <id> --add command \"npm test -- parser\"`\n * by merging the bare key token and its single quoted value into the documented\n * `--add command=...` shape. Without this merge Commander binds the bare key as the\n * option value and treats the quoted command as an excess positional, failing with\n * \"too many arguments\" (GH-191). The merge only fires when EXACTLY ONE non-flag token\n * follows the bare key, i.e. the value was quoted into one shell token — an unquoted\n * multi-token value stays ambiguous (it may swallow the item id), still fails fast, and\n * is routed to targeted quoting guidance by the commander error classifier instead.\n */\nexport function mergeLinkedTestTwoTokenEntries(\n argv: string[],\n commandName: string | undefined,\n trace: BootstrapNormalizationEvent[],\n): string[] {\n if (commandName !== \"test\") {\n return argv;\n }\n const result: string[] = [];\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n result.push(...argv.slice(index));\n return result;\n }\n const keys = LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG.get(token);\n const key = keys ? argv[index + 1] : undefined;\n if (!keys || typeof key !== \"string\" || !keys.has(key)) {\n result.push(token);\n index += 1;\n continue;\n }\n let runEnd = index + 2;\n while (runEnd < argv.length && !argv[runEnd].startsWith(\"-\")) {\n runEnd += 1;\n }\n if (runEnd - (index + 2) !== 1) {\n result.push(token);\n index += 1;\n continue;\n }\n const value = argv[index + 2];\n const mergedValue = `${key}=${value}`;\n result.push(token, mergedValue);\n trace.push({\n from: `${token} ${key} ${value}`,\n to: [token, mergedValue],\n reason: \"bare_key_value\",\n confidence: \"high\",\n });\n index += 3;\n }\n return result;\n}\n\n/**\n * Implements normalize bootstrap invocation for the public runtime surface of this module.\n */\nexport function normalizeBootstrapInvocation(argv: string[]): BootstrapInvocationNormalizationResult {\n const trace: BootstrapNormalizationEvent[] = [];\n const legacyNormalized = normalizeLegacyExtensionActionSyntax(argv);\n if (legacyNormalized.length !== argv.length || legacyNormalized.some((token, index) => token !== argv[index])) {\n trace.push({\n from: argv.join(\" \"),\n to: [...legacyNormalized],\n reason: \"legacy_extension_action\",\n confidence: \"high\",\n });\n }\n const aliasNormalized = rewriteCommandAlias(legacyNormalized, trace);\n const commandName = parseBootstrapCommandName(aliasNormalized);\n const commandPathName = parseBootstrapCommandPathName(aliasNormalized);\n const lookup = buildFlagLookup(commandPathName ?? commandName);\n const normalizedArgv: string[] = [];\n for (let index = 0; index < aliasNormalized.length; index += 1) {\n const token = aliasNormalized[index];\n if (token === \"--\") {\n normalizedArgv.push(...aliasNormalized.slice(index));\n break;\n }\n const previous = normalizedArgv[normalizedArgv.length - 1];\n if (token.startsWith(\"--\")) {\n const normalizedToken = normalizeLongOptionToken(token, lookup);\n normalizedArgv.push(...normalizedToken.tokens);\n if (normalizedToken.event) {\n trace.push(normalizedToken.event);\n }\n continue;\n }\n const bareKeyValue = parseBareKeyValueToken(token);\n if (\n bareKeyValue &&\n !(typeof previous === \"string\" && previous.startsWith(\"-\")) &&\n !isLinkedTestTwoTokenValuePosition(commandName, normalizedArgv)\n ) {\n const resolution = resolveCanonicalFlag(bareKeyValue.key, lookup);\n if (resolution) {\n const replacement = [resolution.flag, bareKeyValue.value];\n normalizedArgv.push(...replacement);\n trace.push({\n from: token,\n to: replacement,\n reason: \"bare_key_value\",\n confidence: resolution.confidence,\n });\n continue;\n }\n }\n normalizedArgv.push(token);\n }\n const linkedTestNormalized = mergeLinkedTestTwoTokenEntries(normalizedArgv, commandName, trace);\n const coalesced = coalesceRepeatedListFlags(\n linkedTestNormalized,\n lookup.listCanonicalFlags,\n GLOBAL_VALUE_CONSUMING_FLAGS,\n commandName === \"create\" ? new Set([\"--tags\"]) : new Set(),\n );\n for (const event of coalesced.events) {\n trace.push(event);\n }\n return {\n argv: coalesced.argv,\n commandName,\n trace,\n };\n}\n\nfunction parseBootstrapCommandPathName(argv: string[]): string | undefined {\n const stripped = stripGlobalBootstrapTokens(argv);\n const first = stripped[0]?.trim().toLowerCase();\n const second = stripped[1]?.trim().toLowerCase();\n if (\n (first === \"extension\" || first === \"package\" || first === \"packages\") &&\n typeof second === \"string\" &&\n second.length > 0 &&\n !second.startsWith(\"-\")\n ) {\n return `${first} ${second}`;\n }\n return first;\n}\n\n/**\n * Implements parse bootstrap type value for the public runtime surface of this module.\n */\nexport function parseBootstrapTypeValue(argv: string[]): string | undefined {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === \"--type\") {\n const candidate = argv[index + 1];\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\n return candidate.trim();\n }\n continue;\n }\n if (token.startsWith(\"--type=\")) {\n const candidate = token.slice(\"--type=\".length).trim();\n if (candidate.length > 0) {\n return candidate;\n }\n }\n }\n return undefined;\n}\n\nexport const _testOnly = {\n buildFlagLookup,\n collectLongFlagCandidates,\n markUnambiguousFlag,\n normalizeLongOptionToken,\n resolveCanonicalFlag,\n};\n", "/**\n * @module cli/commands/extension/shared\n *\n * Implements extension package-management support for Shared.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists } from \"../../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../../core/fs/path-utils.js\";\nimport { EXIT_CODE } from \"../../../core/shared/constants.js\";\nimport { PmCliError } from \"../../../core/shared/errors.js\";\nimport { DEFAULT_EXTENSION_PRIORITY, isCanonicalPathWithinDirectory, type ExtensionManifest } from \"../../../core/extensions/loader.js\";\n\nexport { DEFAULT_EXTENSION_PRIORITY, isCanonicalPathWithinDirectory };\n\n/**\n * Documents the validated extension directory payload exchanged by command, SDK, and package integrations.\n */\nexport interface ValidatedExtensionDirectory {\n directory: string;\n manifest_path: string;\n entry_path: string;\n manifest: ExtensionManifest;\n}\n\n/**\n * Implements normalize string list for the public runtime surface of this module.\n */\nexport function normalizeStringList(values: readonly string[]): string[] {\n return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n );\n}\n\n/**\n * Implements normalize extension name for match for the public runtime surface of this module.\n */\nexport function normalizeExtensionNameForMatch(value: string): string {\n return value.trim().toLowerCase();\n}\n\n/**\n * Implements normalize managed directory name for the public runtime surface of this module.\n */\nexport function normalizeManagedDirectoryName(name: string): string {\n const normalized = name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9._-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (normalized.length === 0) {\n throw new PmCliError(\"Extension manifest name must resolve to a non-empty directory name.\", EXIT_CODE.USAGE);\n }\n if (normalized === \".\" || normalized === \"..\") {\n // Manifest-controlled input must resolve to a dedicated child directory, never\n // the extensions root itself or its parent (path-traversal guard).\n throw new PmCliError(\"Extension manifest name must not resolve to \\\".\\\" or \\\"..\\\".\", EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction parseOptionalManifestPriority(value: unknown): number | null {\n if (value === undefined || value === null) {\n return DEFAULT_EXTENSION_PRIORITY;\n }\n return typeof value === \"number\" && Number.isInteger(value) ? value : null;\n}\n\nfunction parseOptionalManifestCapabilities(value: unknown): string[] | null {\n if (value === undefined || value === null) {\n return [];\n }\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n return null;\n }\n return normalizeStringList(value.map((entry) => String(entry).toLowerCase()));\n}\n\n/**\n * Implements parse extension manifest for the public runtime surface of this module.\n */\nexport function parseExtensionManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n const candidate = raw as Record<string, unknown>;\n if (typeof candidate.name !== \"string\" || candidate.name.trim().length === 0) {\n return null;\n }\n if (typeof candidate.version !== \"string\" || candidate.version.trim().length === 0) {\n return null;\n }\n if (typeof candidate.entry !== \"string\" || candidate.entry.trim().length === 0) {\n return null;\n }\n\n const priority = parseOptionalManifestPriority(candidate.priority);\n const capabilities = parseOptionalManifestCapabilities(candidate.capabilities);\n if (priority === null || capabilities === null) {\n return null;\n }\n\n return {\n name: candidate.name.trim(),\n version: candidate.version.trim(),\n entry: candidate.entry.trim(),\n priority,\n capabilities,\n };\n}\n\n/**\n * Implements validate extension directory for the public runtime surface of this module.\n */\nexport async function validateExtensionDirectory(directory: string): Promise<ValidatedExtensionDirectory> {\n const manifestPath = path.join(directory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n throw new PmCliError(`Extension manifest is missing at \"${manifestPath}\".`, EXIT_CODE.USAGE);\n }\n\n let parsedManifest: unknown;\n try {\n parsedManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch (error: unknown) {\n throw new PmCliError(\n `Failed to parse extension manifest at \"${manifestPath}\": ${formatManifestReadError(error)}`,\n EXIT_CODE.USAGE,\n );\n }\n\n const manifest = parseExtensionManifest(parsedManifest);\n if (!manifest) {\n throw new PmCliError(`Extension manifest at \"${manifestPath}\" is invalid.`, EXIT_CODE.USAGE);\n }\n\n const entryPath = path.resolve(directory, manifest.entry);\n if (!isPathWithinDirectory(directory, entryPath)) {\n throw new PmCliError(\n `Extension entry \"${manifest.entry}\" resolves outside extension directory \"${directory}\".`,\n EXIT_CODE.USAGE,\n );\n }\n if (!(await pathExists(entryPath))) {\n throw new PmCliError(`Extension entry file is missing at \"${entryPath}\".`, EXIT_CODE.USAGE);\n }\n if (!(await isCanonicalPathWithinDirectory(directory, entryPath))) {\n throw new PmCliError(\n `Extension entry \"${manifest.entry}\" resolves outside extension directory after symlink resolution.`,\n EXIT_CODE.USAGE,\n );\n }\n\n return {\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n };\n}\n\nfunction formatManifestReadError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport const _testOnlyExtensionShared = {\n formatManifestReadError,\n};\n"],
5
- "mappings": "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",
6
- "names": ["commandPathTokens"]
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../../cli/commands/update.ts"],"sourcesContent":["/**\n * @module cli/commands/update\n *\n * Implements the pm update command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n COMMON_MUTATION_COMMAND_OPTION_KEYS,\n canonicalizeCommandOptionKey,\n commandOptionFlagLabel,\n resolveItemTypeRegistry,\n resolveCommandOptionPolicyState,\n resolveTypeDefinition,\n resolveTypeName,\n validateTypeOptions,\n} from \"../../core/item/type-registry.js\";\nimport { normalizeItemId } from \"../../core/item/id.js\";\nimport { toItemRecord } from \"../../core/item/item-record.js\";\nimport { buildInvalidTypeError } from \"../../core/schema/item-types-file.js\";\nimport {\n assertParentReferenceIsNotSelf,\n normalizeParentReferenceValue,\n validateMissingParentReference,\n} from \"../../core/item/parent-reference-policy.js\";\nimport { validateSprintOrReleaseValue } from \"../../core/item/sprint-release-format.js\";\nimport {\n applyTagRemovals,\n assertNoUnknownCsvKeys,\n createStdinTokenResolver,\n looksLikeGenericKeyValueEntry,\n mergeAdditiveTags,\n parseCsvKv,\n parseOptionalNumber,\n parseTags,\n} from \"../../core/item/parse.js\";\nimport { resolvePriority } from \"../../core/item/priority.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport { collectRuntimeUpdateFieldValues } from \"../../core/schema/runtime-field-values.js\";\nimport {\n resolveItemTypesFilePath,\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../../core/schema/runtime-schema.js\";\nimport {\n describeAllowedTransitions,\n evaluateTransition,\n resolveTypeWorkflows,\n type NormalizedTypeWorkflow,\n} from \"../../core/schema/type-workflows.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 { stableValueEquals } from \"../../core/shared/serialization.js\";\nimport { resolveIsoOrRelative } from \"../../core/shared/time.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport {\n collectRegisteredItemFieldNames,\n applyRegisteredItemFieldDefaultsAndValidation,\n parseRegisteredItemFieldAssignments,\n} from \"../../core/extensions/item-fields.js\";\nimport { buildItemNotFoundError, 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 { runClose } from \"./close.js\";\nimport {\n normalizeRiskInput,\n normalizeSeverityInput,\n parseConfidenceInput,\n parseRegressionInput,\n} from \"./metadata-normalizers.js\";\nimport {\n applyLegacyNoneCollectionNormalizers,\n assertNoLegacyNoneToken,\n assertNoLegacyNoneTokens,\n isLegacyNoneToken,\n type LegacyNoneCollectionNormalizer,\n} from \"./legacy-none-tokens.js\";\nimport { ensureEnumValue as ensureEnum } from \"./recurrence-parsers.js\";\nimport {\n parseEventEntries,\n parseReminderEntries,\n parseTypeOptionEntries,\n} from \"./repeatable-metadata-parsers.js\";\nimport type {\n Comment,\n Dependency,\n GovernanceWorkflowEnforcement,\n ItemFormat,\n ItemDocument,\n ItemFrontMatter,\n ItemStatus,\n LinkedDoc,\n LinkedFile,\n LinkedTest,\n LogNote,\n} from \"../../types/index.js\";\nimport {\n DEPENDENCY_KIND_VALUES,\n ISSUE_SEVERITY_VALUES,\n RISK_VALUES,\n} from \"../../types/index.js\";\nimport { parseDocs, parseFiles, parseLogSeed, parseTests } from \"./create.js\";\nimport {\n COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR,\n COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR,\n COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON,\n parseCommandUnsetTargets,\n resolveRuntimeUnsetFieldDefinition,\n type CommandUnsetFieldDefinition,\n} from \"./shared-unset-fields.js\";\nimport type {\n MutationMetadataCommandOptions,\n SharedLinkedResourceClearOptions,\n SharedLinkedResourceOptions,\n} from \"./mutation-command-options.js\";\n\n/**\n * Documents the update command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface UpdateCommandOptions\n extends MutationMetadataCommandOptions,\n SharedLinkedResourceOptions,\n SharedLinkedResourceClearOptions {\n title?: string;\n description?: string;\n body?: string;\n status?: string;\n closeReason?: string;\n priority?: string;\n type?: string;\n tags?: string;\n addTags?: string[];\n removeTags?: string[];\n force?: boolean;\n allowAuditUpdate?: boolean;\n allowAuditDepUpdate?: boolean;\n depRemove?: string[];\n replaceDeps?: boolean;\n replaceTests?: boolean;\n runtimeFieldCommands?: Array<\"update\" | \"update_many\">;\n [key: string]: unknown;\n}\n\n/**\n * Documents the update result payload exchanged by command, SDK, and package integrations.\n */\nexport interface UpdateResult {\n item: Record<string, unknown>;\n changed_fields: string[];\n warnings: string[];\n audit_update?: boolean;\n}\n\ninterface UpdateUnsetFieldDefinition {\n optionKey: string;\n frontMatterKey: string;\n}\n\nconst UPDATE_UNSET_FIELD_DEFINITIONS: readonly CommandUnsetFieldDefinition[] = [\n ...COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_CLOSE_REASON,\n { canonical: \"close-reason\", aliases: [\"close_reason\", \"close-reason\"], optionKey: \"closeReason\", frontMatterKey: \"close_reason\" },\n ...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_CLOSE_REASON_BEFORE_AUTHOR,\n ...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR,\n];\n\nconst UPDATE_UNSET_ALIAS_MAP: Map<string, UpdateUnsetFieldDefinition> = (() => {\n const map = new Map<string, UpdateUnsetFieldDefinition>();\n for (const definition of UPDATE_UNSET_FIELD_DEFINITIONS) {\n for (const alias of definition.aliases) {\n map.set(alias, {\n optionKey: definition.optionKey,\n frontMatterKey: definition.frontMatterKey,\n });\n }\n }\n return map;\n})();\n\nconst UPDATE_OPTION_KEY_TO_UNSET_CANONICAL = new Map<string, string>(\n UPDATE_UNSET_FIELD_DEFINITIONS.map((definition) => [definition.optionKey, definition.canonical]),\n);\n\nconst UPDATE_UNSET_SUPPORTED_CANONICAL_FIELDS = UPDATE_UNSET_FIELD_DEFINITIONS.map((definition) => definition.canonical)\n .sort((left, right) => left.localeCompare(right))\n .join(\", \");\n\nconst AUDIT_UPDATE_DISALLOWED_UNSET_FRONT_MATTER_KEYS = new Set<string>([\n \"close_reason\",\n \"assignee\",\n \"parent\",\n \"blocked_by\",\n \"blocked_reason\",\n \"unblock_note\",\n \"dependencies\",\n \"comments\",\n \"notes\",\n \"learnings\",\n \"files\",\n \"tests\",\n \"docs\",\n \"reminders\",\n \"events\",\n]);\n\nfunction toAuthor(candidate: string | undefined, defaultAuthor: string): string {\n const resolved = candidate ?? process.env.PM_AUTHOR ?? defaultAuthor;\n const trimmed = resolved.trim();\n return trimmed || \"unknown\";\n}\n\nconst UPDATE_LEGACY_NONE_COLLECTION_NORMALIZERS: ReadonlyArray<LegacyNoneCollectionNormalizer<UpdateCommandOptions>> = [\n { optionKey: \"dep\", clearFlagKey: \"clearDeps\", valueFlag: \"--dep\", clearFlag: \"--clear-deps\", disableFlagKey: \"replaceDeps\" },\n { optionKey: \"comment\", clearFlagKey: \"clearComments\", valueFlag: \"--comment\", clearFlag: \"--clear-comments\" },\n { optionKey: \"note\", clearFlagKey: \"clearNotes\", valueFlag: \"--note\", clearFlag: \"--clear-notes\" },\n { optionKey: \"learning\", clearFlagKey: \"clearLearnings\", valueFlag: \"--learning\", clearFlag: \"--clear-learnings\" },\n { optionKey: \"file\", clearFlagKey: \"clearFiles\", valueFlag: \"--file\", clearFlag: \"--clear-files\" },\n { optionKey: \"test\", clearFlagKey: \"clearTests\", valueFlag: \"--test\", clearFlag: \"--clear-tests\", disableFlagKey: \"replaceTests\" },\n { optionKey: \"doc\", clearFlagKey: \"clearDocs\", valueFlag: \"--doc\", clearFlag: \"--clear-docs\" },\n { optionKey: \"reminder\", clearFlagKey: \"clearReminders\", valueFlag: \"--reminder\", clearFlag: \"--clear-reminders\" },\n { optionKey: \"event\", clearFlagKey: \"clearEvents\", valueFlag: \"--event\", clearFlag: \"--clear-events\" },\n { optionKey: \"typeOption\", clearFlagKey: \"clearTypeOptions\", valueFlag: \"--type-option\", clearFlag: \"--clear-type-options\" },\n];\n\nfunction normalizeLegacyNoneUpdateOptions(options: UpdateCommandOptions): UpdateCommandOptions {\n const normalized: UpdateCommandOptions = {\n ...options,\n unset: options.unset ? [...options.unset] : undefined,\n };\n /* c8 ignore start -- unset dedupe helper branch permutations are covered by legacy option compatibility suites. */\n const appendUnsetTarget = (value: string): void => {\n const current = normalized.unset ? [...normalized.unset] : [];\n if (!current.includes(value)) {\n current.push(value);\n }\n normalized.unset = current;\n };\n /* c8 ignore stop */\n\n const scalarOptionKeys = new Set<string>([...UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.keys(), \"rank\"]);\n for (const optionKey of scalarOptionKeys) {\n const candidate = normalized[optionKey];\n if (typeof candidate !== \"string\" || !isLegacyNoneToken(candidate)) {\n continue;\n }\n /* c8 ignore start -- rank alias canonicalization is exercised in legacy-option compatibility tests. */\n const canonicalUnset = optionKey === \"rank\" ? \"order\" : (UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey);\n appendUnsetTarget(canonicalUnset);\n normalized[optionKey] = undefined;\n /* c8 ignore stop */\n }\n\n return applyLegacyNoneCollectionNormalizers(normalized, UPDATE_LEGACY_NONE_COLLECTION_NORMALIZERS);\n}\n\nfunction parseUpdateUnsetTargets(\n raw: string[] | undefined,\n runtimeFieldRegistry?: RuntimeFieldRegistry,\n extensionFieldNames: readonly string[] = [],\n): { frontMatterKeys: Set<string>; optionKeys: Set<string> } {\n return parseCommandUnsetTargets({\n raw,\n supportedFields: UPDATE_UNSET_SUPPORTED_CANONICAL_FIELDS,\n resolveDefinition: (trimmed) => {\n const extensionFieldName = extensionFieldNames.find((fieldName) => {\n const normalizedFieldName = fieldName.toLowerCase();\n return (\n normalizedFieldName === trimmed ||\n normalizedFieldName.replaceAll(\"_\", \"-\") === trimmed ||\n normalizedFieldName.replaceAll(\"-\", \"_\") === trimmed\n );\n });\n const definition = UPDATE_UNSET_ALIAS_MAP.get(trimmed) ??\n resolveRuntimeUnsetFieldDefinition(trimmed, \"update\", runtimeFieldRegistry) ??\n (extensionFieldName ? { optionKey: \"field\", frontMatterKey: extensionFieldName } : undefined);\n return definition;\n },\n });\n}\n\n// Restricted append-style flags have dedicated commands with their own\n// audit/override semantics; map each one to its exact replacement invocation so\n// audit-scope errors tell the agent how to retry instead of dead-ending. The\n// evidence append flags are allowed by --allow-audit-update, but still used by\n// narrower scopes such as --allow-audit-dep-update.\nconst AUDIT_RESTRICTED_FLAG_REPLACEMENTS: ReadonlyMap<string, (id: string) => string> = new Map([\n [\"--comment\", (id: string) => `pm comments ${id} --add \"<text>\" --allow-audit-comment`],\n [\"--file\", (id: string) => `pm files ${id} --add \"path=<path>,scope=<scope>,note=<note>\" --force`],\n [\"--doc\", (id: string) => `pm docs ${id} --add \"path=<path>,scope=<scope>,note=<note>\" --force`],\n]);\n\nfunction buildAuditScopeRestrictedOptionsError(params: {\n id: string;\n code: string;\n message: string;\n required: string;\n why: string;\n disallowedFlags: string[];\n}): PmCliError {\n // Only surface replacement commands for restricted flags the caller actually\n // passed, so the guidance is an exact retry path.\n const replacementCommands = params.disallowedFlags\n .flatMap((flag) => {\n const replacement = AUDIT_RESTRICTED_FLAG_REPLACEMENTS.get(flag);\n return replacement ? [replacement(params.id)] : [];\n });\n const replacementSteps = params.disallowedFlags\n .flatMap((flag) => {\n const replacement = AUDIT_RESTRICTED_FLAG_REPLACEMENTS.get(flag);\n return replacement ? [`Replace ${flag} with: ${replacement(params.id)}`] : [];\n });\n return new PmCliError(params.message, EXIT_CODE.USAGE, {\n code: params.code,\n required: params.required,\n why: params.why,\n ...(replacementCommands.length > 0 ? { examples: replacementCommands } : {}),\n nextSteps: [\n `Re-run without: ${params.disallowedFlags.join(\", \")}`,\n ...replacementSteps,\n ],\n });\n}\n\nfunction enforceAllowAuditUpdateScope(id: string, options: UpdateCommandOptions, clearFrontMatterKeys: Set<string>): void {\n const allowAuditUpdate = options.allowAuditUpdate === true;\n const allowAuditDepUpdate = options.allowAuditDepUpdate === true;\n if (!allowAuditUpdate && !allowAuditDepUpdate) {\n return;\n }\n if (allowAuditUpdate && allowAuditDepUpdate) {\n throw new PmCliError(\n \"Choose either --allow-audit-update or --allow-audit-dep-update; these override modes are mutually exclusive.\",\n EXIT_CODE.USAGE,\n );\n }\n const pushIf = (condition: boolean, flag: string, list: string[]): void => {\n if (condition) {\n list.push(flag);\n }\n };\n if (allowAuditDepUpdate) {\n const disallowedFlags: string[] = [];\n pushIf(options.title !== undefined, \"--title\", disallowedFlags);\n pushIf(options.description !== undefined, \"--description\", disallowedFlags);\n pushIf(options.body !== undefined, \"--body\", disallowedFlags);\n pushIf(options.status !== undefined, \"--status\", disallowedFlags);\n pushIf(options.closeReason !== undefined, \"--close-reason\", disallowedFlags);\n pushIf(options.priority !== undefined, \"--priority\", disallowedFlags);\n pushIf(options.type !== undefined, \"--type\", disallowedFlags);\n pushIf(options.tags !== undefined, \"--tags\", disallowedFlags);\n pushIf(Array.isArray(options.addTags) && options.addTags.length > 0, \"--add-tags\", disallowedFlags);\n pushIf(Array.isArray(options.removeTags) && options.removeTags.length > 0, \"--remove-tags\", disallowedFlags);\n pushIf(options.deadline !== undefined, \"--deadline\", disallowedFlags);\n pushIf(options.estimatedMinutes !== undefined, \"--estimate\", disallowedFlags);\n pushIf(options.acceptanceCriteria !== undefined, \"--acceptance-criteria\", disallowedFlags);\n pushIf(options.definitionOfReady !== undefined, \"--definition-of-ready\", disallowedFlags);\n pushIf(options.order !== undefined || options.rank !== undefined, \"--order/--rank\", disallowedFlags);\n pushIf(options.goal !== undefined, \"--goal\", disallowedFlags);\n pushIf(options.objective !== undefined, \"--objective\", disallowedFlags);\n pushIf(options.value !== undefined, \"--value\", disallowedFlags);\n pushIf(options.impact !== undefined, \"--impact\", disallowedFlags);\n pushIf(options.outcome !== undefined, \"--outcome\", disallowedFlags);\n pushIf(options.whyNow !== undefined, \"--why-now\", disallowedFlags);\n pushIf(options.assignee !== undefined, \"--assignee\", disallowedFlags);\n pushIf(options.parent !== undefined, \"--parent\", disallowedFlags);\n pushIf(options.reviewer !== undefined, \"--reviewer\", disallowedFlags);\n pushIf(options.risk !== undefined, \"--risk\", disallowedFlags);\n pushIf(options.confidence !== undefined, \"--confidence\", disallowedFlags);\n pushIf(options.sprint !== undefined, \"--sprint\", disallowedFlags);\n pushIf(options.release !== undefined, \"--release\", disallowedFlags);\n pushIf(options.blockedBy !== undefined, \"--blocked-by\", disallowedFlags);\n pushIf(options.blockedReason !== undefined, \"--blocked-reason\", disallowedFlags);\n pushIf(options.unblockNote !== undefined, \"--unblock-note\", disallowedFlags);\n pushIf(options.reporter !== undefined, \"--reporter\", disallowedFlags);\n pushIf(options.severity !== undefined, \"--severity\", disallowedFlags);\n pushIf(options.environment !== undefined, \"--environment\", disallowedFlags);\n pushIf(options.reproSteps !== undefined, \"--repro-steps\", disallowedFlags);\n pushIf(options.resolution !== undefined, \"--resolution\", disallowedFlags);\n pushIf(options.expectedResult !== undefined, \"--expected-result\", disallowedFlags);\n pushIf(options.actualResult !== undefined, \"--actual-result\", disallowedFlags);\n pushIf(options.affectedVersion !== undefined, \"--affected-version\", disallowedFlags);\n pushIf(options.fixedVersion !== undefined, \"--fixed-version\", disallowedFlags);\n pushIf(options.component !== undefined, \"--component\", disallowedFlags);\n pushIf(options.regression !== undefined, \"--regression\", disallowedFlags);\n pushIf(options.customerImpact !== undefined, \"--customer-impact\", disallowedFlags);\n pushIf(options.depRemove !== undefined, \"--dep-remove\", disallowedFlags);\n pushIf(options.replaceDeps === true, \"--replace-deps\", disallowedFlags);\n pushIf(options.replaceTests === true, \"--replace-tests\", disallowedFlags);\n pushIf(options.comment !== undefined, \"--comment\", disallowedFlags);\n pushIf(options.note !== undefined, \"--note\", disallowedFlags);\n pushIf(options.learning !== undefined, \"--learning\", disallowedFlags);\n pushIf(options.file !== undefined, \"--file\", disallowedFlags);\n pushIf(options.test !== undefined, \"--test\", disallowedFlags);\n pushIf(options.doc !== undefined, \"--doc\", disallowedFlags);\n pushIf(options.reminder !== undefined, \"--reminder\", disallowedFlags);\n pushIf(options.event !== undefined, \"--event\", disallowedFlags);\n pushIf(options.typeOption !== undefined, \"--type-option\", disallowedFlags);\n pushIf(options.clearDeps === true, \"--clear-deps\", disallowedFlags);\n pushIf(options.clearComments === true, \"--clear-comments\", disallowedFlags);\n pushIf(options.clearNotes === true, \"--clear-notes\", disallowedFlags);\n pushIf(options.clearLearnings === true, \"--clear-learnings\", disallowedFlags);\n pushIf(options.clearFiles === true, \"--clear-files\", disallowedFlags);\n pushIf(options.clearTests === true, \"--clear-tests\", disallowedFlags);\n pushIf(options.clearDocs === true, \"--clear-docs\", disallowedFlags);\n pushIf(options.clearReminders === true, \"--clear-reminders\", disallowedFlags);\n pushIf(options.clearEvents === true, \"--clear-events\", disallowedFlags);\n pushIf(options.clearTypeOptions === true, \"--clear-type-options\", disallowedFlags);\n pushIf(options.force === true, \"--force\", disallowedFlags);\n pushIf(clearFrontMatterKeys.size > 0, \"--unset\", disallowedFlags);\n if (options.dep === undefined || options.dep.length === 0) {\n throw new PmCliError(\"--allow-audit-dep-update requires at least one --dep value\", EXIT_CODE.USAGE);\n }\n if (disallowedFlags.length > 0) {\n throw buildAuditScopeRestrictedOptionsError({\n id,\n code: \"audit_dep_update_restricted_options\",\n message: `--allow-audit-dep-update supports append-only dependency additions via --dep. Remove restricted options: ${disallowedFlags.join(\", \")}`,\n required: \"Pass only --dep additions (plus --message/--author) when using --allow-audit-dep-update.\",\n why: \"--allow-audit-dep-update is a narrow non-owner override scoped to append-only dependency additions; every other mutation keeps its normal ownership rules.\",\n disallowedFlags,\n });\n }\n return;\n }\n\n const disallowedFlags: string[] = [];\n pushIf(options.status !== undefined, \"--status\", disallowedFlags);\n pushIf(options.closeReason !== undefined, \"--close-reason\", disallowedFlags);\n pushIf(options.assignee !== undefined, \"--assignee\", disallowedFlags);\n pushIf(options.parent !== undefined, \"--parent\", disallowedFlags);\n pushIf(options.blockedBy !== undefined, \"--blocked-by\", disallowedFlags);\n pushIf(options.blockedReason !== undefined, \"--blocked-reason\", disallowedFlags);\n pushIf(options.unblockNote !== undefined, \"--unblock-note\", disallowedFlags);\n pushIf(options.dep !== undefined, \"--dep\", disallowedFlags);\n pushIf(options.depRemove !== undefined, \"--dep-remove\", disallowedFlags);\n pushIf(options.replaceDeps === true, \"--replace-deps\", disallowedFlags);\n pushIf(options.replaceTests === true, \"--replace-tests\", disallowedFlags);\n pushIf(options.note !== undefined, \"--note\", disallowedFlags);\n pushIf(options.learning !== undefined, \"--learning\", disallowedFlags);\n pushIf(options.test !== undefined, \"--test\", disallowedFlags);\n pushIf(options.reminder !== undefined, \"--reminder\", disallowedFlags);\n pushIf(options.event !== undefined, \"--event\", disallowedFlags);\n pushIf(options.clearDeps === true, \"--clear-deps\", disallowedFlags);\n pushIf(options.clearComments === true, \"--clear-comments\", disallowedFlags);\n pushIf(options.clearNotes === true, \"--clear-notes\", disallowedFlags);\n pushIf(options.clearLearnings === true, \"--clear-learnings\", disallowedFlags);\n pushIf(options.clearFiles === true, \"--clear-files\", disallowedFlags);\n pushIf(options.clearTests === true, \"--clear-tests\", disallowedFlags);\n pushIf(options.clearDocs === true, \"--clear-docs\", disallowedFlags);\n pushIf(options.clearReminders === true, \"--clear-reminders\", disallowedFlags);\n pushIf(options.clearEvents === true, \"--clear-events\", disallowedFlags);\n\n /* c8 ignore start -- audit unset ordering fallback is validated by audit-governance integration coverage. */\n const disallowedUnset = [...clearFrontMatterKeys]\n .filter((field) => AUDIT_UPDATE_DISALLOWED_UNSET_FRONT_MATTER_KEYS.has(field))\n .sort((left, right) => left.localeCompare(right))\n .map((field) => `--unset ${field.replaceAll(\"_\", \"-\")}`);\n /* c8 ignore stop */\n disallowedFlags.push(...disallowedUnset);\n\n if (disallowedFlags.length > 0) {\n throw buildAuditScopeRestrictedOptionsError({\n id,\n code: \"audit_update_restricted_options\",\n message: `--allow-audit-update only supports non-lifecycle metadata fields and evidence appends. Remove restricted options: ${disallowedFlags.join(\", \")}`,\n required: \"Limit --allow-audit-update to non-lifecycle metadata fields plus append-only --comment/--file/--doc evidence; route restricted appends and lifecycle changes through their dedicated commands.\",\n why: \"--allow-audit-update is a non-owner override scoped to metadata audits and append-only evidence; lifecycle, ownership, dependency mutations, restricted append fields, and clear/replace operations keep their normal ownership rules.\",\n disallowedFlags,\n });\n }\n}\n\n/* c8 ignore start -- lifecycle/dependency edge branches are exercised by dedicated update workflow integration tests. */\nfunction parseStatus(value: string, statusRegistry: RuntimeStatusRegistry): ItemStatus {\n const normalized = normalizeStatusInput(value, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(`Invalid --status value \"${value}\". Allowed: ${allowedStatuses.join(\", \")}`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\n/**\n * Enforce per-type allowed-transition rules (governance.workflow_enforcement).\n * `off` (default) or an unrestricted type is a no-op. `strict` throws on a\n * disallowed transition; `warn` returns a warning string surfaced on the\n * update result. The target status is the raw `--status` value (resolved\n * case-insensitively through the registry inside evaluateTransition).\n */\nfunction enforceTypeWorkflowTransition(params: {\n enforcement: GovernanceWorkflowEnforcement;\n typeWorkflows: NormalizedTypeWorkflow[];\n statusRegistry: RuntimeStatusRegistry;\n typeName: string;\n fromStatus: string;\n toStatus: string;\n}): string | undefined {\n if (params.enforcement === \"off\" || params.typeWorkflows.length === 0) {\n return undefined;\n }\n const result = evaluateTransition({\n typeName: params.typeName,\n fromStatus: params.fromStatus,\n toStatus: params.toStatus,\n typeWorkflows: params.typeWorkflows,\n statusRegistry: params.statusRegistry,\n });\n if (!result.hasRule || result.allowed) {\n return undefined;\n }\n const normalizedFrom = normalizeStatusInput(params.fromStatus, params.statusRegistry) ?? params.fromStatus;\n const normalizedTo = normalizeStatusInput(params.toStatus, params.statusRegistry) ?? params.toStatus;\n const message =\n `Disallowed transition for type \"${params.typeName}\": ${normalizedFrom} -> ${normalizedTo}. ` +\n `Allowed transitions: ${describeAllowedTransitions(result.allowedTransitions)}.`;\n if (params.enforcement === \"strict\") {\n throw new PmCliError(message, EXIT_CODE.USAGE);\n }\n return `workflow_transition_not_allowed: ${message}`;\n}\n\ninterface ParsedDependencyUpdates {\n additions: Dependency[];\n}\n\ninterface DependencyRemovalSelector {\n id: string;\n kind?: (typeof DEPENDENCY_KIND_VALUES)[number];\n source_kind?: string;\n}\n\nfunction parseDependencyCreatedAt(value: string | undefined, currentIso: string): string {\n if (!value || value.trim() === \"\" || value.trim().toLowerCase() === \"now\") {\n return currentIso;\n }\n const parsed = Date.parse(value);\n if (!Number.isFinite(parsed)) {\n throw new PmCliError(`Invalid dependency created_at timestamp \"${value}\"`, EXIT_CODE.USAGE);\n }\n return new Date(parsed).toISOString();\n}\n\nfunction parseOptionalDependencyString(value: string | undefined): string | undefined {\n if (value === undefined) return undefined;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\n/** Allowed CSV/markdown keys for the update `--dep` addition seed (GH-258). */\nconst DEP_ADDITION_KEYS = [\"id\", \"kind\", \"type\", \"author\", \"created_at\", \"source_kind\"] as const;\n/** Allowed CSV/markdown keys for the `--dep-remove` selector (GH-258). */\nconst DEP_REMOVE_KEYS = [\"id\", \"kind\", \"type\", \"source_kind\"] as const;\n\nfunction looksLikeStructuredDependencyEntry(raw: string): boolean {\n if (raw.startsWith(\"```\") || raw.includes(\"\\n\")) {\n return true;\n }\n if (/^(?:[-*+]\\s+)?(?:id|kind|type|author|created_at|source_kind)\\s*[:=]/i.test(raw)) {\n return true;\n }\n // A first-key typo (e.g. `bogus=v,id=pm-2`) must still be parsed so the unknown\n // key is rejected rather than swallowed as a bare item id (GH-258).\n return looksLikeGenericKeyValueEntry(raw);\n}\n\n// pm-fl0c #4 (2026-05-28): `pm plan` accepts `depends_on` as a link kind\n// (`PLAN_STEP_LINK_KIND_VALUES`) but `pm update --dep kind=depends_on` rejected\n// it because `DEPENDENCY_KIND_VALUES` only lists `blocked_by`. The two terms\n// are semantically identical from this side (\"X depends on Y\" === \"X blocked\n// by Y\"), so we normalize input here rather than expanding the persisted enum\n// — the stored kind stays canonical (`blocked_by`) and downstream consumers\n// (closing logic, dependency graphs, blockers views) keep working unchanged.\nconst DEPENDENCY_KIND_INPUT_ALIASES: Readonly<Record<string, string>> = {\n \"blocked-by\": \"blocked_by\",\n depends_on: \"blocked_by\",\n \"depends-on\": \"blocked_by\",\n};\n\nfunction normalizeDependencyKindInput(raw: string | undefined): string | undefined {\n if (typeof raw !== \"string\") {\n return raw;\n }\n const trimmed = raw.trim();\n const alias = DEPENDENCY_KIND_INPUT_ALIASES[trimmed.toLowerCase()];\n return alias ?? trimmed;\n}\n\nfunction parseDependencyAdditions(raw: string[] | undefined, prefix: string, nowIso: string): ParsedDependencyUpdates {\n if (!raw) {\n return { additions: [] };\n }\n assertNoLegacyNoneTokens(raw, \"--dep\", \"Use --clear-deps to clear dependencies.\");\n const additions: Dependency[] = raw.map((entry) => {\n const trimmedEntry = entry.trim();\n const isStructured = looksLikeStructuredDependencyEntry(trimmedEntry);\n const kv = isStructured ? parseCsvKv(entry, \"--dep\") : { id: trimmedEntry, kind: \"related\" };\n if (isStructured) {\n assertNoUnknownCsvKeys(kv, \"--dep\", DEP_ADDITION_KEYS);\n }\n const id = kv.id?.trim();\n const kind = normalizeDependencyKindInput((kv.kind ?? kv.type)?.trim());\n if (!id || !kind) {\n throw new PmCliError(\"--dep requires id and kind, or a bare item id to add a related dependency\", EXIT_CODE.USAGE);\n }\n if (id.toLowerCase() === \"undefined\") {\n throw new PmCliError(\n `--dep id must not use placeholder token \"${id}\". Use --clear-deps to clear dependencies.`,\n EXIT_CODE.USAGE,\n );\n }\n const sourceKind = parseOptionalDependencyString(kv.source_kind);\n return {\n id: normalizeItemId(id, prefix),\n kind: ensureEnum(kind, DEPENDENCY_KIND_VALUES, \"dependency kind\"),\n created_at: parseDependencyCreatedAt(kv.created_at, nowIso),\n author: parseOptionalDependencyString(kv.author),\n source_kind: sourceKind,\n };\n });\n return { additions };\n}\n\nfunction parseDependencyRemovals(raw: string[] | undefined, prefix: string): DependencyRemovalSelector[] {\n if (!raw) {\n return [];\n }\n assertNoLegacyNoneTokens(raw, \"--dep-remove\");\n return raw.map((entry) => {\n const trimmed = entry.trim();\n if (!trimmed) {\n throw new PmCliError(\"--dep-remove requires id or key/value selectors\", EXIT_CODE.USAGE);\n }\n if (trimmed.includes(\"=\") || /^(?:[-*+]\\s+)?(?:id|kind|type|source_kind)\\s*[:=]/i.test(trimmed) || trimmed.startsWith(\"```\")) {\n const kv = parseCsvKv(trimmed, \"--dep-remove\");\n assertNoUnknownCsvKeys(kv, \"--dep-remove\", DEP_REMOVE_KEYS);\n const idRaw = kv.id?.trim();\n if (!idRaw) {\n throw new PmCliError(\"--dep-remove key/value form requires id=<value>\", EXIT_CODE.USAGE);\n }\n if (idRaw.toLowerCase() === \"undefined\") {\n throw new PmCliError(`--dep-remove id must not use placeholder token \"${idRaw}\"`, EXIT_CODE.USAGE);\n }\n const kindRaw = normalizeDependencyKindInput(parseOptionalDependencyString(kv.kind ?? kv.type));\n const sourceKind = parseOptionalDependencyString(kv.source_kind);\n return {\n id: normalizeItemId(idRaw, prefix),\n kind: kindRaw ? ensureEnum(kindRaw, DEPENDENCY_KIND_VALUES, \"dependency kind\") : undefined,\n source_kind: sourceKind,\n };\n }\n if (trimmed.toLowerCase() === \"undefined\") {\n throw new PmCliError(`--dep-remove id must not use placeholder token \"${trimmed}\"`, EXIT_CODE.USAGE);\n }\n return {\n id: normalizeItemId(trimmed, prefix),\n };\n });\n}\n\nfunction dependencyKey(value: Pick<Dependency, \"id\" | \"kind\" | \"source_kind\">): string {\n return `${value.id}::${value.kind}::${value.source_kind ?? \"\"}`;\n}\n\n// pm-kyd6: `--blocked-by` writes the `blocked_by` scalar, but the dependency\n// graph (`pm deps`) is built only from the `dependencies` array. Mirror the\n// behaviour create.ts already has so the metadata and the graph agree: a\n// resolvable blocker also gets a `blocked_by` dependency edge, clearing the\n// scalar removes that edge, and re-pointing it replaces the prior edge.\nfunction reconcileBlockedByDependency(\n current: Dependency[] | undefined,\n nextBlockedById: string | undefined,\n nowIsoValue: string,\n author: string,\n): { dependencies: Dependency[] | undefined; changed: boolean } {\n let next = [...(current ?? [])];\n let changed = false;\n const filtered = next.filter((dep) => dep.kind !== \"blocked_by\" || dep.id === nextBlockedById);\n if (filtered.length !== next.length) {\n next = filtered;\n changed = true;\n }\n if (nextBlockedById && !next.some((dep) => dep.kind === \"blocked_by\" && dep.id === nextBlockedById)) {\n next.push({ id: nextBlockedById, kind: \"blocked_by\", created_at: nowIsoValue, author });\n changed = true;\n }\n if (!changed) {\n return { dependencies: current, changed: false };\n }\n return { dependencies: next.length > 0 ? next : undefined, changed: true };\n}\n\n// pm-kyd6: resolve the --blocked-by target before the synchronous mutate\n// callback so a real blocker can also become a `blocked_by` dependency edge.\n// `id` is set when the target resolves; `unresolved` carries the raw value when\n// --blocked-by points at an item that does not exist (the scalar is still set,\n// mirroring create.ts and the never-block missing-parent behaviour, but the\n// caller surfaces a warning so the metadata/graph mismatch is visible).\nasync function resolveBlockedByDependencyTarget(\n blockedByOption: string | undefined,\n blockedByCleared: boolean,\n pmRoot: string,\n idPrefix: string,\n itemFormat: ItemFormat,\n typeToFolder: Record<string, string>,\n): Promise<{ id?: string; unresolved?: string }> {\n if (blockedByOption === undefined || blockedByCleared) {\n return {};\n }\n const blockedByValue = blockedByOption.trim();\n if (blockedByValue.length === 0) {\n return {};\n }\n const located = await locateItem(pmRoot, normalizeItemId(blockedByValue, idPrefix), idPrefix, itemFormat, typeToFolder);\n return located ? { id: located.id } : { unresolved: blockedByValue };\n}\n\n// pm-kyd6: apply the reconciled blocked_by dependency edge to the item metadata\n// and record the `dependencies` change. Kept out of the mutate callback so the\n// large runUpdate function stays under the static-quality complexity budget.\nfunction applyBlockedByDependencyEdge(\n metadata: ItemFrontMatter,\n resolvedBlockedById: string | undefined,\n nowIsoValue: string,\n author: string,\n changedFields: string[],\n): void {\n const reconciled = reconcileBlockedByDependency(\n metadata.dependencies,\n resolvedBlockedById,\n nowIsoValue,\n author,\n );\n if (!reconciled.changed) {\n return;\n }\n if (reconciled.dependencies === undefined) {\n delete metadata.dependencies;\n } else {\n metadata.dependencies = reconciled.dependencies;\n }\n if (!changedFields.includes(\"dependencies\")) {\n changedFields.push(\"dependencies\");\n }\n}\n\nfunction fileKey(value: Pick<LinkedFile, \"path\" | \"scope\">): string {\n return `${value.path}::${value.scope}`;\n}\n\nfunction docKey(value: Pick<LinkedDoc, \"path\" | \"scope\">): string {\n return `${value.path}::${value.scope}`;\n}\n\nfunction testKey(value: Pick<LinkedTest, \"command\" | \"path\" | \"scope\" | \"pm_context_mode\">): string {\n return `${value.command}::${value.path ?? \"\"}::${value.scope}::${value.pm_context_mode ?? \"\"}`;\n}\n\nfunction matchesDependencySelector(value: Dependency, selector: DependencyRemovalSelector): boolean {\n if (value.id !== selector.id) {\n return false;\n }\n if (selector.kind && value.kind !== selector.kind) {\n return false;\n }\n if (selector.source_kind !== undefined && (value.source_kind ?? undefined) !== selector.source_kind) {\n return false;\n }\n return true;\n}\n\nfunction ensurePriority(raw: string | number): 0 | 1 | 2 | 3 | 4 {\n return resolvePriority(raw);\n}\n\nfunction normalizeUpdatePolicyOptionKey(raw: string, typeName: string): string {\n const canonical = canonicalizeCommandOptionKey(\"update\", raw);\n if (!canonical) {\n throw new PmCliError(\n `Unsupported command_option_policies option \"${raw}\" for update command on type \"${typeName}\"`,\n EXIT_CODE.CONFLICT,\n );\n }\n return canonical;\n}\n\nfunction collectProvidedUpdatePolicyOptions(\n options: UpdateCommandOptions,\n runtimeFieldRegistry: RuntimeFieldRegistry,\n extensionFieldNames: readonly string[],\n): Set<string> {\n const provided = new Set<string>();\n const mark = (optionKey: string, isProvided: boolean): void => {\n if (isProvided) {\n provided.add(optionKey);\n }\n };\n mark(\"title\", options.title !== undefined);\n mark(\"description\", options.description !== undefined);\n mark(\"body\", options.body !== undefined);\n mark(\"status\", options.status !== undefined);\n mark(\"closeReason\", options.closeReason !== undefined);\n mark(\"priority\", options.priority !== undefined);\n mark(\"type\", options.type !== undefined);\n // `--add-tags` / `--remove-tags` mutate the same `tags` field as `--tags`, so\n // they count toward the `tags` command_option_policy (disabled + required).\n mark(\n \"tags\",\n options.tags !== undefined ||\n (Array.isArray(options.addTags) && options.addTags.length > 0) ||\n (Array.isArray(options.removeTags) && options.removeTags.length > 0),\n );\n mark(\"deadline\", options.deadline !== undefined);\n mark(\"estimatedMinutes\", options.estimatedMinutes !== undefined);\n mark(\"acceptanceCriteria\", options.acceptanceCriteria !== undefined);\n mark(\"definitionOfReady\", options.definitionOfReady !== undefined);\n mark(\"order\", options.order !== undefined || options.rank !== undefined);\n mark(\"goal\", options.goal !== undefined);\n mark(\"objective\", options.objective !== undefined);\n mark(\"value\", options.value !== undefined);\n mark(\"impact\", options.impact !== undefined);\n mark(\"outcome\", options.outcome !== undefined);\n mark(\"whyNow\", options.whyNow !== undefined);\n mark(\"author\", options.author !== undefined);\n mark(\"message\", options.message !== undefined);\n mark(\"assignee\", options.assignee !== undefined);\n mark(\"parent\", options.parent !== undefined);\n mark(\"reviewer\", options.reviewer !== undefined);\n mark(\"risk\", options.risk !== undefined);\n mark(\"confidence\", options.confidence !== undefined);\n mark(\"sprint\", options.sprint !== undefined);\n mark(\"release\", options.release !== undefined);\n mark(\"blockedBy\", options.blockedBy !== undefined);\n mark(\"blockedReason\", options.blockedReason !== undefined);\n mark(\"unblockNote\", options.unblockNote !== undefined);\n mark(\"reporter\", options.reporter !== undefined);\n mark(\"severity\", options.severity !== undefined);\n mark(\"environment\", options.environment !== undefined);\n mark(\"reproSteps\", options.reproSteps !== undefined);\n mark(\"resolution\", options.resolution !== undefined);\n mark(\"expectedResult\", options.expectedResult !== undefined);\n mark(\"actualResult\", options.actualResult !== undefined);\n mark(\"affectedVersion\", options.affectedVersion !== undefined);\n mark(\"fixedVersion\", options.fixedVersion !== undefined);\n mark(\"component\", options.component !== undefined);\n mark(\"regression\", options.regression !== undefined);\n mark(\"customerImpact\", options.customerImpact !== undefined);\n mark(\"dep\", options.dep !== undefined);\n mark(\"depRemove\", options.depRemove !== undefined);\n mark(\"dep\", options.replaceDeps === true);\n mark(\"comment\", options.comment !== undefined);\n mark(\"note\", options.note !== undefined);\n mark(\"learning\", options.learning !== undefined);\n mark(\"file\", options.file !== undefined);\n mark(\"test\", options.test !== undefined);\n mark(\"test\", options.replaceTests === true);\n mark(\"doc\", options.doc !== undefined);\n mark(\"reminder\", options.reminder !== undefined);\n mark(\"event\", options.event !== undefined);\n mark(\"typeOption\", options.typeOption !== undefined);\n mark(\"field\", options.field !== undefined);\n mark(\"force\", options.force === true);\n mark(\"allowAuditUpdate\", options.allowAuditUpdate === true);\n mark(\"dep\", options.clearDeps === true);\n mark(\"comment\", options.clearComments === true);\n mark(\"note\", options.clearNotes === true);\n mark(\"learning\", options.clearLearnings === true);\n mark(\"file\", options.clearFiles === true);\n mark(\"test\", options.clearTests === true);\n mark(\"doc\", options.clearDocs === true);\n mark(\"reminder\", options.clearReminders === true);\n mark(\"event\", options.clearEvents === true);\n mark(\"typeOption\", options.clearTypeOptions === true);\n if (options.unset && options.unset.length > 0) {\n const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry, extensionFieldNames);\n for (const optionKey of unsetTargets.optionKeys) {\n mark(optionKey, true);\n }\n }\n return provided;\n}\n\nfunction enforceUpdateOptionsByType(\n typeName: string,\n options: UpdateCommandOptions,\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n runtimeFieldRegistry: RuntimeFieldRegistry,\n extensionFieldNames: readonly string[],\n): void {\n const typeDefinition = resolveTypeDefinition(typeName, typeRegistry);\n if (!typeDefinition) {\n throw new PmCliError(`Invalid type value \"${typeName}\"`, EXIT_CODE.USAGE);\n }\n const policyState = resolveCommandOptionPolicyState(typeDefinition, \"update\", []);\n if (policyState.errors.length > 0) {\n throw new PmCliError(policyState.errors.join(\"; \"), EXIT_CODE.CONFLICT);\n }\n\n const provided = collectProvidedUpdatePolicyOptions(options, runtimeFieldRegistry, extensionFieldNames);\n for (const disabled of policyState.disabled) {\n if (provided.has(normalizeUpdatePolicyOptionKey(disabled, typeName))) {\n throw new PmCliError(\n `Option ${commandOptionFlagLabel(\"update\", disabled)} is disabled for type \"${typeName}\" by command_option_policies`,\n EXIT_CODE.USAGE,\n );\n }\n }\n\n for (const required of policyState.required) {\n if (!provided.has(normalizeUpdatePolicyOptionKey(required, typeName))) {\n throw new PmCliError(\n `Missing required option ${commandOptionFlagLabel(\"update\", required)} for type \"${typeName}\"`,\n EXIT_CODE.USAGE,\n );\n }\n }\n}\n\ninterface UpdateScalarMutationContext {\n metadataRecord: Record<string, unknown>;\n clearFrontMatterKeys: ReadonlySet<string>;\n changedFields: string[];\n nowValue: Date;\n}\n\ninterface UpdateScalarMutationDefinition {\n optionKey: keyof UpdateCommandOptions;\n metadataKey: string;\n transform?: (value: string, context: UpdateScalarMutationContext) => unknown;\n}\n\ninterface UpdateClearCollectionDefinition {\n enabled: boolean | undefined;\n optionKey: string;\n clearFlag: string;\n valueFlag: string;\n values: string[] | undefined;\n frontMatterKey: string;\n}\n\ninterface UpdateMutationContext {\n options: UpdateCommandOptions;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>;\n statusRegistry: RuntimeStatusRegistry;\n runtimeFieldRegistry: RuntimeFieldRegistry;\n extensionRegistrations: ReturnType<typeof getActiveExtensionRegistrations>;\n extensionFieldNames: readonly string[];\n clearFrontMatterKeys: ReadonlySet<string>;\n dependencyUpdates: ParsedDependencyUpdates;\n dependencyRemovals: DependencyRemovalSelector[];\n commentUpdates: ReturnType<typeof parseLogSeed>;\n noteUpdates: ReturnType<typeof parseLogSeed>;\n learningUpdates: ReturnType<typeof parseLogSeed>;\n fileUpdates: ReturnType<typeof parseFiles>;\n testUpdates: ReturnType<typeof parseTests>;\n docUpdates: ReturnType<typeof parseDocs>;\n resolvedParentValue: string | undefined;\n resolvedBlockedByDependencyId: string | undefined;\n runtimeFieldUpdates: Record<string, unknown>;\n nowValue: Date;\n nowIso: string;\n author: string;\n pmRoot: string;\n}\n\ninterface CloseRouteContext {\n options: UpdateCommandOptions;\n fieldFlags: Record<string, boolean>;\n statusRegistry: RuntimeStatusRegistry;\n workflowTransitionWarnings: readonly string[];\n global: GlobalOptions;\n id: string;\n}\n\n// `rank` is a legacy alias for `order`; keep it out of the scalar loop if the\n// shared mutation key list ever grows to include that alias.\nconst UPDATE_LEGACY_COMMON_SCALAR_OPTION_EXCLUSIONS = new Set<string>([\"order\", \"rank\"]);\nconst UPDATE_LEGACY_COMMON_SCALAR_OPTION_KEYS = COMMON_MUTATION_COMMAND_OPTION_KEYS.filter(\n (key) => !UPDATE_LEGACY_COMMON_SCALAR_OPTION_EXCLUSIONS.has(key),\n) as readonly (keyof UpdateCommandOptions)[];\n\nconst UPDATE_LEGACY_SCALAR_OPTION_KEYS: readonly (keyof UpdateCommandOptions)[] = [\n \"tags\",\n \"closeReason\",\n ...UPDATE_LEGACY_COMMON_SCALAR_OPTION_KEYS,\n];\n\nconst UPDATE_SIMPLE_FIELD_FLAG_KEYS: readonly (keyof UpdateCommandOptions)[] = [\n \"title\",\n \"description\",\n \"body\",\n \"status\",\n \"closeReason\",\n \"priority\",\n \"type\",\n ...COMMON_MUTATION_COMMAND_OPTION_KEYS,\n \"dep\",\n \"depRemove\",\n \"comment\",\n \"note\",\n \"learning\",\n \"file\",\n \"test\",\n \"doc\",\n \"reminder\",\n \"event\",\n \"typeOption\",\n \"field\",\n];\n\nconst UPDATE_POST_TAG_SCALAR_MUTATIONS: ReadonlyArray<UpdateScalarMutationDefinition> = [\n {\n optionKey: \"deadline\",\n metadataKey: \"deadline\",\n transform: (value, context) => resolveIsoOrRelative(value, context.nowValue, \"deadline\"),\n },\n {\n optionKey: \"estimatedMinutes\",\n metadataKey: \"estimated_minutes\",\n transform: (value) => parseOptionalNumber(value, \"estimated-minutes\"),\n },\n { optionKey: \"acceptanceCriteria\", metadataKey: \"acceptance_criteria\", transform: (value) => value },\n { optionKey: \"definitionOfReady\", metadataKey: \"definition_of_ready\" },\n { optionKey: \"goal\", metadataKey: \"goal\" },\n { optionKey: \"objective\", metadataKey: \"objective\" },\n { optionKey: \"value\", metadataKey: \"value\" },\n { optionKey: \"impact\", metadataKey: \"impact\" },\n { optionKey: \"outcome\", metadataKey: \"outcome\" },\n { optionKey: \"whyNow\", metadataKey: \"why_now\" },\n];\n\nconst UPDATE_STAKEHOLDER_SCALAR_MUTATIONS: ReadonlyArray<UpdateScalarMutationDefinition> = [\n { optionKey: \"reviewer\", metadataKey: \"reviewer\" },\n { optionKey: \"risk\", metadataKey: \"risk\", transform: (value) => ensureEnum(normalizeRiskInput(value), RISK_VALUES, \"risk\") },\n { optionKey: \"confidence\", metadataKey: \"confidence\", transform: (value) => parseConfidenceInput(value) },\n];\n\nconst UPDATE_ISSUE_SCALAR_MUTATIONS: ReadonlyArray<UpdateScalarMutationDefinition> = [\n { optionKey: \"blockedReason\", metadataKey: \"blocked_reason\" },\n { optionKey: \"unblockNote\", metadataKey: \"unblock_note\" },\n { optionKey: \"reporter\", metadataKey: \"reporter\" },\n {\n optionKey: \"severity\",\n metadataKey: \"severity\",\n transform: (value) => ensureEnum(normalizeSeverityInput(value), ISSUE_SEVERITY_VALUES, \"severity\"),\n },\n { optionKey: \"environment\", metadataKey: \"environment\" },\n { optionKey: \"reproSteps\", metadataKey: \"repro_steps\" },\n { optionKey: \"resolution\", metadataKey: \"resolution\" },\n { optionKey: \"expectedResult\", metadataKey: \"expected_result\" },\n { optionKey: \"actualResult\", metadataKey: \"actual_result\" },\n { optionKey: \"affectedVersion\", metadataKey: \"affected_version\" },\n { optionKey: \"fixedVersion\", metadataKey: \"fixed_version\" },\n { optionKey: \"component\", metadataKey: \"component\" },\n { optionKey: \"regression\", metadataKey: \"regression\", transform: (value) => parseRegressionInput(value) },\n { optionKey: \"customerImpact\", metadataKey: \"customer_impact\" },\n];\n\nfunction applyUpdateScalarMutations(\n definitions: ReadonlyArray<UpdateScalarMutationDefinition>,\n options: UpdateCommandOptions,\n context: UpdateScalarMutationContext,\n): void {\n for (const definition of definitions) {\n const optionValue = options[definition.optionKey];\n const shouldClear = context.clearFrontMatterKeys.has(definition.metadataKey);\n if (optionValue === undefined && !shouldClear) {\n continue;\n }\n if (shouldClear) {\n delete context.metadataRecord[definition.metadataKey];\n context.changedFields.push(definition.metadataKey);\n continue;\n }\n if (typeof optionValue !== \"string\") {\n throw new PmCliError(\n `${commandOptionFlagLabel(\"update\", String(definition.optionKey))} must be a string value`,\n EXIT_CODE.USAGE,\n );\n }\n context.metadataRecord[definition.metadataKey] = definition.transform\n ? definition.transform(optionValue, context)\n : optionValue.trim();\n context.changedFields.push(definition.metadataKey);\n }\n}\n\nasync function resolveStdinUpdateOptions(options: UpdateCommandOptions): Promise<UpdateCommandOptions> {\n const stdinResolver = createStdinTokenResolver();\n return normalizeLegacyNoneUpdateOptions({\n ...options,\n body: await stdinResolver.resolveValue(options.body, \"--body\"),\n dep: await stdinResolver.resolveList(options.dep, \"--dep\"),\n depRemove: await stdinResolver.resolveList(options.depRemove, \"--dep-remove\"),\n comment: await stdinResolver.resolveList(options.comment, \"--comment\"),\n note: await stdinResolver.resolveList(options.note, \"--note\"),\n learning: await stdinResolver.resolveList(options.learning, \"--learning\"),\n file: await stdinResolver.resolveList(options.file, \"--file\"),\n test: await stdinResolver.resolveList(options.test, \"--test\"),\n doc: await stdinResolver.resolveList(options.doc, \"--doc\"),\n reminder: await stdinResolver.resolveList(options.reminder, \"--reminder\"),\n event: await stdinResolver.resolveList(options.event, \"--event\"),\n typeOption: await stdinResolver.resolveList(options.typeOption, \"--type-option\"),\n field: await stdinResolver.resolveList(options.field, \"--field\"),\n });\n}\n\nfunction buildClearCollectionDefinitions(options: UpdateCommandOptions): readonly UpdateClearCollectionDefinition[] {\n return [\n {\n enabled: options.clearDeps || options.replaceDeps,\n optionKey: \"dep\",\n clearFlag: \"--clear-deps\",\n valueFlag: \"--dep\",\n values: options.dep,\n frontMatterKey: \"dependencies\",\n },\n {\n enabled: options.clearComments,\n optionKey: \"comment\",\n clearFlag: \"--clear-comments\",\n valueFlag: \"--comment\",\n values: options.comment,\n frontMatterKey: \"comments\",\n },\n {\n enabled: options.clearNotes,\n optionKey: \"note\",\n clearFlag: \"--clear-notes\",\n valueFlag: \"--note\",\n values: options.note,\n frontMatterKey: \"notes\",\n },\n {\n enabled: options.clearLearnings,\n optionKey: \"learning\",\n clearFlag: \"--clear-learnings\",\n valueFlag: \"--learning\",\n values: options.learning,\n frontMatterKey: \"learnings\",\n },\n {\n enabled: options.clearFiles,\n optionKey: \"file\",\n clearFlag: \"--clear-files\",\n valueFlag: \"--file\",\n values: options.file,\n frontMatterKey: \"files\",\n },\n {\n enabled: options.clearTests || options.replaceTests,\n optionKey: \"test\",\n clearFlag: \"--clear-tests\",\n valueFlag: \"--test\",\n values: options.test,\n frontMatterKey: \"tests\",\n },\n {\n enabled: options.clearDocs,\n optionKey: \"doc\",\n clearFlag: \"--clear-docs\",\n valueFlag: \"--doc\",\n values: options.doc,\n frontMatterKey: \"docs\",\n },\n {\n enabled: options.clearReminders,\n optionKey: \"reminder\",\n clearFlag: \"--clear-reminders\",\n valueFlag: \"--reminder\",\n values: options.reminder,\n frontMatterKey: \"reminders\",\n },\n {\n enabled: options.clearEvents,\n optionKey: \"event\",\n clearFlag: \"--clear-events\",\n valueFlag: \"--event\",\n values: options.event,\n frontMatterKey: \"events\",\n },\n {\n enabled: options.clearTypeOptions,\n optionKey: \"typeOption\",\n clearFlag: \"--clear-type-options\",\n valueFlag: \"--type-option\",\n values: options.typeOption,\n frontMatterKey: \"type_options\",\n },\n ];\n}\n\nfunction validateReplaceOptions(options: UpdateCommandOptions): void {\n if (options.replaceDeps === true && (options.dep === undefined || options.dep.length === 0)) {\n throw new PmCliError(\"--replace-deps requires at least one --dep entry\", EXIT_CODE.USAGE);\n }\n if (options.replaceDeps === true && options.depRemove !== undefined && options.depRemove.length > 0) {\n throw new PmCliError(\"--replace-deps cannot be combined with --dep-remove\", EXIT_CODE.USAGE);\n }\n if (options.replaceTests === true && (options.test === undefined || options.test.length === 0)) {\n throw new PmCliError(\"--replace-tests requires at least one --test entry\", EXIT_CODE.USAGE);\n }\n if (options.replaceTests === true && options.clearTests === true) {\n throw new PmCliError(\"--replace-tests cannot be combined with --clear-tests\", EXIT_CODE.USAGE);\n }\n}\n\nfunction applyClearCollectionDefinitions(params: {\n definitions: readonly UpdateClearCollectionDefinition[];\n options: UpdateCommandOptions;\n clearOptionKeys: Set<string>;\n clearFrontMatterKeys: Set<string>;\n}): void {\n for (const definition of params.definitions) {\n if (!definition.enabled) {\n continue;\n }\n const isReplacement =\n (definition.optionKey === \"dep\" && params.options.replaceDeps === true) ||\n (definition.optionKey === \"test\" && params.options.replaceTests === true);\n if (definition.values && definition.values.length > 0 && !isReplacement) {\n throw new PmCliError(`Cannot combine ${definition.clearFlag} with ${definition.valueFlag}`, EXIT_CODE.USAGE);\n }\n params.clearOptionKeys.add(definition.optionKey);\n params.clearFrontMatterKeys.add(definition.frontMatterKey);\n }\n}\n\nfunction buildScalarOptionPresence(options: UpdateCommandOptions): Record<string, boolean> {\n const presence: Record<string, boolean> = {};\n for (const key of UPDATE_LEGACY_SCALAR_OPTION_KEYS) {\n presence[String(key)] = options[key] !== undefined;\n }\n presence.order = options.order !== undefined || options.rank !== undefined;\n return presence;\n}\n\nfunction rejectUnsetScalarConflicts(options: UpdateCommandOptions, unsetTargets: { optionKeys: Set<string>; frontMatterKeys: Set<string> }): void {\n const scalarOptionPresence = buildScalarOptionPresence(options);\n for (const [optionKey, hasValue] of Object.entries(scalarOptionPresence)) {\n if (!hasValue || !unsetTargets.optionKeys.has(optionKey)) {\n continue;\n }\n const unsetField = UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey) ?? optionKey;\n throw new PmCliError(\n `Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel(\"update\", optionKey)}`,\n EXIT_CODE.USAGE,\n );\n }\n if (!unsetTargets.frontMatterKeys.has(\"tags\")) {\n return;\n }\n if (Array.isArray(options.addTags) && options.addTags.length > 0) {\n throw new PmCliError(\"Cannot combine --unset tags with --add-tags\", EXIT_CODE.USAGE);\n }\n if (Array.isArray(options.removeTags) && options.removeTags.length > 0) {\n throw new PmCliError(\"Cannot combine --unset tags with --remove-tags\", EXIT_CODE.USAGE);\n }\n}\n\nfunction rejectLegacyScalarTokens(options: UpdateCommandOptions): void {\n const assertNoLegacyScalarToken = (value: string | undefined, optionKey: string): void => {\n const unsetField = UPDATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);\n const hint = unsetField ? `Use --unset ${unsetField} to clear this field.` : undefined;\n assertNoLegacyNoneToken(value, commandOptionFlagLabel(\"update\", optionKey), hint);\n };\n for (const key of UPDATE_LEGACY_SCALAR_OPTION_KEYS) {\n assertNoLegacyScalarToken(options[key] as string | undefined, String(key));\n }\n assertNoLegacyScalarToken(options.order ?? options.rank, \"order\");\n assertNoLegacyNoneTokens(options.reminder, \"--reminder\", \"Use --clear-reminders to clear reminders.\");\n assertNoLegacyNoneTokens(options.event, \"--event\", \"Use --clear-events to clear linked events.\");\n}\n\nfunction buildUpdateFieldFlags(options: UpdateCommandOptions, runtimeFieldUpdates: Record<string, unknown>): Record<string, boolean> {\n const flags: Record<string, boolean> = {};\n for (const key of UPDATE_SIMPLE_FIELD_FLAG_KEYS) {\n flags[String(key)] = options[key] !== undefined;\n }\n flags.tags = options.tags !== undefined;\n flags.addTags = Array.isArray(options.addTags) && options.addTags.length > 0;\n flags.removeTags = Array.isArray(options.removeTags) && options.removeTags.length > 0;\n flags.order = options.order !== undefined;\n flags.rank = options.rank !== undefined;\n flags.replaceDeps = options.replaceDeps === true;\n flags.replaceTests = options.replaceTests === true;\n flags.unset = options.unset !== undefined && options.unset.length > 0;\n flags.clearDeps = options.clearDeps === true;\n flags.clearComments = options.clearComments === true;\n flags.clearNotes = options.clearNotes === true;\n flags.clearLearnings = options.clearLearnings === true;\n flags.clearFiles = options.clearFiles === true;\n flags.clearTests = options.clearTests === true;\n flags.clearDocs = options.clearDocs === true;\n flags.clearReminders = options.clearReminders === true;\n flags.clearEvents = options.clearEvents === true;\n flags.clearTypeOptions = options.clearTypeOptions === true;\n flags.runtimeFields = Object.keys(runtimeFieldUpdates).length > 0;\n return flags;\n}\n\nasync function buildNoopUpdateResult(params: {\n pmRoot: string;\n id: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>;\n}): Promise<UpdateResult> {\n const located = await locateItem(\n params.pmRoot,\n params.id,\n params.settings.id_prefix,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n );\n if (!located) {\n throw await buildItemNotFoundError(params.pmRoot, params.id, params.settings.id_prefix, params.typeRegistry.type_to_folder);\n }\n const { document } = await readLocatedItem(located, { schema: params.settings.schema });\n return {\n item: toItemRecord(document.metadata),\n changed_fields: [],\n warnings: [\"noop_no_update_fields\"],\n };\n}\n\nasync function assertUpdateTrackerInitialized(pmRoot: string): Promise<void> {\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}\n\nfunction assertMatchingOrderRank(options: UpdateCommandOptions): void {\n if (options.order !== undefined && options.rank !== undefined && options.order !== options.rank) {\n throw new PmCliError(\"--order and --rank must match when both are provided\", EXIT_CODE.USAGE);\n }\n}\n\nasync function resolveParentReferenceForUpdate(params: {\n id: string;\n options: UpdateCommandOptions;\n unsetTargets: { frontMatterKeys: Set<string> };\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>;\n parentReferencePolicy: Awaited<ReturnType<typeof readSettings>>[\"validation\"][\"parent_reference\"];\n}): Promise<{ resolvedParentValue: string | undefined; warnings: string[] }> {\n if (params.options.parent === undefined || params.unsetTargets.frontMatterKeys.has(\"parent\")) {\n return { resolvedParentValue: undefined, warnings: [] };\n }\n const resolvedParentValue = normalizeParentReferenceValue(params.options.parent);\n assertParentReferenceIsNotSelf(params.id, resolvedParentValue, params.settings.id_prefix);\n const parentLocated = await locateItem(\n params.pmRoot,\n resolvedParentValue,\n params.settings.id_prefix,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n );\n if (parentLocated) {\n return { resolvedParentValue, warnings: [] };\n }\n const normalizedParentId = normalizeItemId(resolvedParentValue, params.settings.id_prefix);\n return {\n resolvedParentValue,\n warnings: validateMissingParentReference(normalizedParentId, params.parentReferencePolicy).warnings,\n };\n}\n\nfunction blockedByResolutionWarnings(resolution: { unresolved?: string }): string[] {\n return resolution.unresolved === undefined ? [] : [`blocked_by_unresolved:${resolution.unresolved}`];\n}\n\nasync function collectWorkflowTransitionWarnings(params: {\n options: UpdateCommandOptions;\n fieldFlags: Record<string, boolean>;\n workflowEnforcement: GovernanceWorkflowEnforcement;\n typeWorkflows: NormalizedTypeWorkflow[];\n statusRegistry: RuntimeStatusRegistry;\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>;\n pmRoot: string;\n id: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n}): Promise<string[]> {\n if (params.workflowEnforcement === \"off\" || params.typeWorkflows.length === 0 || !params.fieldFlags.status || params.options.status === undefined) {\n return [];\n }\n const located = await locateItem(\n params.pmRoot,\n params.id,\n params.settings.id_prefix,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n );\n if (!located) {\n throw await buildItemNotFoundError(params.pmRoot, params.id, params.settings.id_prefix, params.typeRegistry.type_to_folder);\n }\n const { document } = await readLocatedItem(located, { schema: params.settings.schema });\n const effectiveType =\n params.options.type !== undefined\n ? (resolveTypeName(params.options.type, params.typeRegistry) ?? params.options.type)\n : (document.metadata?.type ?? \"\");\n const warning = enforceTypeWorkflowTransition({\n enforcement: params.workflowEnforcement,\n typeWorkflows: params.typeWorkflows,\n statusRegistry: params.statusRegistry,\n typeName: effectiveType,\n fromStatus: document.metadata?.status ?? \"\",\n toStatus: params.options.status,\n });\n return warning ? [warning] : [];\n}\n\nasync function routeCloseStatusUpdate(context: CloseRouteContext): Promise<UpdateResult | undefined> {\n if (!context.fieldFlags.status) {\n return undefined;\n }\n const targetStatus = normalizeStatusInput(context.options.status as ItemStatus, context.statusRegistry);\n if (targetStatus !== context.statusRegistry.close_status) {\n return undefined;\n }\n\n const otherFieldKeys = Object.entries(context.fieldFlags)\n .filter(([key, value]) => value && key !== \"status\" && key !== \"closeReason\")\n .map(([key]) => key);\n const routeWarnings: string[] = [];\n let preChangedFields: string[] = [];\n if (otherFieldKeys.length > 0) {\n const preUpdate = await runUpdate(\n context.id,\n { ...context.options, status: undefined, closeReason: undefined, message: undefined },\n context.global,\n );\n preChangedFields = preUpdate.changed_fields;\n routeWarnings.push(...preUpdate.warnings);\n }\n\n const explicitReason = typeof context.options.closeReason === \"string\" ? context.options.closeReason.trim() : \"\";\n const fallbackMessage = typeof context.options.message === \"string\" ? context.options.message.trim() : \"\";\n const closeReason = explicitReason || fallbackMessage || \"Closed via pm update\";\n const closeResult = await runClose(\n context.id,\n closeReason,\n {\n author: context.options.author,\n message: context.options.message,\n force: context.options.force,\n },\n context.global,\n );\n\n const warnings = [\n ...context.workflowTransitionWarnings,\n ...routeWarnings,\n ...closeResult.warnings,\n \"auto_routed_from_update_to_close\",\n ];\n if (explicitReason.length === 0 && fallbackMessage.length === 0) {\n warnings.push(\"close_reason_defaulted\");\n }\n return {\n item: closeResult.item,\n changed_fields: [...preChangedFields, ...closeResult.changed_fields],\n warnings,\n };\n}\n\nfunction applySimpleItemMutations(\n document: ItemDocument,\n options: UpdateCommandOptions,\n statusRegistry: RuntimeStatusRegistry,\n changedFields: string[],\n): string {\n if (options.title !== undefined) {\n document.metadata.title = options.title;\n changedFields.push(\"title\");\n }\n if (options.description !== undefined) {\n document.metadata.description = options.description;\n changedFields.push(\"description\");\n }\n if (options.body !== undefined) {\n document.body = options.body;\n changedFields.push(\"body\");\n }\n return normalizeStatusInput(document.metadata.status, statusRegistry) ?? document.metadata.status;\n}\n\nfunction hasClosedAt(metadata: ItemDocument[\"metadata\"]): boolean {\n return metadata.closed_at !== undefined && metadata.closed_at !== null;\n}\n\nfunction hasClosedAtProperty(metadata: ItemDocument[\"metadata\"]): boolean {\n return metadata.closed_at !== undefined;\n}\n\nfunction applyStatusAndCloseReasonMutations(\n document: ItemDocument,\n context: Pick<UpdateMutationContext, \"options\" | \"statusRegistry\" | \"clearFrontMatterKeys\" | \"nowIso\">,\n previousStatusNormalized: string,\n changedFields: string[],\n): void {\n if (context.options.status !== undefined) {\n const status = parseStatus(context.options.status, context.statusRegistry);\n document.metadata.status = status;\n changedFields.push(\"status\");\n if (status === context.statusRegistry.close_status && !hasClosedAt(document.metadata)) {\n document.metadata.closed_at = context.nowIso;\n changedFields.push(\"closed_at\");\n } else if (\n previousStatusNormalized === context.statusRegistry.close_status &&\n status !== context.statusRegistry.close_status &&\n hasClosedAtProperty(document.metadata)\n ) {\n delete document.metadata.closed_at;\n changedFields.push(\"closed_at\");\n }\n }\n if (context.options.closeReason !== undefined || context.clearFrontMatterKeys.has(\"close_reason\")) {\n if (context.clearFrontMatterKeys.has(\"close_reason\")) {\n delete document.metadata.close_reason;\n } else {\n const closeReason = context.options.closeReason?.trim() ?? \"\";\n if (closeReason.length === 0) {\n throw new PmCliError(\"--close-reason must not be empty\", EXIT_CODE.USAGE);\n }\n document.metadata.close_reason = closeReason;\n }\n changedFields.push(\"close_reason\");\n return;\n }\n if (\n context.options.status !== undefined &&\n previousStatusNormalized === context.statusRegistry.close_status &&\n document.metadata.status !== context.statusRegistry.canceled_status &&\n document.metadata.close_reason !== undefined\n ) {\n delete document.metadata.close_reason;\n changedFields.push(\"close_reason\");\n }\n}\n\nfunction applyPriorityTypeAndOptions(\n document: ItemDocument,\n context: UpdateMutationContext,\n changedFields: string[],\n): string {\n let activeTypeName = resolveTypeName(document.metadata.type, context.typeRegistry) ?? document.metadata.type;\n if (context.options.priority !== undefined) {\n document.metadata.priority = ensurePriority(context.options.priority);\n changedFields.push(\"priority\");\n }\n if (context.options.type !== undefined) {\n const resolvedTypeName = resolveTypeName(context.options.type, context.typeRegistry);\n if (!resolvedTypeName) {\n throw new PmCliError(\n buildInvalidTypeError(context.options.type, context.typeRegistry.types, resolveItemTypesFilePath(context.pmRoot, context.settings.schema)),\n EXIT_CODE.USAGE,\n );\n }\n document.metadata.type = resolvedTypeName;\n activeTypeName = resolvedTypeName;\n changedFields.push(\"type\");\n }\n enforceUpdateOptionsByType(\n activeTypeName,\n context.options,\n context.typeRegistry,\n context.runtimeFieldRegistry,\n context.extensionFieldNames,\n );\n applyTypeOptionMutation(document, context, activeTypeName, changedFields);\n return activeTypeName;\n}\n\nfunction applyTypeOptionMutation(\n document: ItemDocument,\n context: UpdateMutationContext,\n activeTypeName: string,\n changedFields: string[],\n): void {\n if (context.options.typeOption !== undefined || context.clearFrontMatterKeys.has(\"type_options\")) {\n if (context.clearFrontMatterKeys.has(\"type_options\")) {\n delete document.metadata.type_options;\n } else {\n const parsedTypeOptions = parseTypeOptionEntries(context.options.typeOption ?? []);\n const validation = validateTypeOptions(activeTypeName, parsedTypeOptions, context.typeRegistry);\n if (validation.errors.length > 0) {\n throw new PmCliError(validation.errors.join(\"; \"), EXIT_CODE.USAGE);\n }\n document.metadata.type_options = validation.normalized;\n }\n changedFields.push(\"type_options\");\n return;\n }\n if (context.options.type === undefined || document.metadata.type_options === undefined) {\n return;\n }\n const validation = validateTypeOptions(activeTypeName, document.metadata.type_options, context.typeRegistry);\n if (validation.errors.length > 0) {\n throw new PmCliError(\n `Current type options are incompatible with type \"${activeTypeName}\". ${validation.errors.join(\"; \")}. Use --clear-type-options to clear them.`,\n EXIT_CODE.USAGE,\n );\n }\n document.metadata.type_options = validation.normalized;\n}\n\nfunction applyDependencyMutations(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n if (\n context.options.dep === undefined &&\n context.options.depRemove === undefined &&\n !context.clearFrontMatterKeys.has(\"dependencies\")\n ) {\n return;\n }\n let nextDependencies = context.clearFrontMatterKeys.has(\"dependencies\") ? [] : [...(document.metadata.dependencies ?? [])];\n if (context.dependencyUpdates.additions.length > 0) {\n const seen = new Set(nextDependencies.map((entry) => dependencyKey(entry)));\n for (const addition of context.dependencyUpdates.additions) {\n const key = dependencyKey(addition);\n if (!seen.has(key)) {\n nextDependencies.push(addition);\n seen.add(key);\n }\n }\n }\n if (context.dependencyRemovals.length > 0) {\n nextDependencies = nextDependencies.filter(\n (entry) => !context.dependencyRemovals.some((selector) => matchesDependencySelector(entry, selector)),\n );\n }\n if (nextDependencies.length === 0) {\n delete document.metadata.dependencies;\n } else {\n document.metadata.dependencies = nextDependencies;\n }\n changedFields.push(\"dependencies\");\n}\n\nfunction applyLogCollectionMutations(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n applyLogCollectionMutation(document, \"comments\", context.options.comment, context.commentUpdates.values as Comment[] | undefined, context.clearFrontMatterKeys, changedFields);\n applyLogCollectionMutation(document, \"notes\", context.options.note, context.noteUpdates.values as LogNote[] | undefined, context.clearFrontMatterKeys, changedFields);\n applyLogCollectionMutation(document, \"learnings\", context.options.learning, context.learningUpdates.values as LogNote[] | undefined, context.clearFrontMatterKeys, changedFields);\n}\n\nfunction applyLogCollectionMutation(\n document: ItemDocument,\n key: \"comments\" | \"notes\" | \"learnings\",\n optionValue: string[] | undefined,\n values: Comment[] | LogNote[] | undefined,\n clearFrontMatterKeys: ReadonlySet<string>,\n changedFields: string[],\n): void {\n if (optionValue === undefined && !clearFrontMatterKeys.has(key)) {\n return;\n }\n if (clearFrontMatterKeys.has(key) || !values || values.length === 0) {\n delete document.metadata[key];\n } else {\n document.metadata[key] = [...(document.metadata[key] ?? []), ...values] as never;\n }\n changedFields.push(key);\n}\n\nfunction applyEvidenceCollectionMutations(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n applyUniqueLinkedCollectionMutation(document, \"files\", context.options.file, context.fileUpdates.values, fileKey, context.clearFrontMatterKeys, changedFields);\n applyTestCollectionMutation(document, context, changedFields);\n applyUniqueLinkedCollectionMutation(document, \"docs\", context.options.doc, context.docUpdates.values, docKey, context.clearFrontMatterKeys, changedFields);\n}\n\nfunction applyUniqueLinkedCollectionMutation<T extends LinkedFile | LinkedDoc>(\n document: ItemDocument,\n key: \"files\" | \"docs\",\n optionValue: string[] | undefined,\n values: T[] | undefined,\n keyOf: (value: T) => string,\n clearFrontMatterKeys: ReadonlySet<string>,\n changedFields: string[],\n): void {\n if (optionValue === undefined && !clearFrontMatterKeys.has(key)) {\n return;\n }\n if (clearFrontMatterKeys.has(key) || !values || values.length === 0) {\n delete document.metadata[key];\n } else {\n const next = [...((document.metadata[key] as T[] | undefined) ?? [])];\n const seen = new Set(next.map((entry) => keyOf(entry)));\n for (const entry of values) {\n const keyValue = keyOf(entry);\n if (!seen.has(keyValue)) {\n next.push(entry);\n seen.add(keyValue);\n }\n }\n document.metadata[key] = next as never;\n }\n changedFields.push(key);\n}\n\nfunction applyTestCollectionMutation(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n if (context.options.test === undefined && !context.clearFrontMatterKeys.has(\"tests\")) {\n return;\n }\n if (context.clearFrontMatterKeys.has(\"tests\") && context.options.replaceTests === true) {\n document.metadata.tests = dedupeLinkedTests(context.testUpdates.values) ?? [];\n } else if (context.clearFrontMatterKeys.has(\"tests\") || !context.testUpdates.values || context.testUpdates.values.length === 0) {\n delete document.metadata.tests;\n } else {\n document.metadata.tests = dedupeLinkedTests([...(document.metadata.tests ?? []), ...context.testUpdates.values]);\n }\n if (document.metadata.tests !== undefined && document.metadata.tests.length === 0) {\n delete document.metadata.tests;\n }\n changedFields.push(\"tests\");\n}\n\nfunction dedupeLinkedTests(values: LinkedTest[] | undefined): LinkedTest[] | undefined {\n if (!values || values.length === 0) {\n return undefined;\n }\n const next: LinkedTest[] = [];\n const seen = new Set<string>();\n for (const entry of values) {\n const key = testKey(entry);\n if (!seen.has(key)) {\n next.push(entry);\n seen.add(key);\n }\n }\n return next;\n}\n\nfunction applyTagsAndPlanningMutations(\n document: ItemDocument,\n context: UpdateMutationContext,\n scalarMutationContext: UpdateScalarMutationContext,\n): void {\n const addTagsValues = context.options.addTags;\n const removeTagsValues = context.options.removeTags;\n const hasAdditiveTagMutation =\n (Array.isArray(addTagsValues) && addTagsValues.length > 0) ||\n (Array.isArray(removeTagsValues) && removeTagsValues.length > 0);\n if (context.options.tags !== undefined || context.clearFrontMatterKeys.has(\"tags\") || hasAdditiveTagMutation) {\n const baseTags = context.clearFrontMatterKeys.has(\"tags\")\n ? []\n : context.options.tags !== undefined\n ? parseTags(context.options.tags)\n : Array.isArray(document.metadata.tags)\n ? [...(document.metadata.tags as string[])]\n : [];\n document.metadata.tags = applyTagRemovals(mergeAdditiveTags(baseTags, addTagsValues), removeTagsValues);\n scalarMutationContext.changedFields.push(\"tags\");\n }\n applyUpdateScalarMutations(UPDATE_POST_TAG_SCALAR_MUTATIONS, context.options, scalarMutationContext);\n applyOrderMutation(document, context, scalarMutationContext.changedFields);\n}\n\nfunction applyOrderMutation(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n const orderRaw = context.options.order ?? context.options.rank;\n if (orderRaw === undefined && !context.clearFrontMatterKeys.has(\"order\")) {\n return;\n }\n if (context.clearFrontMatterKeys.has(\"order\")) {\n delete document.metadata.order;\n } else {\n const parsedOrder = parseOptionalNumber(orderRaw ?? \"\", \"order\");\n if (!Number.isInteger(parsedOrder)) {\n throw new PmCliError(\"Order must be an integer\", EXIT_CODE.USAGE);\n }\n document.metadata.order = parsedOrder;\n }\n changedFields.push(\"order\");\n}\n\nfunction applyOwnershipAndIssueMutations(\n document: ItemDocument,\n context: UpdateMutationContext,\n scalarMutationContext: UpdateScalarMutationContext,\n warnings: string[],\n): void {\n applyAssigneeMutation(document, context, scalarMutationContext.changedFields);\n applyParentMutation(document, context, scalarMutationContext.changedFields);\n applyUpdateScalarMutations(UPDATE_STAKEHOLDER_SCALAR_MUTATIONS, context.options, scalarMutationContext);\n applySprintReleaseMutation(document, context, \"sprint\", warnings, scalarMutationContext.changedFields);\n applySprintReleaseMutation(document, context, \"release\", warnings, scalarMutationContext.changedFields);\n applyBlockedByMutation(document, context, scalarMutationContext.changedFields);\n applyUpdateScalarMutations(UPDATE_ISSUE_SCALAR_MUTATIONS, context.options, scalarMutationContext);\n}\n\nfunction applyAssigneeMutation(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n if (context.options.assignee === undefined && !context.clearFrontMatterKeys.has(\"assignee\")) {\n return;\n }\n if (context.clearFrontMatterKeys.has(\"assignee\")) {\n delete document.metadata.assignee;\n } else {\n const assignee = context.options.assignee?.trim() ?? \"\";\n if (assignee === \"\") {\n throw new PmCliError(\"--assignee must not be empty. Use --unset assignee to clear it.\", EXIT_CODE.USAGE);\n }\n document.metadata.assignee = assignee;\n }\n changedFields.push(\"assignee\");\n}\n\nfunction applyParentMutation(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n if (context.options.parent === undefined && !context.clearFrontMatterKeys.has(\"parent\")) {\n return;\n }\n if (context.clearFrontMatterKeys.has(\"parent\")) {\n delete document.metadata.parent;\n } else {\n document.metadata.parent = context.resolvedParentValue ?? \"\";\n }\n changedFields.push(\"parent\");\n}\n\nfunction applySprintReleaseMutation(\n document: ItemDocument,\n context: UpdateMutationContext,\n key: \"sprint\" | \"release\",\n warnings: string[],\n changedFields: string[],\n): void {\n if (context.options[key] === undefined && !context.clearFrontMatterKeys.has(key)) {\n return;\n }\n if (context.clearFrontMatterKeys.has(key)) {\n delete document.metadata[key];\n } else {\n const validation = validateSprintOrReleaseValue(key, context.options[key] ?? \"\", context.settings.validation.sprint_release_format);\n document.metadata[key] = validation.value;\n warnings.push(...validation.warnings);\n }\n changedFields.push(key);\n}\n\nfunction applyBlockedByMutation(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n if (context.options.blockedBy === undefined && !context.clearFrontMatterKeys.has(\"blocked_by\")) {\n return;\n }\n if (context.clearFrontMatterKeys.has(\"blocked_by\")) {\n delete document.metadata.blocked_by;\n } else {\n document.metadata.blocked_by = context.options.blockedBy?.trim() ?? \"\";\n }\n changedFields.push(\"blocked_by\");\n applyBlockedByDependencyEdge(\n document.metadata,\n context.resolvedBlockedByDependencyId,\n context.nowIso,\n context.author,\n changedFields,\n );\n}\n\nfunction applyScheduleMutations(document: ItemDocument, context: UpdateMutationContext, changedFields: string[]): void {\n if (context.options.reminder !== undefined || context.clearFrontMatterKeys.has(\"reminders\")) {\n if (context.clearFrontMatterKeys.has(\"reminders\")) {\n delete document.metadata.reminders;\n } else {\n document.metadata.reminders = parseReminderEntries(context.options.reminder ?? [], context.nowValue, { valueMode: \"trimmed\" });\n }\n changedFields.push(\"reminders\");\n }\n if (context.options.event !== undefined || context.clearFrontMatterKeys.has(\"events\")) {\n if (context.clearFrontMatterKeys.has(\"events\")) {\n delete document.metadata.events;\n } else {\n document.metadata.events = parseEventEntries(context.options.event ?? [], context.nowValue, {\n allDayEmptyGuard: \"truthy\",\n recurrenceEmptyNumericGuard: \"truthy\",\n });\n }\n changedFields.push(\"events\");\n }\n}\n\nfunction applyRuntimeAndRegisteredFieldMutations(\n metadataRecord: Record<string, unknown>,\n context: UpdateMutationContext,\n changedFields: string[],\n): void {\n clearDynamicFields(metadataRecord, context.runtimeFieldRegistry.definitions.map((definition) => definition.metadata_key), context.clearFrontMatterKeys, changedFields);\n clearDynamicFields(metadataRecord, context.extensionFieldNames, context.clearFrontMatterKeys, changedFields);\n for (const [fieldKey, fieldValue] of Object.entries(context.runtimeFieldUpdates)) {\n if (context.clearFrontMatterKeys.has(fieldKey)) {\n const fieldFlag = fieldKey.replaceAll(\"_\", \"-\");\n const definition = context.runtimeFieldRegistry.definitions.find((candidate) => candidate.metadata_key === fieldKey);\n const updateFlag = definition?.cli_flag ?? fieldFlag;\n throw new PmCliError(\n `Cannot combine --unset ${fieldFlag} with --${updateFlag}`,\n EXIT_CODE.USAGE,\n );\n }\n if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {\n continue;\n }\n metadataRecord[fieldKey] = fieldValue;\n changedFields.push(fieldKey);\n }\n\n const registeredItemFieldUpdates = parseRegisteredItemFieldAssignments(context.options.field, context.extensionRegistrations);\n for (const fieldKey of Object.keys(registeredItemFieldUpdates)) {\n if (context.clearFrontMatterKeys.has(fieldKey)) {\n throw new PmCliError(\n `Cannot combine --unset ${fieldKey.replaceAll(\"_\", \"-\")} with --field ${fieldKey}=...`,\n EXIT_CODE.USAGE,\n );\n }\n }\n for (const [fieldKey, fieldValue] of Object.entries(registeredItemFieldUpdates)) {\n if (!stableValueEquals(metadataRecord[fieldKey], fieldValue)) {\n metadataRecord[fieldKey] = fieldValue;\n changedFields.push(fieldKey);\n }\n }\n}\n\nfunction clearDynamicFields(\n metadataRecord: Record<string, unknown>,\n fieldKeys: readonly string[],\n clearFrontMatterKeys: ReadonlySet<string>,\n changedFields: string[],\n): void {\n for (const fieldKey of fieldKeys) {\n if (!clearFrontMatterKeys.has(fieldKey) || metadataRecord[fieldKey] === undefined) {\n continue;\n }\n delete metadataRecord[fieldKey];\n changedFields.push(fieldKey);\n }\n}\n\nfunction mutateUpdateDocument(document: ItemDocument, context: UpdateMutationContext): { changedFields: string[]; warnings: string[] } {\n const changedFields: string[] = [];\n const warnings: string[] = [];\n const previousStatusNormalized = applySimpleItemMutations(document, context.options, context.statusRegistry, changedFields);\n const metadataRecord = toItemRecord(document.metadata);\n const scalarMutationContext: UpdateScalarMutationContext = {\n metadataRecord,\n clearFrontMatterKeys: context.clearFrontMatterKeys,\n changedFields,\n nowValue: context.nowValue,\n };\n\n applyStatusAndCloseReasonMutations(document, context, previousStatusNormalized, changedFields);\n applyPriorityTypeAndOptions(document, context, changedFields);\n applyDependencyMutations(document, context, changedFields);\n applyLogCollectionMutations(document, context, changedFields);\n applyEvidenceCollectionMutations(document, context, changedFields);\n applyTagsAndPlanningMutations(document, context, scalarMutationContext);\n applyOwnershipAndIssueMutations(document, context, scalarMutationContext, warnings);\n if (\n normalizeStatusInput(document.metadata.status, context.statusRegistry) === context.statusRegistry.canceled_status &&\n document.metadata.assignee !== undefined\n ) {\n delete document.metadata.assignee;\n if (!changedFields.includes(\"assignee\")) {\n changedFields.push(\"assignee\");\n }\n }\n applyScheduleMutations(document, context, changedFields);\n applyRuntimeAndRegisteredFieldMutations(metadataRecord, context, changedFields);\n try {\n applyRegisteredItemFieldDefaultsAndValidation(\n metadataRecord,\n context.extensionRegistrations,\n { skipDefaultFields: context.clearFrontMatterKeys },\n );\n } catch (error: unknown) {\n throw new PmCliError(error instanceof Error ? error.message : \"Invalid extension item field values\", EXIT_CODE.USAGE);\n }\n return { changedFields, warnings };\n}\n\n/**\n * Implements run update for the public runtime surface of this module.\n */\nexport async function runUpdate(id: string, options: UpdateCommandOptions, global: GlobalOptions): Promise<UpdateResult> {\n options = await resolveStdinUpdateOptions(options);\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await assertUpdateTrackerInitialized(pmRoot);\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);\n const extensionRegistrations = getActiveExtensionRegistrations();\n const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);\n const typeRegistry = resolveItemTypeRegistry(settings, extensionRegistrations);\n // Per-type allowed-transition enforcement is read RAW (not preset-derived) so\n // existing projects are unaffected when unset; defaults to \"off\".\n const workflowEnforcement: GovernanceWorkflowEnforcement = settings.governance.workflow_enforcement ?? \"off\";\n const typeWorkflows = workflowEnforcement === \"off\" ? [] : resolveTypeWorkflows(settings.schema);\n const parentReferencePolicy = settings.validation.parent_reference;\n const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry, extensionFieldNames);\n const clearOptionKeys = new Set<string>(unsetTargets.optionKeys);\n const clearFrontMatterKeys = new Set<string>(unsetTargets.frontMatterKeys);\n\n validateReplaceOptions(options);\n applyClearCollectionDefinitions({\n definitions: buildClearCollectionDefinitions(options),\n options,\n clearOptionKeys,\n clearFrontMatterKeys,\n });\n enforceAllowAuditUpdateScope(id, options, clearFrontMatterKeys);\n\n rejectUnsetScalarConflicts(options, unsetTargets);\n rejectLegacyScalarTokens(options);\n\n const author = toAuthor(options.author, settings.author_default);\n const nowValue = new Date();\n const nowIso = nowValue.toISOString();\n const dependencyUpdates = parseDependencyAdditions(options.dep, settings.id_prefix, nowIso);\n const dependencyRemovals = parseDependencyRemovals(options.depRemove, settings.id_prefix);\n const parsedCommentUpdates = parseLogSeed(\"--comment\", options.comment, nowIso, author);\n const commentUpdates = options.allowAuditUpdate === true && parsedCommentUpdates.values\n ? {\n ...parsedCommentUpdates,\n values: parsedCommentUpdates.values.map((entry) => ({ ...entry, author })),\n }\n : parsedCommentUpdates;\n const noteUpdates = parseLogSeed(\"--note\", options.note, nowIso, author);\n const learningUpdates = parseLogSeed(\"--learning\", options.learning, nowIso, author);\n const fileUpdates = parseFiles(options.file);\n const testUpdates = parseTests(options.test);\n const docUpdates = parseDocs(options.doc);\n const workflowTransitionWarnings: string[] = [];\n const parentReference = await resolveParentReferenceForUpdate({\n id,\n options,\n unsetTargets,\n pmRoot,\n settings,\n typeRegistry,\n parentReferencePolicy,\n });\n\n // pm-kyd6: resolve the --blocked-by target up front (async) so the sync\n // mutate callback can mirror create.ts and add a `blocked_by` dependency edge.\n const blockedByResolution = await resolveBlockedByDependencyTarget(\n options.blockedBy,\n clearFrontMatterKeys.has(\"blocked_by\"),\n pmRoot,\n settings.id_prefix,\n settings.item_format,\n typeRegistry.type_to_folder,\n );\n const resolvedBlockedByDependencyId = blockedByResolution.id;\n const parentReferenceWarnings = [...parentReference.warnings, ...blockedByResolutionWarnings(blockedByResolution)];\n\n const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(\n options as Record<string, unknown>,\n runtimeFieldRegistry,\n options.runtimeFieldCommands,\n );\n const fieldFlags = buildUpdateFieldFlags(options, runtimeFieldUpdates);\n const changedFlags = Object.values(fieldFlags).some(Boolean);\n\n if (!changedFlags) {\n return buildNoopUpdateResult({ pmRoot, id, settings, typeRegistry });\n }\n\n workflowTransitionWarnings.push(...await collectWorkflowTransitionWarnings({\n options,\n fieldFlags,\n workflowEnforcement,\n typeWorkflows,\n statusRegistry,\n typeRegistry,\n pmRoot,\n id,\n settings,\n }));\n const routedClose = await routeCloseStatusUpdate({\n options,\n fieldFlags,\n statusRegistry,\n workflowTransitionWarnings,\n global,\n id,\n });\n if (routedClose) {\n return routedClose;\n }\n assertMatchingOrderRank(options);\n\n const result = await mutateItem({\n pmRoot,\n settings,\n typeToFolder: typeRegistry.type_to_folder,\n id,\n op: options.allowAuditUpdate === true || options.allowAuditDepUpdate === true ? \"update_audit\" : \"update\",\n author,\n message: options.message,\n force: options.force,\n bypassAssigneeConflict: options.allowAuditUpdate === true || options.allowAuditDepUpdate === true,\n extensionFieldNames,\n mutate(document) {\n return mutateUpdateDocument(document, {\n options,\n settings,\n typeRegistry,\n statusRegistry,\n runtimeFieldRegistry,\n extensionRegistrations,\n extensionFieldNames,\n clearFrontMatterKeys,\n dependencyUpdates,\n dependencyRemovals,\n commentUpdates,\n noteUpdates,\n learningUpdates,\n fileUpdates,\n testUpdates,\n docUpdates,\n resolvedParentValue: parentReference.resolvedParentValue,\n resolvedBlockedByDependencyId,\n runtimeFieldUpdates,\n nowValue,\n nowIso,\n author,\n pmRoot,\n });\n },\n });\n\n return {\n item: toItemRecord(result.item),\n changed_fields: result.changedFields,\n warnings: [...workflowTransitionWarnings, ...parentReferenceWarnings, ...result.warnings],\n ...(options.allowAuditUpdate === true || options.allowAuditDepUpdate === true ? { audit_update: true } : {}),\n };\n}\n\n/* c8 ignore stop */\nexport const _testOnlyUpdateCommand = {\n applyStatusAndCloseReasonMutations,\n collectProvidedUpdatePolicyOptions,\n buildAuditScopeRestrictedOptionsError,\n enforceAllowAuditUpdateScope,\n enforceTypeWorkflowTransition,\n matchesDependencySelector,\n normalizeLegacyNoneUpdateOptions,\n normalizeUpdatePolicyOptionKey,\n parseDependencyAdditions,\n parseDependencyRemovals,\n parseUpdateUnsetTargets,\n reconcileBlockedByDependency,\n resolveRuntimeUnsetDefinition: (token: string, registry: RuntimeFieldRegistry | undefined) =>\n resolveRuntimeUnsetFieldDefinition(token, \"update\", registry),\n};\n"],"names":["disallowedFlags","validation"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgKA,IAAM,iCAAyE;EAC7E,GAAG;EACH,EAAE,WAAW,gBAAgB,SAAS,CAAC,gBAAgB,cAAc,GAAG,WAAW,eAAe,gBAAgB,eAAc;EAChI,GAAG;EACH,GAAG;;AAGL,IAAM,0BAAmE,MAAK;AAC5E,QAAM,MAAM,oBAAI,IAAG;AACnB,aAAW,cAAc,gCAAgC;AACvD,eAAW,SAAS,WAAW,SAAS;AACtC,UAAI,IAAI,OAAO;QACb,WAAW,WAAW;QACtB,gBAAgB,WAAW;OAC5B;IACH;EACF;AACA,SAAO;AACT,GAAE;AAEF,IAAM,uCAAuC,IAAI,IAC/C,+BAA+B,IAAI,CAAC,eAAe,CAAC,WAAW,WAAW,WAAW,SAAS,CAAC,CAAC;AAGlG,IAAM,0CAA0C,+BAA+B,IAAI,CAAC,eAAe,WAAW,SAAS,EACpH,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC,EAC/C,KAAK,IAAI;AAEZ,IAAM,kDAAkD,oBAAI,IAAY;EACtE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACD;AAED,SAAS,SAAS,WAA+B,eAAqB;AACpE,QAAM,WAAW,aAAa,QAAQ,IAAI,aAAa;AACvD,QAAM,UAAU,SAAS,KAAI;AAC7B,SAAO,WAAW;AACpB;AAEA,IAAM,4CAAiH;EACrH,EAAE,WAAW,OAAO,cAAc,aAAa,WAAW,SAAS,WAAW,gBAAgB,gBAAgB,cAAa;EAC3H,EAAE,WAAW,WAAW,cAAc,iBAAiB,WAAW,aAAa,WAAW,mBAAkB;EAC5G,EAAE,WAAW,QAAQ,cAAc,cAAc,WAAW,UAAU,WAAW,gBAAe;EAChG,EAAE,WAAW,YAAY,cAAc,kBAAkB,WAAW,cAAc,WAAW,oBAAmB;EAChH,EAAE,WAAW,QAAQ,cAAc,cAAc,WAAW,UAAU,WAAW,gBAAe;EAChG,EAAE,WAAW,QAAQ,cAAc,cAAc,WAAW,UAAU,WAAW,iBAAiB,gBAAgB,eAAc;EAChI,EAAE,WAAW,OAAO,cAAc,aAAa,WAAW,SAAS,WAAW,eAAc;EAC5F,EAAE,WAAW,YAAY,cAAc,kBAAkB,WAAW,cAAc,WAAW,oBAAmB;EAChH,EAAE,WAAW,SAAS,cAAc,eAAe,WAAW,WAAW,WAAW,iBAAgB;EACpG,EAAE,WAAW,cAAc,cAAc,oBAAoB,WAAW,iBAAiB,WAAW,uBAAsB;;AAG5H,SAAS,iCAAiC,SAA6B;AACrE,QAAM,aAAmC;IACvC,GAAG;IACH,OAAO,QAAQ,QAAQ,CAAC,GAAG,QAAQ,KAAK,IAAI;;AAG9C,QAAM,oBAAoB,CAAC,UAAuB;AAChD,UAAM,UAAU,WAAW,QAAQ,CAAC,GAAG,WAAW,KAAK,IAAI,CAAA;AAC3D,QAAI,CAAC,QAAQ,SAAS,KAAK,GAAG;AAC5B,cAAQ,KAAK,KAAK;IACpB;AACA,eAAW,QAAQ;EACrB;AAGA,QAAM,mBAAmB,oBAAI,IAAY,CAAC,GAAG,qCAAqC,KAAI,GAAI,MAAM,CAAC;AACjG,aAAW,aAAa,kBAAkB;AACxC,UAAM,YAAY,WAAW,SAAS;AACtC,QAAI,OAAO,cAAc,YAAY,CAAC,kBAAkB,SAAS,GAAG;AAClE;IACF;AAEA,UAAM,iBAAiB,cAAc,SAAS,UAAW,qCAAqC,IAAI,SAAS,KAAK;AAChH,sBAAkB,cAAc;AAChC,eAAW,SAAS,IAAI;EAE1B;AAEA,SAAO,qCAAqC,YAAY,yCAAyC;AACnG;AAEA,SAAS,wBACP,KACA,sBACA,sBAAyC,CAAA,GAAE;AAE3C,SAAO,yBAAyB;IAC9B;IACA,iBAAiB;IACjB,mBAAmB,CAAC,YAAW;AAC/B,YAAM,qBAAqB,oBAAoB,KAAK,CAAC,cAAa;AAChE,cAAM,sBAAsB,UAAU,YAAW;AACjD,eACE,wBAAwB,WACxB,oBAAoB,WAAW,KAAK,GAAG,MAAM,WAC7C,oBAAoB,WAAW,KAAK,GAAG,MAAM;MAEjD,CAAC;AACD,YAAM,aAAa,uBAAuB,IAAI,OAAO,KACnD,mCAAmC,SAAS,UAAU,oBAAoB,MACzE,qBAAqB,EAAE,WAAW,SAAS,gBAAgB,mBAAkB,IAAK;AACrF,aAAO;IACP;GACD;AACH;AAOA,IAAM,qCAAkF,oBAAI,IAAI;EAC9F,CAAC,aAAa,CAAC,OAAe,eAAe,EAAE,uCAAuC;EACtF,CAAC,UAAU,CAAC,OAAe,YAAY,EAAE,wDAAwD;EACjG,CAAC,SAAS,CAAC,OAAe,WAAW,EAAE,wDAAwD;CAChG;AAED,SAAS,sCAAsC,QAO9C;AAGC,QAAM,sBAAsB,OAAO,gBAChC,QAAQ,CAAC,SAAQ;AAChB,UAAM,cAAc,mCAAmC,IAAI,IAAI;AAC/D,WAAO,cAAc,CAAC,YAAY,OAAO,EAAE,CAAC,IAAI,CAAA;EAClD,CAAC;AACH,QAAM,mBAAmB,OAAO,gBAC7B,QAAQ,CAAC,SAAQ;AAChB,UAAM,cAAc,mCAAmC,IAAI,IAAI;AAC/D,WAAO,cAAc,CAAC,WAAW,IAAI,UAAU,YAAY,OAAO,EAAE,CAAC,EAAE,IAAI,CAAA;EAC7E,CAAC;AACH,SAAO,IAAI,WAAW,OAAO,SAAS,UAAU,OAAO;IACrD,MAAM,OAAO;IACb,UAAU,OAAO;IACjB,KAAK,OAAO;IACZ,GAAI,oBAAoB,SAAS,IAAI,EAAE,UAAU,oBAAmB,IAAK,CAAA;IACzE,WAAW;MACT,mBAAmB,OAAO,gBAAgB,KAAK,IAAI,CAAC;MACpD,GAAG;;GAEN;AACH;AAEA,SAAS,6BAA6B,IAAY,SAA+B,sBAAiC;AAChH,QAAM,mBAAmB,QAAQ,qBAAqB;AACtD,QAAM,sBAAsB,QAAQ,wBAAwB;AAC5D,MAAI,CAAC,oBAAoB,CAAC,qBAAqB;AAC7C;EACF;AACA,MAAI,oBAAoB,qBAAqB;AAC3C,UAAM,IAAI,WACR,gHACA,UAAU,KAAK;EAEnB;AACA,QAAM,SAAS,CAAC,WAAoB,MAAc,SAAwB;AACxE,QAAI,WAAW;AACb,WAAK,KAAK,IAAI;IAChB;EACF;AACA,MAAI,qBAAqB;AACvB,UAAMA,mBAA4B,CAAA;AAClC,WAAO,QAAQ,UAAU,QAAW,WAAWA,gBAAe;AAC9D,WAAO,QAAQ,gBAAgB,QAAW,iBAAiBA,gBAAe;AAC1E,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,QAAQ,WAAW,QAAW,YAAYA,gBAAe;AAChE,WAAO,QAAQ,gBAAgB,QAAW,kBAAkBA,gBAAe;AAC3E,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,MAAM,QAAQ,QAAQ,OAAO,KAAK,QAAQ,QAAQ,SAAS,GAAG,cAAcA,gBAAe;AAClG,WAAO,MAAM,QAAQ,QAAQ,UAAU,KAAK,QAAQ,WAAW,SAAS,GAAG,iBAAiBA,gBAAe;AAC3G,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,qBAAqB,QAAW,cAAcA,gBAAe;AAC5E,WAAO,QAAQ,uBAAuB,QAAW,yBAAyBA,gBAAe;AACzF,WAAO,QAAQ,sBAAsB,QAAW,yBAAyBA,gBAAe;AACxF,WAAO,QAAQ,UAAU,UAAa,QAAQ,SAAS,QAAW,kBAAkBA,gBAAe;AACnG,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,QAAQ,cAAc,QAAW,eAAeA,gBAAe;AACtE,WAAO,QAAQ,UAAU,QAAW,WAAWA,gBAAe;AAC9D,WAAO,QAAQ,WAAW,QAAW,YAAYA,gBAAe;AAChE,WAAO,QAAQ,YAAY,QAAW,aAAaA,gBAAe;AAClE,WAAO,QAAQ,WAAW,QAAW,aAAaA,gBAAe;AACjE,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,WAAW,QAAW,YAAYA,gBAAe;AAChE,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,QAAQ,eAAe,QAAW,gBAAgBA,gBAAe;AACxE,WAAO,QAAQ,WAAW,QAAW,YAAYA,gBAAe;AAChE,WAAO,QAAQ,YAAY,QAAW,aAAaA,gBAAe;AAClE,WAAO,QAAQ,cAAc,QAAW,gBAAgBA,gBAAe;AACvE,WAAO,QAAQ,kBAAkB,QAAW,oBAAoBA,gBAAe;AAC/E,WAAO,QAAQ,gBAAgB,QAAW,kBAAkBA,gBAAe;AAC3E,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,gBAAgB,QAAW,iBAAiBA,gBAAe;AAC1E,WAAO,QAAQ,eAAe,QAAW,iBAAiBA,gBAAe;AACzE,WAAO,QAAQ,eAAe,QAAW,gBAAgBA,gBAAe;AACxE,WAAO,QAAQ,mBAAmB,QAAW,qBAAqBA,gBAAe;AACjF,WAAO,QAAQ,iBAAiB,QAAW,mBAAmBA,gBAAe;AAC7E,WAAO,QAAQ,oBAAoB,QAAW,sBAAsBA,gBAAe;AACnF,WAAO,QAAQ,iBAAiB,QAAW,mBAAmBA,gBAAe;AAC7E,WAAO,QAAQ,cAAc,QAAW,eAAeA,gBAAe;AACtE,WAAO,QAAQ,eAAe,QAAW,gBAAgBA,gBAAe;AACxE,WAAO,QAAQ,mBAAmB,QAAW,qBAAqBA,gBAAe;AACjF,WAAO,QAAQ,cAAc,QAAW,gBAAgBA,gBAAe;AACvE,WAAO,QAAQ,gBAAgB,MAAM,kBAAkBA,gBAAe;AACtE,WAAO,QAAQ,iBAAiB,MAAM,mBAAmBA,gBAAe;AACxE,WAAO,QAAQ,YAAY,QAAW,aAAaA,gBAAe;AAClE,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,QAAQ,SAAS,QAAW,UAAUA,gBAAe;AAC5D,WAAO,QAAQ,QAAQ,QAAW,SAASA,gBAAe;AAC1D,WAAO,QAAQ,aAAa,QAAW,cAAcA,gBAAe;AACpE,WAAO,QAAQ,UAAU,QAAW,WAAWA,gBAAe;AAC9D,WAAO,QAAQ,eAAe,QAAW,iBAAiBA,gBAAe;AACzE,WAAO,QAAQ,cAAc,MAAM,gBAAgBA,gBAAe;AAClE,WAAO,QAAQ,kBAAkB,MAAM,oBAAoBA,gBAAe;AAC1E,WAAO,QAAQ,eAAe,MAAM,iBAAiBA,gBAAe;AACpE,WAAO,QAAQ,mBAAmB,MAAM,qBAAqBA,gBAAe;AAC5E,WAAO,QAAQ,eAAe,MAAM,iBAAiBA,gBAAe;AACpE,WAAO,QAAQ,eAAe,MAAM,iBAAiBA,gBAAe;AACpE,WAAO,QAAQ,cAAc,MAAM,gBAAgBA,gBAAe;AAClE,WAAO,QAAQ,mBAAmB,MAAM,qBAAqBA,gBAAe;AAC5E,WAAO,QAAQ,gBAAgB,MAAM,kBAAkBA,gBAAe;AACtE,WAAO,QAAQ,qBAAqB,MAAM,wBAAwBA,gBAAe;AACjF,WAAO,QAAQ,UAAU,MAAM,WAAWA,gBAAe;AACzD,WAAO,qBAAqB,OAAO,GAAG,WAAWA,gBAAe;AAChE,QAAI,QAAQ,QAAQ,UAAa,QAAQ,IAAI,WAAW,GAAG;AACzD,YAAM,IAAI,WAAW,8DAA8D,UAAU,KAAK;IACpG;AACA,QAAIA,iBAAgB,SAAS,GAAG;AAC9B,YAAM,sCAAsC;QAC1C;QACA,MAAM;QACN,SAAS,4GAA4GA,iBAAgB,KAAK,IAAI,CAAC;QAC/I,UAAU;QACV,KAAK;QACL,iBAAAA;OACD;IACH;AACA;EACF;AAEA,QAAM,kBAA4B,CAAA;AAClC,SAAO,QAAQ,WAAW,QAAW,YAAY,eAAe;AAChE,SAAO,QAAQ,gBAAgB,QAAW,kBAAkB,eAAe;AAC3E,SAAO,QAAQ,aAAa,QAAW,cAAc,eAAe;AACpE,SAAO,QAAQ,WAAW,QAAW,YAAY,eAAe;AAChE,SAAO,QAAQ,cAAc,QAAW,gBAAgB,eAAe;AACvE,SAAO,QAAQ,kBAAkB,QAAW,oBAAoB,eAAe;AAC/E,SAAO,QAAQ,gBAAgB,QAAW,kBAAkB,eAAe;AAC3E,SAAO,QAAQ,QAAQ,QAAW,SAAS,eAAe;AAC1D,SAAO,QAAQ,cAAc,QAAW,gBAAgB,eAAe;AACvE,SAAO,QAAQ,gBAAgB,MAAM,kBAAkB,eAAe;AACtE,SAAO,QAAQ,iBAAiB,MAAM,mBAAmB,eAAe;AACxE,SAAO,QAAQ,SAAS,QAAW,UAAU,eAAe;AAC5D,SAAO,QAAQ,aAAa,QAAW,cAAc,eAAe;AACpE,SAAO,QAAQ,SAAS,QAAW,UAAU,eAAe;AAC5D,SAAO,QAAQ,aAAa,QAAW,cAAc,eAAe;AACpE,SAAO,QAAQ,UAAU,QAAW,WAAW,eAAe;AAC9D,SAAO,QAAQ,cAAc,MAAM,gBAAgB,eAAe;AAClE,SAAO,QAAQ,kBAAkB,MAAM,oBAAoB,eAAe;AAC1E,SAAO,QAAQ,eAAe,MAAM,iBAAiB,eAAe;AACpE,SAAO,QAAQ,mBAAmB,MAAM,qBAAqB,eAAe;AAC5E,SAAO,QAAQ,eAAe,MAAM,iBAAiB,eAAe;AACpE,SAAO,QAAQ,eAAe,MAAM,iBAAiB,eAAe;AACpE,SAAO,QAAQ,cAAc,MAAM,gBAAgB,eAAe;AAClE,SAAO,QAAQ,mBAAmB,MAAM,qBAAqB,eAAe;AAC5E,SAAO,QAAQ,gBAAgB,MAAM,kBAAkB,eAAe;AAGtE,QAAM,kBAAkB,CAAC,GAAG,oBAAoB,EAC7C,OAAO,CAAC,UAAU,gDAAgD,IAAI,KAAK,CAAC,EAC5E,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC,EAC/C,IAAI,CAAC,UAAU,WAAW,MAAM,WAAW,KAAK,GAAG,CAAC,EAAE;AAEzD,kBAAgB,KAAK,GAAG,eAAe;AAEvC,MAAI,gBAAgB,SAAS,GAAG;AAC9B,UAAM,sCAAsC;MAC1C;MACA,MAAM;MACN,SAAS,qHAAqH,gBAAgB,KAAK,IAAI,CAAC;MACxJ,UAAU;MACV,KAAK;MACL;KACD;EACH;AACF;AAGA,SAAS,YAAY,OAAe,gBAAqC;AACvE,QAAM,aAAa,qBAAqB,OAAO,cAAc;AAC7D,MAAI,CAAC,YAAY;AACf,UAAM,kBAAkB,eAAe,YAAY,IAAI,CAAC,eAAe,WAAW,EAAE;AACpF,UAAM,IAAI,WAAW,2BAA2B,KAAK,eAAe,gBAAgB,KAAK,IAAI,CAAC,IAAI,UAAU,KAAK;EACnH;AACA,SAAO;AACT;AASA,SAAS,8BAA8B,QAOtC;AACC,MAAI,OAAO,gBAAgB,SAAS,OAAO,cAAc,WAAW,GAAG;AACrE,WAAO;EACT;AACA,QAAM,SAAS,mBAAmB;IAChC,UAAU,OAAO;IACjB,YAAY,OAAO;IACnB,UAAU,OAAO;IACjB,eAAe,OAAO;IACtB,gBAAgB,OAAO;GACxB;AACD,MAAI,CAAC,OAAO,WAAW,OAAO,SAAS;AACrC,WAAO;EACT;AACA,QAAM,iBAAiB,qBAAqB,OAAO,YAAY,OAAO,cAAc,KAAK,OAAO;AAChG,QAAM,eAAe,qBAAqB,OAAO,UAAU,OAAO,cAAc,KAAK,OAAO;AAC5F,QAAM,UACJ,mCAAmC,OAAO,QAAQ,MAAM,cAAc,OAAO,YAAY,0BACjE,2BAA2B,OAAO,kBAAkB,CAAC;AAC/E,MAAI,OAAO,gBAAgB,UAAU;AACnC,UAAM,IAAI,WAAW,SAAS,UAAU,KAAK;EAC/C;AACA,SAAO,oCAAoC,OAAO;AACpD;AAYA,SAAS,yBAAyB,OAA2B,YAAkB;AAC7E,MAAI,CAAC,SAAS,MAAM,KAAI,MAAO,MAAM,MAAM,KAAI,EAAG,YAAW,MAAO,OAAO;AACzE,WAAO;EACT;AACA,QAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,MAAI,CAAC,OAAO,SAAS,MAAM,GAAG;AAC5B,UAAM,IAAI,WAAW,4CAA4C,KAAK,KAAK,UAAU,KAAK;EAC5F;AACA,SAAO,IAAI,KAAK,MAAM,EAAE,YAAW;AACrC;AAEA,SAAS,8BAA8B,OAAyB;AAC9D,MAAI,UAAU;AAAW,WAAO;AAChC,QAAM,UAAU,MAAM,KAAI;AAC1B,SAAO,QAAQ,SAAS,IAAI,UAAU;AACxC;AAGA,IAAM,oBAAoB,CAAC,MAAM,QAAQ,QAAQ,UAAU,cAAc,aAAa;AAEtF,IAAM,kBAAkB,CAAC,MAAM,QAAQ,QAAQ,aAAa;AAE5D,SAAS,mCAAmC,KAAW;AACrD,MAAI,IAAI,WAAW,KAAK,KAAK,IAAI,SAAS,IAAI,GAAG;AAC/C,WAAO;EACT;AACA,MAAI,uEAAuE,KAAK,GAAG,GAAG;AACpF,WAAO;EACT;AAGA,SAAO,8BAA8B,GAAG;AAC1C;AASA,IAAM,gCAAkE;EACtE,cAAc;EACd,YAAY;EACZ,cAAc;;AAGhB,SAAS,6BAA6B,KAAuB;AAC3D,MAAI,OAAO,QAAQ,UAAU;AAC3B,WAAO;EACT;AACA,QAAM,UAAU,IAAI,KAAI;AACxB,QAAM,QAAQ,8BAA8B,QAAQ,YAAW,CAAE;AACjE,SAAO,SAAS;AAClB;AAEA,SAAS,yBAAyB,KAA2B,QAAgB,QAAc;AACzF,MAAI,CAAC,KAAK;AACR,WAAO,EAAE,WAAW,CAAA,EAAE;EACxB;AACA,2BAAyB,KAAK,SAAS,yCAAyC;AAChF,QAAM,YAA0B,IAAI,IAAI,CAAC,UAAS;AAChD,UAAM,eAAe,MAAM,KAAI;AAC/B,UAAM,eAAe,mCAAmC,YAAY;AACpE,UAAM,KAAK,eAAe,WAAW,OAAO,OAAO,IAAI,EAAE,IAAI,cAAc,MAAM,UAAS;AAC1F,QAAI,cAAc;AAChB,6BAAuB,IAAI,SAAS,iBAAiB;IACvD;AACA,UAAM,KAAK,GAAG,IAAI,KAAI;AACtB,UAAM,OAAO,8BAA8B,GAAG,QAAQ,GAAG,OAAO,KAAI,CAAE;AACtE,QAAI,CAAC,MAAM,CAAC,MAAM;AAChB,YAAM,IAAI,WAAW,6EAA6E,UAAU,KAAK;IACnH;AACA,QAAI,GAAG,YAAW,MAAO,aAAa;AACpC,YAAM,IAAI,WACR,4CAA4C,EAAE,8CAC9C,UAAU,KAAK;IAEnB;AACA,UAAM,aAAa,8BAA8B,GAAG,WAAW;AAC/D,WAAO;MACL,IAAI,gBAAgB,IAAI,MAAM;MAC9B,MAAM,gBAAW,MAAM,wBAAwB,iBAAiB;MAChE,YAAY,yBAAyB,GAAG,YAAY,MAAM;MAC1D,QAAQ,8BAA8B,GAAG,MAAM;MAC/C,aAAa;;EAEjB,CAAC;AACD,SAAO,EAAE,UAAS;AACpB;AAEA,SAAS,wBAAwB,KAA2B,QAAc;AACxE,MAAI,CAAC,KAAK;AACR,WAAO,CAAA;EACT;AACA,2BAAyB,KAAK,cAAc;AAC5C,SAAO,IAAI,IAAI,CAAC,UAAS;AACvB,UAAM,UAAU,MAAM,KAAI;AAC1B,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,WAAW,mDAAmD,UAAU,KAAK;IACzF;AACA,QAAI,QAAQ,SAAS,GAAG,KAAK,qDAAqD,KAAK,OAAO,KAAK,QAAQ,WAAW,KAAK,GAAG;AAC5H,YAAM,KAAK,WAAW,SAAS,cAAc;AAC7C,6BAAuB,IAAI,gBAAgB,eAAe;AAC1D,YAAM,QAAQ,GAAG,IAAI,KAAI;AACzB,UAAI,CAAC,OAAO;AACV,cAAM,IAAI,WAAW,mDAAmD,UAAU,KAAK;MACzF;AACA,UAAI,MAAM,YAAW,MAAO,aAAa;AACvC,cAAM,IAAI,WAAW,mDAAmD,KAAK,KAAK,UAAU,KAAK;MACnG;AACA,YAAM,UAAU,6BAA6B,8BAA8B,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC9F,YAAM,aAAa,8BAA8B,GAAG,WAAW;AAC/D,aAAO;QACL,IAAI,gBAAgB,OAAO,MAAM;QACjC,MAAM,UAAU,gBAAW,SAAS,wBAAwB,iBAAiB,IAAI;QACjF,aAAa;;IAEjB;AACA,QAAI,QAAQ,YAAW,MAAO,aAAa;AACzC,YAAM,IAAI,WAAW,mDAAmD,OAAO,KAAK,UAAU,KAAK;IACrG;AACA,WAAO;MACL,IAAI,gBAAgB,SAAS,MAAM;;EAEvC,CAAC;AACH;AAEA,SAAS,cAAc,OAAsD;AAC3E,SAAO,GAAG,MAAM,EAAE,KAAK,MAAM,IAAI,KAAK,MAAM,eAAe,EAAE;AAC/D;AAOA,SAAS,6BACP,SACA,iBACA,aACA,QAAc;AAEd,MAAI,OAAO,CAAC,GAAI,WAAW,CAAA,CAAG;AAC9B,MAAI,UAAU;AACd,QAAM,WAAW,KAAK,OAAO,CAAC,QAAQ,IAAI,SAAS,gBAAgB,IAAI,OAAO,eAAe;AAC7F,MAAI,SAAS,WAAW,KAAK,QAAQ;AACnC,WAAO;AACP,cAAU;EACZ;AACA,MAAI,mBAAmB,CAAC,KAAK,KAAK,CAAC,QAAQ,IAAI,SAAS,gBAAgB,IAAI,OAAO,eAAe,GAAG;AACnG,SAAK,KAAK,EAAE,IAAI,iBAAiB,MAAM,cAAc,YAAY,aAAa,OAAM,CAAE;AACtF,cAAU;EACZ;AACA,MAAI,CAAC,SAAS;AACZ,WAAO,EAAE,cAAc,SAAS,SAAS,MAAK;EAChD;AACA,SAAO,EAAE,cAAc,KAAK,SAAS,IAAI,OAAO,QAAW,SAAS,KAAI;AAC1E;AAQA,eAAe,iCACb,iBACA,kBACA,QACA,UACA,YACA,cAAoC;AAEpC,MAAI,oBAAoB,UAAa,kBAAkB;AACrD,WAAO,CAAA;EACT;AACA,QAAM,iBAAiB,gBAAgB,KAAI;AAC3C,MAAI,eAAe,WAAW,GAAG;AAC/B,WAAO,CAAA;EACT;AACA,QAAM,UAAU,MAAM,WAAW,QAAQ,gBAAgB,gBAAgB,QAAQ,GAAG,UAAU,YAAY,YAAY;AACtH,SAAO,UAAU,EAAE,IAAI,QAAQ,GAAE,IAAK,EAAE,YAAY,eAAc;AACpE;AAKA,SAAS,6BACP,UACA,qBACA,aACA,QACA,eAAuB;AAEvB,QAAM,aAAa,6BACjB,SAAS,cACT,qBACA,aACA,MAAM;AAER,MAAI,CAAC,WAAW,SAAS;AACvB;EACF;AACA,MAAI,WAAW,iBAAiB,QAAW;AACzC,WAAO,SAAS;EAClB,OAAO;AACL,aAAS,eAAe,WAAW;EACrC;AACA,MAAI,CAAC,cAAc,SAAS,cAAc,GAAG;AAC3C,kBAAc,KAAK,cAAc;EACnC;AACF;AAEA,SAAS,QAAQ,OAAyC;AACxD,SAAO,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK;AACtC;AAEA,SAAS,OAAO,OAAwC;AACtD,SAAO,GAAG,MAAM,IAAI,KAAK,MAAM,KAAK;AACtC;AAEA,SAAS,QAAQ,OAAyE;AACxF,SAAO,GAAG,MAAM,OAAO,KAAK,MAAM,QAAQ,EAAE,KAAK,MAAM,KAAK,KAAK,MAAM,mBAAmB,EAAE;AAC9F;AAEA,SAAS,0BAA0B,OAAmB,UAAmC;AACvF,MAAI,MAAM,OAAO,SAAS,IAAI;AAC5B,WAAO;EACT;AACA,MAAI,SAAS,QAAQ,MAAM,SAAS,SAAS,MAAM;AACjD,WAAO;EACT;AACA,MAAI,SAAS,gBAAgB,WAAc,MAAM,eAAe,YAAe,SAAS,aAAa;AACnG,WAAO;EACT;AACA,SAAO;AACT;AAEA,SAAS,eAAe,KAAoB;AAC1C,SAAO,gBAAgB,GAAG;AAC5B;AAEA,SAAS,+BAA+B,KAAa,UAAgB;AACnE,QAAM,YAAY,6BAA6B,UAAU,GAAG;AAC5D,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,WACR,+CAA+C,GAAG,iCAAiC,QAAQ,KAC3F,UAAU,QAAQ;EAEtB;AACA,SAAO;AACT;AAEA,SAAS,mCACP,SACA,sBACA,qBAAsC;AAEtC,QAAM,WAAW,oBAAI,IAAG;AACxB,QAAM,OAAO,CAAC,WAAmB,eAA6B;AAC5D,QAAI,YAAY;AACd,eAAS,IAAI,SAAS;IACxB;EACF;AACA,OAAK,SAAS,QAAQ,UAAU,MAAS;AACzC,OAAK,eAAe,QAAQ,gBAAgB,MAAS;AACrD,OAAK,QAAQ,QAAQ,SAAS,MAAS;AACvC,OAAK,UAAU,QAAQ,WAAW,MAAS;AAC3C,OAAK,eAAe,QAAQ,gBAAgB,MAAS;AACrD,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,QAAQ,QAAQ,SAAS,MAAS;AAGvC,OACE,QACA,QAAQ,SAAS,UACd,MAAM,QAAQ,QAAQ,OAAO,KAAK,QAAQ,QAAQ,SAAS,KAC3D,MAAM,QAAQ,QAAQ,UAAU,KAAK,QAAQ,WAAW,SAAS,CAAE;AAExE,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,oBAAoB,QAAQ,qBAAqB,MAAS;AAC/D,OAAK,sBAAsB,QAAQ,uBAAuB,MAAS;AACnE,OAAK,qBAAqB,QAAQ,sBAAsB,MAAS;AACjE,OAAK,SAAS,QAAQ,UAAU,UAAa,QAAQ,SAAS,MAAS;AACvE,OAAK,QAAQ,QAAQ,SAAS,MAAS;AACvC,OAAK,aAAa,QAAQ,cAAc,MAAS;AACjD,OAAK,SAAS,QAAQ,UAAU,MAAS;AACzC,OAAK,UAAU,QAAQ,WAAW,MAAS;AAC3C,OAAK,WAAW,QAAQ,YAAY,MAAS;AAC7C,OAAK,UAAU,QAAQ,WAAW,MAAS;AAC3C,OAAK,UAAU,QAAQ,WAAW,MAAS;AAC3C,OAAK,WAAW,QAAQ,YAAY,MAAS;AAC7C,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,UAAU,QAAQ,WAAW,MAAS;AAC3C,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,QAAQ,QAAQ,SAAS,MAAS;AACvC,OAAK,cAAc,QAAQ,eAAe,MAAS;AACnD,OAAK,UAAU,QAAQ,WAAW,MAAS;AAC3C,OAAK,WAAW,QAAQ,YAAY,MAAS;AAC7C,OAAK,aAAa,QAAQ,cAAc,MAAS;AACjD,OAAK,iBAAiB,QAAQ,kBAAkB,MAAS;AACzD,OAAK,eAAe,QAAQ,gBAAgB,MAAS;AACrD,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,eAAe,QAAQ,gBAAgB,MAAS;AACrD,OAAK,cAAc,QAAQ,eAAe,MAAS;AACnD,OAAK,cAAc,QAAQ,eAAe,MAAS;AACnD,OAAK,kBAAkB,QAAQ,mBAAmB,MAAS;AAC3D,OAAK,gBAAgB,QAAQ,iBAAiB,MAAS;AACvD,OAAK,mBAAmB,QAAQ,oBAAoB,MAAS;AAC7D,OAAK,gBAAgB,QAAQ,iBAAiB,MAAS;AACvD,OAAK,aAAa,QAAQ,cAAc,MAAS;AACjD,OAAK,cAAc,QAAQ,eAAe,MAAS;AACnD,OAAK,kBAAkB,QAAQ,mBAAmB,MAAS;AAC3D,OAAK,OAAO,QAAQ,QAAQ,MAAS;AACrC,OAAK,aAAa,QAAQ,cAAc,MAAS;AACjD,OAAK,OAAO,QAAQ,gBAAgB,IAAI;AACxC,OAAK,WAAW,QAAQ,YAAY,MAAS;AAC7C,OAAK,QAAQ,QAAQ,SAAS,MAAS;AACvC,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,QAAQ,QAAQ,SAAS,MAAS;AACvC,OAAK,QAAQ,QAAQ,SAAS,MAAS;AACvC,OAAK,QAAQ,QAAQ,iBAAiB,IAAI;AAC1C,OAAK,OAAO,QAAQ,QAAQ,MAAS;AACrC,OAAK,YAAY,QAAQ,aAAa,MAAS;AAC/C,OAAK,SAAS,QAAQ,UAAU,MAAS;AACzC,OAAK,cAAc,QAAQ,eAAe,MAAS;AACnD,OAAK,SAAS,QAAQ,UAAU,MAAS;AACzC,OAAK,SAAS,QAAQ,UAAU,IAAI;AACpC,OAAK,oBAAoB,QAAQ,qBAAqB,IAAI;AAC1D,OAAK,OAAO,QAAQ,cAAc,IAAI;AACtC,OAAK,WAAW,QAAQ,kBAAkB,IAAI;AAC9C,OAAK,QAAQ,QAAQ,eAAe,IAAI;AACxC,OAAK,YAAY,QAAQ,mBAAmB,IAAI;AAChD,OAAK,QAAQ,QAAQ,eAAe,IAAI;AACxC,OAAK,QAAQ,QAAQ,eAAe,IAAI;AACxC,OAAK,OAAO,QAAQ,cAAc,IAAI;AACtC,OAAK,YAAY,QAAQ,mBAAmB,IAAI;AAChD,OAAK,SAAS,QAAQ,gBAAgB,IAAI;AAC1C,OAAK,cAAc,QAAQ,qBAAqB,IAAI;AACpD,MAAI,QAAQ,SAAS,QAAQ,MAAM,SAAS,GAAG;AAC7C,UAAM,eAAe,wBAAwB,QAAQ,OAAO,sBAAsB,mBAAmB;AACrG,eAAW,aAAa,aAAa,YAAY;AAC/C,WAAK,WAAW,IAAI;IACtB;EACF;AACA,SAAO;AACT;AAEA,SAAS,2BACP,UACA,SACA,cACA,sBACA,qBAAsC;AAEtC,QAAM,iBAAiB,sBAAsB,UAAU,YAAY;AACnE,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,WAAW,uBAAuB,QAAQ,KAAK,UAAU,KAAK;EAC1E;AACA,QAAM,cAAc,gCAAgC,gBAAgB,UAAU,CAAA,CAAE;AAChF,MAAI,YAAY,OAAO,SAAS,GAAG;AACjC,UAAM,IAAI,WAAW,YAAY,OAAO,KAAK,IAAI,GAAG,UAAU,QAAQ;EACxE;AAEA,QAAM,WAAW,mCAAmC,SAAS,sBAAsB,mBAAmB;AACtG,aAAW,YAAY,YAAY,UAAU;AAC3C,QAAI,SAAS,IAAI,+BAA+B,UAAU,QAAQ,CAAC,GAAG;AACpE,YAAM,IAAI,WACR,UAAU,uBAAuB,UAAU,QAAQ,CAAC,0BAA0B,QAAQ,gCACtF,UAAU,KAAK;IAEnB;EACF;AAEA,aAAW,YAAY,YAAY,UAAU;AAC3C,QAAI,CAAC,SAAS,IAAI,+BAA+B,UAAU,QAAQ,CAAC,GAAG;AACrE,YAAM,IAAI,WACR,2BAA2B,uBAAuB,UAAU,QAAQ,CAAC,cAAc,QAAQ,KAC3F,UAAU,KAAK;IAEnB;EACF;AACF;AA6DA,IAAM,gDAAgD,oBAAI,IAAY,CAAC,SAAS,MAAM,CAAC;AACvF,IAAM,0CAA0C,oCAAoC,OAClF,CAAC,QAAQ,CAAC,8CAA8C,IAAI,GAAG,CAAC;AAGlE,IAAM,mCAA4E;EAChF;EACA;EACA,GAAG;;AAGL,IAAM,gCAAyE;EAC7E;EACA;EACA;EACA;EACA;EACA;EACA;EACA,GAAG;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF,IAAM,mCAAkF;EACtF;IACE,WAAW;IACX,aAAa;IACb,WAAW,CAAC,OAAO,YAAY,qBAAqB,OAAO,QAAQ,UAAU,UAAU;;EAEzF;IACE,WAAW;IACX,aAAa;IACb,WAAW,CAAC,UAAU,oBAAoB,OAAO,mBAAmB;;EAEtE,EAAE,WAAW,sBAAsB,aAAa,uBAAuB,WAAW,CAAC,UAAU,MAAK;EAClG,EAAE,WAAW,qBAAqB,aAAa,sBAAqB;EACpE,EAAE,WAAW,QAAQ,aAAa,OAAM;EACxC,EAAE,WAAW,aAAa,aAAa,YAAW;EAClD,EAAE,WAAW,SAAS,aAAa,QAAO;EAC1C,EAAE,WAAW,UAAU,aAAa,SAAQ;EAC5C,EAAE,WAAW,WAAW,aAAa,UAAS;EAC9C,EAAE,WAAW,UAAU,aAAa,UAAS;;AAG/C,IAAM,sCAAqF;EACzF,EAAE,WAAW,YAAY,aAAa,WAAU;EAChD,EAAE,WAAW,QAAQ,aAAa,QAAQ,WAAW,CAAC,UAAU,gBAAW,mBAAmB,KAAK,GAAG,aAAa,MAAM,EAAC;EAC1H,EAAE,WAAW,cAAc,aAAa,cAAc,WAAW,CAAC,UAAU,qBAAqB,KAAK,EAAC;;AAGzG,IAAM,gCAA+E;EACnF,EAAE,WAAW,iBAAiB,aAAa,iBAAgB;EAC3D,EAAE,WAAW,eAAe,aAAa,eAAc;EACvD,EAAE,WAAW,YAAY,aAAa,WAAU;EAChD;IACE,WAAW;IACX,aAAa;IACb,WAAW,CAAC,UAAU,gBAAW,uBAAuB,KAAK,GAAG,uBAAuB,UAAU;;EAEnG,EAAE,WAAW,eAAe,aAAa,cAAa;EACtD,EAAE,WAAW,cAAc,aAAa,cAAa;EACrD,EAAE,WAAW,cAAc,aAAa,aAAY;EACpD,EAAE,WAAW,kBAAkB,aAAa,kBAAiB;EAC7D,EAAE,WAAW,gBAAgB,aAAa,gBAAe;EACzD,EAAE,WAAW,mBAAmB,aAAa,mBAAkB;EAC/D,EAAE,WAAW,gBAAgB,aAAa,gBAAe;EACzD,EAAE,WAAW,aAAa,aAAa,YAAW;EAClD,EAAE,WAAW,cAAc,aAAa,cAAc,WAAW,CAAC,UAAU,qBAAqB,KAAK,EAAC;EACvG,EAAE,WAAW,kBAAkB,aAAa,kBAAiB;;AAG/D,SAAS,2BACP,aACA,SACA,SAAoC;AAEpC,aAAW,cAAc,aAAa;AACpC,UAAM,cAAc,QAAQ,WAAW,SAAS;AAChD,UAAM,cAAc,QAAQ,qBAAqB,IAAI,WAAW,WAAW;AAC3E,QAAI,gBAAgB,UAAa,CAAC,aAAa;AAC7C;IACF;AACA,QAAI,aAAa;AACf,aAAO,QAAQ,eAAe,WAAW,WAAW;AACpD,cAAQ,cAAc,KAAK,WAAW,WAAW;AACjD;IACF;AACA,QAAI,OAAO,gBAAgB,UAAU;AACnC,YAAM,IAAI,WACR,GAAG,uBAAuB,UAAU,OAAO,WAAW,SAAS,CAAC,CAAC,2BACjE,UAAU,KAAK;IAEnB;AACA,YAAQ,eAAe,WAAW,WAAW,IAAI,WAAW,YACxD,WAAW,UAAU,aAAa,OAAO,IACzC,YAAY,KAAI;AACpB,YAAQ,cAAc,KAAK,WAAW,WAAW;EACnD;AACF;AAEA,eAAe,0BAA0B,SAA6B;AACpE,QAAM,gBAAgB,yBAAwB;AAC9C,SAAO,iCAAiC;IACtC,GAAG;IACH,MAAM,MAAM,cAAc,aAAa,QAAQ,MAAM,QAAQ;IAC7D,KAAK,MAAM,cAAc,YAAY,QAAQ,KAAK,OAAO;IACzD,WAAW,MAAM,cAAc,YAAY,QAAQ,WAAW,cAAc;IAC5E,SAAS,MAAM,cAAc,YAAY,QAAQ,SAAS,WAAW;IACrE,MAAM,MAAM,cAAc,YAAY,QAAQ,MAAM,QAAQ;IAC5D,UAAU,MAAM,cAAc,YAAY,QAAQ,UAAU,YAAY;IACxE,MAAM,MAAM,cAAc,YAAY,QAAQ,MAAM,QAAQ;IAC5D,MAAM,MAAM,cAAc,YAAY,QAAQ,MAAM,QAAQ;IAC5D,KAAK,MAAM,cAAc,YAAY,QAAQ,KAAK,OAAO;IACzD,UAAU,MAAM,cAAc,YAAY,QAAQ,UAAU,YAAY;IACxE,OAAO,MAAM,cAAc,YAAY,QAAQ,OAAO,SAAS;IAC/D,YAAY,MAAM,cAAc,YAAY,QAAQ,YAAY,eAAe;IAC/E,OAAO,MAAM,cAAc,YAAY,QAAQ,OAAO,SAAS;GAChE;AACH;AAEA,SAAS,gCAAgC,SAA6B;AACpE,SAAO;IACL;MACE,SAAS,QAAQ,aAAa,QAAQ;MACtC,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ,cAAc,QAAQ;MACvC,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;IAElB;MACE,SAAS,QAAQ;MACjB,WAAW;MACX,WAAW;MACX,WAAW;MACX,QAAQ,QAAQ;MAChB,gBAAgB;;;AAGtB;AAEA,SAAS,uBAAuB,SAA6B;AAC3D,MAAI,QAAQ,gBAAgB,SAAS,QAAQ,QAAQ,UAAa,QAAQ,IAAI,WAAW,IAAI;AAC3F,UAAM,IAAI,WAAW,oDAAoD,UAAU,KAAK;EAC1F;AACA,MAAI,QAAQ,gBAAgB,QAAQ,QAAQ,cAAc,UAAa,QAAQ,UAAU,SAAS,GAAG;AACnG,UAAM,IAAI,WAAW,uDAAuD,UAAU,KAAK;EAC7F;AACA,MAAI,QAAQ,iBAAiB,SAAS,QAAQ,SAAS,UAAa,QAAQ,KAAK,WAAW,IAAI;AAC9F,UAAM,IAAI,WAAW,sDAAsD,UAAU,KAAK;EAC5F;AACA,MAAI,QAAQ,iBAAiB,QAAQ,QAAQ,eAAe,MAAM;AAChE,UAAM,IAAI,WAAW,yDAAyD,UAAU,KAAK;EAC/F;AACF;AAEA,SAAS,gCAAgC,QAKxC;AACC,aAAW,cAAc,OAAO,aAAa;AAC3C,QAAI,CAAC,WAAW,SAAS;AACvB;IACF;AACA,UAAM,gBACH,WAAW,cAAc,SAAS,OAAO,QAAQ,gBAAgB,QACjE,WAAW,cAAc,UAAU,OAAO,QAAQ,iBAAiB;AACtE,QAAI,WAAW,UAAU,WAAW,OAAO,SAAS,KAAK,CAAC,eAAe;AACvE,YAAM,IAAI,WAAW,kBAAkB,WAAW,SAAS,SAAS,WAAW,SAAS,IAAI,UAAU,KAAK;IAC7G;AACA,WAAO,gBAAgB,IAAI,WAAW,SAAS;AAC/C,WAAO,qBAAqB,IAAI,WAAW,cAAc;EAC3D;AACF;AAEA,SAAS,0BAA0B,SAA6B;AAC9D,QAAM,WAAoC,CAAA;AAC1C,aAAW,OAAO,kCAAkC;AAClD,aAAS,OAAO,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM;EAC3C;AACA,WAAS,QAAQ,QAAQ,UAAU,UAAa,QAAQ,SAAS;AACjE,SAAO;AACT;AAEA,SAAS,2BAA2B,SAA+B,cAAuE;AACxI,QAAM,uBAAuB,0BAA0B,OAAO;AAC9D,aAAW,CAAC,WAAW,QAAQ,KAAK,OAAO,QAAQ,oBAAoB,GAAG;AACxE,QAAI,CAAC,YAAY,CAAC,aAAa,WAAW,IAAI,SAAS,GAAG;AACxD;IACF;AACA,UAAM,aAAa,qCAAqC,IAAI,SAAS,KAAK;AAC1E,UAAM,IAAI,WACR,0BAA0B,UAAU,SAAS,uBAAuB,UAAU,SAAS,CAAC,IACxF,UAAU,KAAK;EAEnB;AACA,MAAI,CAAC,aAAa,gBAAgB,IAAI,MAAM,GAAG;AAC7C;EACF;AACA,MAAI,MAAM,QAAQ,QAAQ,OAAO,KAAK,QAAQ,QAAQ,SAAS,GAAG;AAChE,UAAM,IAAI,WAAW,+CAA+C,UAAU,KAAK;EACrF;AACA,MAAI,MAAM,QAAQ,QAAQ,UAAU,KAAK,QAAQ,WAAW,SAAS,GAAG;AACtE,UAAM,IAAI,WAAW,kDAAkD,UAAU,KAAK;EACxF;AACF;AAEA,SAAS,yBAAyB,SAA6B;AAC7D,QAAM,4BAA4B,CAAC,OAA2B,cAA2B;AACvF,UAAM,aAAa,qCAAqC,IAAI,SAAS;AACrE,UAAM,OAAO,aAAa,eAAe,UAAU,0BAA0B;AAC7E,4BAAwB,OAAO,uBAAuB,UAAU,SAAS,GAAG,IAAI;EAClF;AACA,aAAW,OAAO,kCAAkC;AAClD,8BAA0B,QAAQ,GAAG,GAAyB,OAAO,GAAG,CAAC;EAC3E;AACA,4BAA0B,QAAQ,SAAS,QAAQ,MAAM,OAAO;AAChE,2BAAyB,QAAQ,UAAU,cAAc,2CAA2C;AACpG,2BAAyB,QAAQ,OAAO,WAAW,4CAA4C;AACjG;AAEA,SAAS,sBAAsB,SAA+B,qBAA4C;AACxG,QAAM,QAAiC,CAAA;AACvC,aAAW,OAAO,+BAA+B;AAC/C,UAAM,OAAO,GAAG,CAAC,IAAI,QAAQ,GAAG,MAAM;EACxC;AACA,QAAM,OAAO,QAAQ,SAAS;AAC9B,QAAM,UAAU,MAAM,QAAQ,QAAQ,OAAO,KAAK,QAAQ,QAAQ,SAAS;AAC3E,QAAM,aAAa,MAAM,QAAQ,QAAQ,UAAU,KAAK,QAAQ,WAAW,SAAS;AACpF,QAAM,QAAQ,QAAQ,UAAU;AAChC,QAAM,OAAO,QAAQ,SAAS;AAC9B,QAAM,cAAc,QAAQ,gBAAgB;AAC5C,QAAM,eAAe,QAAQ,iBAAiB;AAC9C,QAAM,QAAQ,QAAQ,UAAU,UAAa,QAAQ,MAAM,SAAS;AACpE,QAAM,YAAY,QAAQ,cAAc;AACxC,QAAM,gBAAgB,QAAQ,kBAAkB;AAChD,QAAM,aAAa,QAAQ,eAAe;AAC1C,QAAM,iBAAiB,QAAQ,mBAAmB;AAClD,QAAM,aAAa,QAAQ,eAAe;AAC1C,QAAM,aAAa,QAAQ,eAAe;AAC1C,QAAM,YAAY,QAAQ,cAAc;AACxC,QAAM,iBAAiB,QAAQ,mBAAmB;AAClD,QAAM,cAAc,QAAQ,gBAAgB;AAC5C,QAAM,mBAAmB,QAAQ,qBAAqB;AACtD,QAAM,gBAAgB,OAAO,KAAK,mBAAmB,EAAE,SAAS;AAChE,SAAO;AACT;AAEA,eAAe,sBAAsB,QAKpC;AACC,QAAM,UAAU,MAAM,WACpB,OAAO,QACP,OAAO,IACP,OAAO,SAAS,WAChB,OAAO,SAAS,aAChB,OAAO,aAAa,cAAc;AAEpC,MAAI,CAAC,SAAS;AACZ,UAAM,MAAM,uBAAuB,OAAO,QAAQ,OAAO,IAAI,OAAO,SAAS,WAAW,OAAO,aAAa,cAAc;EAC5H;AACA,QAAM,EAAE,SAAQ,IAAK,MAAM,gBAAgB,SAAS,EAAE,QAAQ,OAAO,SAAS,OAAM,CAAE;AACtF,SAAO;IACL,MAAM,aAAa,SAAS,QAAQ;IACpC,gBAAgB,CAAA;IAChB,UAAU,CAAC,uBAAuB;;AAEtC;AAEA,eAAe,+BAA+B,QAAc;AAC1D,MAAI,CAAE,MAAM,WAAW,gBAAgB,MAAM,CAAC,GAAI;AAChD,UAAM,IAAI,WAAW,iCAAiC,MAAM,wBAAwB,UAAU,SAAS;EACzG;AACF;AAEA,SAAS,wBAAwB,SAA6B;AAC5D,MAAI,QAAQ,UAAU,UAAa,QAAQ,SAAS,UAAa,QAAQ,UAAU,QAAQ,MAAM;AAC/F,UAAM,IAAI,WAAW,wDAAwD,UAAU,KAAK;EAC9F;AACF;AAEA,eAAe,gCAAgC,QAQ9C;AACC,MAAI,OAAO,QAAQ,WAAW,UAAa,OAAO,aAAa,gBAAgB,IAAI,QAAQ,GAAG;AAC5F,WAAO,EAAE,qBAAqB,QAAW,UAAU,CAAA,EAAE;EACvD;AACA,QAAM,sBAAsB,8BAA8B,OAAO,QAAQ,MAAM;AAC/E,iCAA+B,OAAO,IAAI,qBAAqB,OAAO,SAAS,SAAS;AACxF,QAAM,gBAAgB,MAAM,WAC1B,OAAO,QACP,qBACA,OAAO,SAAS,WAChB,OAAO,SAAS,aAChB,OAAO,aAAa,cAAc;AAEpC,MAAI,eAAe;AACjB,WAAO,EAAE,qBAAqB,UAAU,CAAA,EAAE;EAC5C;AACA,QAAM,qBAAqB,gBAAgB,qBAAqB,OAAO,SAAS,SAAS;AACzF,SAAO;IACL;IACA,UAAU,+BAA+B,oBAAoB,OAAO,qBAAqB,EAAE;;AAE/F;AAEA,SAAS,4BAA4B,YAAmC;AACtE,SAAO,WAAW,eAAe,SAAY,CAAA,IAAK,CAAC,yBAAyB,WAAW,UAAU,EAAE;AACrG;AAEA,eAAe,kCAAkC,QAUhD;AACC,MAAI,OAAO,wBAAwB,SAAS,OAAO,cAAc,WAAW,KAAK,CAAC,OAAO,WAAW,UAAU,OAAO,QAAQ,WAAW,QAAW;AACjJ,WAAO,CAAA;EACT;AACA,QAAM,UAAU,MAAM,WACpB,OAAO,QACP,OAAO,IACP,OAAO,SAAS,WAChB,OAAO,SAAS,aAChB,OAAO,aAAa,cAAc;AAEpC,MAAI,CAAC,SAAS;AACZ,UAAM,MAAM,uBAAuB,OAAO,QAAQ,OAAO,IAAI,OAAO,SAAS,WAAW,OAAO,aAAa,cAAc;EAC5H;AACA,QAAM,EAAE,SAAQ,IAAK,MAAM,gBAAgB,SAAS,EAAE,QAAQ,OAAO,SAAS,OAAM,CAAE;AACtF,QAAM,gBACJ,OAAO,QAAQ,SAAS,SACnB,gBAAgB,OAAO,QAAQ,MAAM,OAAO,YAAY,KAAK,OAAO,QAAQ,OAC5E,SAAS,UAAU,QAAQ;AAClC,QAAM,UAAU,8BAA8B;IAC5C,aAAa,OAAO;IACpB,eAAe,OAAO;IACtB,gBAAgB,OAAO;IACvB,UAAU;IACV,YAAY,SAAS,UAAU,UAAU;IACzC,UAAU,OAAO,QAAQ;GAC1B;AACD,SAAO,UAAU,CAAC,OAAO,IAAI,CAAA;AAC/B;AAEA,eAAe,uBAAuB,SAA0B;AAC9D,MAAI,CAAC,QAAQ,WAAW,QAAQ;AAC9B,WAAO;EACT;AACA,QAAM,eAAe,qBAAqB,QAAQ,QAAQ,QAAsB,QAAQ,cAAc;AACtG,MAAI,iBAAiB,QAAQ,eAAe,cAAc;AACxD,WAAO;EACT;AAEA,QAAM,iBAAiB,OAAO,QAAQ,QAAQ,UAAU,EACrD,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,SAAS,QAAQ,YAAY,QAAQ,aAAa,EAC3E,IAAI,CAAC,CAAC,GAAG,MAAM,GAAG;AACrB,QAAM,gBAA0B,CAAA;AAChC,MAAI,mBAA6B,CAAA;AACjC,MAAI,eAAe,SAAS,GAAG;AAC7B,UAAM,YAAY,MAAM,UACtB,QAAQ,IACR,EAAE,GAAG,QAAQ,SAAS,QAAQ,QAAW,aAAa,QAAW,SAAS,OAAS,GACnF,QAAQ,MAAM;AAEhB,uBAAmB,UAAU;AAC7B,kBAAc,KAAK,GAAG,UAAU,QAAQ;EAC1C;AAEA,QAAM,iBAAiB,OAAO,QAAQ,QAAQ,gBAAgB,WAAW,QAAQ,QAAQ,YAAY,KAAI,IAAK;AAC9G,QAAM,kBAAkB,OAAO,QAAQ,QAAQ,YAAY,WAAW,QAAQ,QAAQ,QAAQ,KAAI,IAAK;AACvG,QAAM,cAAc,kBAAkB,mBAAmB;AACzD,QAAM,cAAc,MAAM,SACxB,QAAQ,IACR,aACA;IACE,QAAQ,QAAQ,QAAQ;IACxB,SAAS,QAAQ,QAAQ;IACzB,OAAO,QAAQ,QAAQ;KAEzB,QAAQ,MAAM;AAGhB,QAAM,WAAW;IACf,GAAG,QAAQ;IACX,GAAG;IACH,GAAG,YAAY;IACf;;AAEF,MAAI,eAAe,WAAW,KAAK,gBAAgB,WAAW,GAAG;AAC/D,aAAS,KAAK,wBAAwB;EACxC;AACA,SAAO;IACL,MAAM,YAAY;IAClB,gBAAgB,CAAC,GAAG,kBAAkB,GAAG,YAAY,cAAc;IACnE;;AAEJ;AAEA,SAAS,yBACP,UACA,SACA,gBACA,eAAuB;AAEvB,MAAI,QAAQ,UAAU,QAAW;AAC/B,aAAS,SAAS,QAAQ,QAAQ;AAClC,kBAAc,KAAK,OAAO;EAC5B;AACA,MAAI,QAAQ,gBAAgB,QAAW;AACrC,aAAS,SAAS,cAAc,QAAQ;AACxC,kBAAc,KAAK,aAAa;EAClC;AACA,MAAI,QAAQ,SAAS,QAAW;AAC9B,aAAS,OAAO,QAAQ;AACxB,kBAAc,KAAK,MAAM;EAC3B;AACA,SAAO,qBAAqB,SAAS,SAAS,QAAQ,cAAc,KAAK,SAAS,SAAS;AAC7F;AAEA,SAAS,YAAY,UAAkC;AACrD,SAAO,SAAS,cAAc,UAAa,SAAS,cAAc;AACpE;AAEA,SAAS,oBAAoB,UAAkC;AAC7D,SAAO,SAAS,cAAc;AAChC;AAEA,SAAS,mCACP,UACA,SACA,0BACA,eAAuB;AAEvB,MAAI,QAAQ,QAAQ,WAAW,QAAW;AACxC,UAAM,SAAS,YAAY,QAAQ,QAAQ,QAAQ,QAAQ,cAAc;AACzE,aAAS,SAAS,SAAS;AAC3B,kBAAc,KAAK,QAAQ;AAC3B,QAAI,WAAW,QAAQ,eAAe,gBAAgB,CAAC,YAAY,SAAS,QAAQ,GAAG;AACrF,eAAS,SAAS,YAAY,QAAQ;AACtC,oBAAc,KAAK,WAAW;IAChC,WACE,6BAA6B,QAAQ,eAAe,gBACpD,WAAW,QAAQ,eAAe,gBAClC,oBAAoB,SAAS,QAAQ,GACrC;AACA,aAAO,SAAS,SAAS;AACzB,oBAAc,KAAK,WAAW;IAChC;EACF;AACA,MAAI,QAAQ,QAAQ,gBAAgB,UAAa,QAAQ,qBAAqB,IAAI,cAAc,GAAG;AACjG,QAAI,QAAQ,qBAAqB,IAAI,cAAc,GAAG;AACpD,aAAO,SAAS,SAAS;IAC3B,OAAO;AACL,YAAM,cAAc,QAAQ,QAAQ,aAAa,KAAI,KAAM;AAC3D,UAAI,YAAY,WAAW,GAAG;AAC5B,cAAM,IAAI,WAAW,oCAAoC,UAAU,KAAK;MAC1E;AACA,eAAS,SAAS,eAAe;IACnC;AACA,kBAAc,KAAK,cAAc;AACjC;EACF;AACA,MACE,QAAQ,QAAQ,WAAW,UAC3B,6BAA6B,QAAQ,eAAe,gBACpD,SAAS,SAAS,WAAW,QAAQ,eAAe,mBACpD,SAAS,SAAS,iBAAiB,QACnC;AACA,WAAO,SAAS,SAAS;AACzB,kBAAc,KAAK,cAAc;EACnC;AACF;AAEA,SAAS,4BACP,UACA,SACA,eAAuB;AAEvB,MAAI,iBAAiB,gBAAgB,SAAS,SAAS,MAAM,QAAQ,YAAY,KAAK,SAAS,SAAS;AACxG,MAAI,QAAQ,QAAQ,aAAa,QAAW;AAC1C,aAAS,SAAS,WAAW,eAAe,QAAQ,QAAQ,QAAQ;AACpE,kBAAc,KAAK,UAAU;EAC/B;AACA,MAAI,QAAQ,QAAQ,SAAS,QAAW;AACtC,UAAM,mBAAmB,gBAAgB,QAAQ,QAAQ,MAAM,QAAQ,YAAY;AACnF,QAAI,CAAC,kBAAkB;AACrB,YAAM,IAAI,WACR,sBAAsB,QAAQ,QAAQ,MAAM,QAAQ,aAAa,OAAO,yBAAyB,QAAQ,QAAQ,QAAQ,SAAS,MAAM,CAAC,GACzI,UAAU,KAAK;IAEnB;AACA,aAAS,SAAS,OAAO;AACzB,qBAAiB;AACjB,kBAAc,KAAK,MAAM;EAC3B;AACA,6BACE,gBACA,QAAQ,SACR,QAAQ,cACR,QAAQ,sBACR,QAAQ,mBAAmB;AAE7B,0BAAwB,UAAU,SAAS,gBAAgB,aAAa;AACxE,SAAO;AACT;AAEA,SAAS,wBACP,UACA,SACA,gBACA,eAAuB;AAEvB,MAAI,QAAQ,QAAQ,eAAe,UAAa,QAAQ,qBAAqB,IAAI,cAAc,GAAG;AAChG,QAAI,QAAQ,qBAAqB,IAAI,cAAc,GAAG;AACpD,aAAO,SAAS,SAAS;IAC3B,OAAO;AACL,YAAM,oBAAoB,uBAAuB,QAAQ,QAAQ,cAAc,CAAA,CAAE;AACjF,YAAMC,cAAa,oBAAoB,gBAAgB,mBAAmB,QAAQ,YAAY;AAC9F,UAAIA,YAAW,OAAO,SAAS,GAAG;AAChC,cAAM,IAAI,WAAWA,YAAW,OAAO,KAAK,IAAI,GAAG,UAAU,KAAK;MACpE;AACA,eAAS,SAAS,eAAeA,YAAW;IAC9C;AACA,kBAAc,KAAK,cAAc;AACjC;EACF;AACA,MAAI,QAAQ,QAAQ,SAAS,UAAa,SAAS,SAAS,iBAAiB,QAAW;AACtF;EACF;AACA,QAAM,aAAa,oBAAoB,gBAAgB,SAAS,SAAS,cAAc,QAAQ,YAAY;AAC3G,MAAI,WAAW,OAAO,SAAS,GAAG;AAChC,UAAM,IAAI,WACR,oDAAoD,cAAc,MAAM,WAAW,OAAO,KAAK,IAAI,CAAC,6CACpG,UAAU,KAAK;EAEnB;AACA,WAAS,SAAS,eAAe,WAAW;AAC9C;AAEA,SAAS,yBAAyB,UAAwB,SAAgC,eAAuB;AAC/G,MACE,QAAQ,QAAQ,QAAQ,UACxB,QAAQ,QAAQ,cAAc,UAC9B,CAAC,QAAQ,qBAAqB,IAAI,cAAc,GAChD;AACA;EACF;AACA,MAAI,mBAAmB,QAAQ,qBAAqB,IAAI,cAAc,IAAI,CAAA,IAAK,CAAC,GAAI,SAAS,SAAS,gBAAgB,CAAA,CAAG;AACzH,MAAI,QAAQ,kBAAkB,UAAU,SAAS,GAAG;AAClD,UAAM,OAAO,IAAI,IAAI,iBAAiB,IAAI,CAAC,UAAU,cAAc,KAAK,CAAC,CAAC;AAC1E,eAAW,YAAY,QAAQ,kBAAkB,WAAW;AAC1D,YAAM,MAAM,cAAc,QAAQ;AAClC,UAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,yBAAiB,KAAK,QAAQ;AAC9B,aAAK,IAAI,GAAG;MACd;IACF;EACF;AACA,MAAI,QAAQ,mBAAmB,SAAS,GAAG;AACzC,uBAAmB,iBAAiB,OAClC,CAAC,UAAU,CAAC,QAAQ,mBAAmB,KAAK,CAAC,aAAa,0BAA0B,OAAO,QAAQ,CAAC,CAAC;EAEzG;AACA,MAAI,iBAAiB,WAAW,GAAG;AACjC,WAAO,SAAS,SAAS;EAC3B,OAAO;AACL,aAAS,SAAS,eAAe;EACnC;AACA,gBAAc,KAAK,cAAc;AACnC;AAEA,SAAS,4BAA4B,UAAwB,SAAgC,eAAuB;AAClH,6BAA2B,UAAU,YAAY,QAAQ,QAAQ,SAAS,QAAQ,eAAe,QAAiC,QAAQ,sBAAsB,aAAa;AAC7K,6BAA2B,UAAU,SAAS,QAAQ,QAAQ,MAAM,QAAQ,YAAY,QAAiC,QAAQ,sBAAsB,aAAa;AACpK,6BAA2B,UAAU,aAAa,QAAQ,QAAQ,UAAU,QAAQ,gBAAgB,QAAiC,QAAQ,sBAAsB,aAAa;AAClL;AAEA,SAAS,2BACP,UACA,KACA,aACA,QACA,sBACA,eAAuB;AAEvB,MAAI,gBAAgB,UAAa,CAAC,qBAAqB,IAAI,GAAG,GAAG;AAC/D;EACF;AACA,MAAI,qBAAqB,IAAI,GAAG,KAAK,CAAC,UAAU,OAAO,WAAW,GAAG;AACnE,WAAO,SAAS,SAAS,GAAG;EAC9B,OAAO;AACL,aAAS,SAAS,GAAG,IAAI,CAAC,GAAI,SAAS,SAAS,GAAG,KAAK,CAAA,GAAK,GAAG,MAAM;EACxE;AACA,gBAAc,KAAK,GAAG;AACxB;AAEA,SAAS,iCAAiC,UAAwB,SAAgC,eAAuB;AACvH,sCAAoC,UAAU,SAAS,QAAQ,QAAQ,MAAM,QAAQ,YAAY,QAAQ,SAAS,QAAQ,sBAAsB,aAAa;AAC7J,8BAA4B,UAAU,SAAS,aAAa;AAC5D,sCAAoC,UAAU,QAAQ,QAAQ,QAAQ,KAAK,QAAQ,WAAW,QAAQ,QAAQ,QAAQ,sBAAsB,aAAa;AAC3J;AAEA,SAAS,oCACP,UACA,KACA,aACA,QACA,OACA,sBACA,eAAuB;AAEvB,MAAI,gBAAgB,UAAa,CAAC,qBAAqB,IAAI,GAAG,GAAG;AAC/D;EACF;AACA,MAAI,qBAAqB,IAAI,GAAG,KAAK,CAAC,UAAU,OAAO,WAAW,GAAG;AACnE,WAAO,SAAS,SAAS,GAAG;EAC9B,OAAO;AACL,UAAM,OAAO,CAAC,GAAK,SAAS,SAAS,GAAG,KAAyB,CAAA,CAAG;AACpE,UAAM,OAAO,IAAI,IAAI,KAAK,IAAI,CAAC,UAAU,MAAM,KAAK,CAAC,CAAC;AACtD,eAAW,SAAS,QAAQ;AAC1B,YAAM,WAAW,MAAM,KAAK;AAC5B,UAAI,CAAC,KAAK,IAAI,QAAQ,GAAG;AACvB,aAAK,KAAK,KAAK;AACf,aAAK,IAAI,QAAQ;MACnB;IACF;AACA,aAAS,SAAS,GAAG,IAAI;EAC3B;AACA,gBAAc,KAAK,GAAG;AACxB;AAEA,SAAS,4BAA4B,UAAwB,SAAgC,eAAuB;AAClH,MAAI,QAAQ,QAAQ,SAAS,UAAa,CAAC,QAAQ,qBAAqB,IAAI,OAAO,GAAG;AACpF;EACF;AACA,MAAI,QAAQ,qBAAqB,IAAI,OAAO,KAAK,QAAQ,QAAQ,iBAAiB,MAAM;AACtF,aAAS,SAAS,QAAQ,kBAAkB,QAAQ,YAAY,MAAM,KAAK,CAAA;EAC7E,WAAW,QAAQ,qBAAqB,IAAI,OAAO,KAAK,CAAC,QAAQ,YAAY,UAAU,QAAQ,YAAY,OAAO,WAAW,GAAG;AAC9H,WAAO,SAAS,SAAS;EAC3B,OAAO;AACL,aAAS,SAAS,QAAQ,kBAAkB,CAAC,GAAI,SAAS,SAAS,SAAS,CAAA,GAAK,GAAG,QAAQ,YAAY,MAAM,CAAC;EACjH;AACA,MAAI,SAAS,SAAS,UAAU,UAAa,SAAS,SAAS,MAAM,WAAW,GAAG;AACjF,WAAO,SAAS,SAAS;EAC3B;AACA,gBAAc,KAAK,OAAO;AAC5B;AAEA,SAAS,kBAAkB,QAAgC;AACzD,MAAI,CAAC,UAAU,OAAO,WAAW,GAAG;AAClC,WAAO;EACT;AACA,QAAM,OAAqB,CAAA;AAC3B,QAAM,OAAO,oBAAI,IAAG;AACpB,aAAW,SAAS,QAAQ;AAC1B,UAAM,MAAM,QAAQ,KAAK;AACzB,QAAI,CAAC,KAAK,IAAI,GAAG,GAAG;AAClB,WAAK,KAAK,KAAK;AACf,WAAK,IAAI,GAAG;IACd;EACF;AACA,SAAO;AACT;AAEA,SAAS,8BACP,UACA,SACA,uBAAkD;AAElD,QAAM,gBAAgB,QAAQ,QAAQ;AACtC,QAAM,mBAAmB,QAAQ,QAAQ;AACzC,QAAM,yBACH,MAAM,QAAQ,aAAa,KAAK,cAAc,SAAS,KACvD,MAAM,QAAQ,gBAAgB,KAAK,iBAAiB,SAAS;AAChE,MAAI,QAAQ,QAAQ,SAAS,UAAa,QAAQ,qBAAqB,IAAI,MAAM,KAAK,wBAAwB;AAC5G,UAAM,WAAW,QAAQ,qBAAqB,IAAI,MAAM,IACpD,CAAA,IACA,QAAQ,QAAQ,SAAS,SACvB,UAAU,QAAQ,QAAQ,IAAI,IAC9B,MAAM,QAAQ,SAAS,SAAS,IAAI,IAClC,CAAC,GAAI,SAAS,SAAS,IAAiB,IACxC,CAAA;AACR,aAAS,SAAS,OAAO,iBAAiB,kBAAkB,UAAU,aAAa,GAAG,gBAAgB;AACtG,0BAAsB,cAAc,KAAK,MAAM;EACjD;AACA,6BAA2B,kCAAkC,QAAQ,SAAS,qBAAqB;AACnG,qBAAmB,UAAU,SAAS,sBAAsB,aAAa;AAC3E;AAEA,SAAS,mBAAmB,UAAwB,SAAgC,eAAuB;AACzG,QAAM,WAAW,QAAQ,QAAQ,SAAS,QAAQ,QAAQ;AAC1D,MAAI,aAAa,UAAa,CAAC,QAAQ,qBAAqB,IAAI,OAAO,GAAG;AACxE;EACF;AACA,MAAI,QAAQ,qBAAqB,IAAI,OAAO,GAAG;AAC7C,WAAO,SAAS,SAAS;EAC3B,OAAO;AACL,UAAM,cAAc,oBAAoB,YAAY,IAAI,OAAO;AAC/D,QAAI,CAAC,OAAO,UAAU,WAAW,GAAG;AAClC,YAAM,IAAI,WAAW,4BAA4B,UAAU,KAAK;IAClE;AACA,aAAS,SAAS,QAAQ;EAC5B;AACA,gBAAc,KAAK,OAAO;AAC5B;AAEA,SAAS,gCACP,UACA,SACA,uBACA,UAAkB;AAElB,wBAAsB,UAAU,SAAS,sBAAsB,aAAa;AAC5E,sBAAoB,UAAU,SAAS,sBAAsB,aAAa;AAC1E,6BAA2B,qCAAqC,QAAQ,SAAS,qBAAqB;AACtG,6BAA2B,UAAU,SAAS,UAAU,UAAU,sBAAsB,aAAa;AACrG,6BAA2B,UAAU,SAAS,WAAW,UAAU,sBAAsB,aAAa;AACtG,yBAAuB,UAAU,SAAS,sBAAsB,aAAa;AAC7E,6BAA2B,+BAA+B,QAAQ,SAAS,qBAAqB;AAClG;AAEA,SAAS,sBAAsB,UAAwB,SAAgC,eAAuB;AAC5G,MAAI,QAAQ,QAAQ,aAAa,UAAa,CAAC,QAAQ,qBAAqB,IAAI,UAAU,GAAG;AAC3F;EACF;AACA,MAAI,QAAQ,qBAAqB,IAAI,UAAU,GAAG;AAChD,WAAO,SAAS,SAAS;EAC3B,OAAO;AACL,UAAM,WAAW,QAAQ,QAAQ,UAAU,KAAI,KAAM;AACrD,QAAI,aAAa,IAAI;AACnB,YAAM,IAAI,WAAW,mEAAmE,UAAU,KAAK;IACzG;AACA,aAAS,SAAS,WAAW;EAC/B;AACA,gBAAc,KAAK,UAAU;AAC/B;AAEA,SAAS,oBAAoB,UAAwB,SAAgC,eAAuB;AAC1G,MAAI,QAAQ,QAAQ,WAAW,UAAa,CAAC,QAAQ,qBAAqB,IAAI,QAAQ,GAAG;AACvF;EACF;AACA,MAAI,QAAQ,qBAAqB,IAAI,QAAQ,GAAG;AAC9C,WAAO,SAAS,SAAS;EAC3B,OAAO;AACL,aAAS,SAAS,SAAS,QAAQ,uBAAuB;EAC5D;AACA,gBAAc,KAAK,QAAQ;AAC7B;AAEA,SAAS,2BACP,UACA,SACA,KACA,UACA,eAAuB;AAEvB,MAAI,QAAQ,QAAQ,GAAG,MAAM,UAAa,CAAC,QAAQ,qBAAqB,IAAI,GAAG,GAAG;AAChF;EACF;AACA,MAAI,QAAQ,qBAAqB,IAAI,GAAG,GAAG;AACzC,WAAO,SAAS,SAAS,GAAG;EAC9B,OAAO;AACL,UAAM,aAAa,6BAA6B,KAAK,QAAQ,QAAQ,GAAG,KAAK,IAAI,QAAQ,SAAS,WAAW,qBAAqB;AAClI,aAAS,SAAS,GAAG,IAAI,WAAW;AACpC,aAAS,KAAK,GAAG,WAAW,QAAQ;EACtC;AACA,gBAAc,KAAK,GAAG;AACxB;AAEA,SAAS,uBAAuB,UAAwB,SAAgC,eAAuB;AAC7G,MAAI,QAAQ,QAAQ,cAAc,UAAa,CAAC,QAAQ,qBAAqB,IAAI,YAAY,GAAG;AAC9F;EACF;AACA,MAAI,QAAQ,qBAAqB,IAAI,YAAY,GAAG;AAClD,WAAO,SAAS,SAAS;EAC3B,OAAO;AACL,aAAS,SAAS,aAAa,QAAQ,QAAQ,WAAW,KAAI,KAAM;EACtE;AACA,gBAAc,KAAK,YAAY;AAC/B,+BACE,SAAS,UACT,QAAQ,+BACR,QAAQ,QACR,QAAQ,QACR,aAAa;AAEjB;AAEA,SAAS,uBAAuB,UAAwB,SAAgC,eAAuB;AAC7G,MAAI,QAAQ,QAAQ,aAAa,UAAa,QAAQ,qBAAqB,IAAI,WAAW,GAAG;AAC3F,QAAI,QAAQ,qBAAqB,IAAI,WAAW,GAAG;AACjD,aAAO,SAAS,SAAS;IAC3B,OAAO;AACL,eAAS,SAAS,YAAY,qBAAqB,QAAQ,QAAQ,YAAY,CAAA,GAAI,QAAQ,UAAU,EAAE,WAAW,UAAS,CAAE;IAC/H;AACA,kBAAc,KAAK,WAAW;EAChC;AACA,MAAI,QAAQ,QAAQ,UAAU,UAAa,QAAQ,qBAAqB,IAAI,QAAQ,GAAG;AACrF,QAAI,QAAQ,qBAAqB,IAAI,QAAQ,GAAG;AAC9C,aAAO,SAAS,SAAS;IAC3B,OAAO;AACL,eAAS,SAAS,SAAS,kBAAkB,QAAQ,QAAQ,SAAS,CAAA,GAAI,QAAQ,UAAU;QAC1F,kBAAkB;QAClB,6BAA6B;OAC9B;IACH;AACA,kBAAc,KAAK,QAAQ;EAC7B;AACF;AAEA,SAAS,wCACP,gBACA,SACA,eAAuB;AAEvB,qBAAmB,gBAAgB,QAAQ,qBAAqB,YAAY,IAAI,CAAC,eAAe,WAAW,YAAY,GAAG,QAAQ,sBAAsB,aAAa;AACrK,qBAAmB,gBAAgB,QAAQ,qBAAqB,QAAQ,sBAAsB,aAAa;AAC3G,aAAW,CAAC,UAAU,UAAU,KAAK,OAAO,QAAQ,QAAQ,mBAAmB,GAAG;AAChF,QAAI,QAAQ,qBAAqB,IAAI,QAAQ,GAAG;AAC9C,YAAM,YAAY,SAAS,WAAW,KAAK,GAAG;AAC9C,YAAM,aAAa,QAAQ,qBAAqB,YAAY,KAAK,CAAC,cAAc,UAAU,iBAAiB,QAAQ;AACnH,YAAM,aAAa,YAAY,YAAY;AAC3C,YAAM,IAAI,WACR,0BAA0B,SAAS,WAAW,UAAU,IACxD,UAAU,KAAK;IAEnB;AACA,QAAI,kBAAkB,eAAe,QAAQ,GAAG,UAAU,GAAG;AAC3D;IACF;AACA,mBAAe,QAAQ,IAAI;AAC3B,kBAAc,KAAK,QAAQ;EAC7B;AAEA,QAAM,6BAA6B,oCAAoC,QAAQ,QAAQ,OAAO,QAAQ,sBAAsB;AAC5H,aAAW,YAAY,OAAO,KAAK,0BAA0B,GAAG;AAC9D,QAAI,QAAQ,qBAAqB,IAAI,QAAQ,GAAG;AAC9C,YAAM,IAAI,WACR,0BAA0B,SAAS,WAAW,KAAK,GAAG,CAAC,iBAAiB,QAAQ,QAChF,UAAU,KAAK;IAEnB;EACF;AACA,aAAW,CAAC,UAAU,UAAU,KAAK,OAAO,QAAQ,0BAA0B,GAAG;AAC/E,QAAI,CAAC,kBAAkB,eAAe,QAAQ,GAAG,UAAU,GAAG;AAC5D,qBAAe,QAAQ,IAAI;AAC3B,oBAAc,KAAK,QAAQ;IAC7B;EACF;AACF;AAEA,SAAS,mBACP,gBACA,WACA,sBACA,eAAuB;AAEvB,aAAW,YAAY,WAAW;AAChC,QAAI,CAAC,qBAAqB,IAAI,QAAQ,KAAK,eAAe,QAAQ,MAAM,QAAW;AACjF;IACF;AACA,WAAO,eAAe,QAAQ;AAC9B,kBAAc,KAAK,QAAQ;EAC7B;AACF;AAEA,SAAS,qBAAqB,UAAwB,SAA8B;AAClF,QAAM,gBAA0B,CAAA;AAChC,QAAM,WAAqB,CAAA;AAC3B,QAAM,2BAA2B,yBAAyB,UAAU,QAAQ,SAAS,QAAQ,gBAAgB,aAAa;AAC1H,QAAM,iBAAiB,aAAa,SAAS,QAAQ;AACrD,QAAM,wBAAqD;IACzD;IACA,sBAAsB,QAAQ;IAC9B;IACA,UAAU,QAAQ;;AAGpB,qCAAmC,UAAU,SAAS,0BAA0B,aAAa;AAC7F,8BAA4B,UAAU,SAAS,aAAa;AAC5D,2BAAyB,UAAU,SAAS,aAAa;AACzD,8BAA4B,UAAU,SAAS,aAAa;AAC5D,mCAAiC,UAAU,SAAS,aAAa;AACjE,gCAA8B,UAAU,SAAS,qBAAqB;AACtE,kCAAgC,UAAU,SAAS,uBAAuB,QAAQ;AAClF,MACE,qBAAqB,SAAS,SAAS,QAAQ,QAAQ,cAAc,MAAM,QAAQ,eAAe,mBAClG,SAAS,SAAS,aAAa,QAC/B;AACA,WAAO,SAAS,SAAS;AACzB,QAAI,CAAC,cAAc,SAAS,UAAU,GAAG;AACvC,oBAAc,KAAK,UAAU;IAC/B;EACF;AACA,yBAAuB,UAAU,SAAS,aAAa;AACvD,0CAAwC,gBAAgB,SAAS,aAAa;AAC9E,MAAI;AACF,kDACE,gBACA,QAAQ,wBACR,EAAE,mBAAmB,QAAQ,qBAAoB,CAAE;EAEvD,SAAS,OAAgB;AACvB,UAAM,IAAI,WAAW,iBAAiB,QAAQ,MAAM,UAAU,uCAAuC,UAAU,KAAK;EACtH;AACA,SAAO,EAAE,eAAe,SAAQ;AAClC;AAKA,eAAsB,UAAU,IAAY,SAA+B,QAAqB;AAC9F,YAAU,MAAM,0BAA0B,OAAO;AACjD,QAAM,SAAS,cAAc,QAAQ,IAAG,GAAI,OAAO,IAAI;AACvD,QAAM,+BAA+B,MAAM;AAC3C,QAAM,WAAW,MAAM,aAAa,MAAM;AAC1C,QAAM,iBAAiB,6BAA6B,SAAS,MAAM;AACnE,QAAM,uBAAuB,4BAA4B,SAAS,MAAM;AACxE,QAAM,yBAAyB,gCAA+B;AAC9D,QAAM,sBAAsB,gCAAgC,sBAAsB;AAClF,QAAM,eAAe,wBAAwB,UAAU,sBAAsB;AAG7E,QAAM,sBAAqD,SAAS,WAAW,wBAAwB;AACvG,QAAM,gBAAgB,wBAAwB,QAAQ,CAAA,IAAK,qBAAqB,SAAS,MAAM;AAC/F,QAAM,wBAAwB,SAAS,WAAW;AAClD,QAAM,eAAe,wBAAwB,QAAQ,OAAO,sBAAsB,mBAAmB;AACrG,QAAM,kBAAkB,IAAI,IAAY,aAAa,UAAU;AAC/D,QAAM,uBAAuB,IAAI,IAAY,aAAa,eAAe;AAEzE,yBAAuB,OAAO;AAC9B,kCAAgC;IAC9B,aAAa,gCAAgC,OAAO;IACpD;IACA;IACA;GACD;AACD,+BAA6B,IAAI,SAAS,oBAAoB;AAE9D,6BAA2B,SAAS,YAAY;AAChD,2BAAyB,OAAO;AAEhC,QAAM,SAAS,SAAS,QAAQ,QAAQ,SAAS,cAAc;AAC/D,QAAM,WAAW,oBAAI,KAAI;AACzB,QAAM,SAAS,SAAS,YAAW;AACnC,QAAM,oBAAoB,yBAAyB,QAAQ,KAAK,SAAS,WAAW,MAAM;AAC1F,QAAM,qBAAqB,wBAAwB,QAAQ,WAAW,SAAS,SAAS;AACxF,QAAM,uBAAuB,aAAa,aAAa,QAAQ,SAAS,QAAQ,MAAM;AACtF,QAAM,iBAAiB,QAAQ,qBAAqB,QAAQ,qBAAqB,SAC7E;IACE,GAAG;IACH,QAAQ,qBAAqB,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,OAAO,OAAM,EAAG;MAE3E;AACJ,QAAM,cAAc,aAAa,UAAU,QAAQ,MAAM,QAAQ,MAAM;AACvE,QAAM,kBAAkB,aAAa,cAAc,QAAQ,UAAU,QAAQ,MAAM;AACnF,QAAM,cAAc,WAAW,QAAQ,IAAI;AAC3C,QAAM,cAAc,WAAW,QAAQ,IAAI;AAC3C,QAAM,aAAa,UAAU,QAAQ,GAAG;AACxC,QAAM,6BAAuC,CAAA;AAC7C,QAAM,kBAAkB,MAAM,gCAAgC;IAC5D;IACA;IACA;IACA;IACA;IACA;IACA;GACD;AAID,QAAM,sBAAsB,MAAM,iCAChC,QAAQ,WACR,qBAAqB,IAAI,YAAY,GACrC,QACA,SAAS,WACT,SAAS,aACT,aAAa,cAAc;AAE7B,QAAM,gCAAgC,oBAAoB;AAC1D,QAAM,0BAA0B,CAAC,GAAG,gBAAgB,UAAU,GAAG,4BAA4B,mBAAmB,CAAC;AAEjH,QAAM,sBAAsB,gCAC1B,SACA,sBACA,QAAQ,oBAAoB;AAE9B,QAAM,aAAa,sBAAsB,SAAS,mBAAmB;AACrE,QAAM,eAAe,OAAO,OAAO,UAAU,EAAE,KAAK,OAAO;AAE3D,MAAI,CAAC,cAAc;AACjB,WAAO,sBAAsB,EAAE,QAAQ,IAAI,UAAU,aAAY,CAAE;EACrE;AAEA,6BAA2B,KAAK,GAAG,MAAM,kCAAkC;IACzE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;GACD,CAAC;AACF,QAAM,cAAc,MAAM,uBAAuB;IAC/C;IACA;IACA;IACA;IACA;IACA;GACD;AACD,MAAI,aAAa;AACf,WAAO;EACT;AACA,0BAAwB,OAAO;AAE/B,QAAM,SAAS,MAAM,WAAW;IAC9B;IACA;IACA,cAAc,aAAa;IAC3B;IACA,IAAI,QAAQ,qBAAqB,QAAQ,QAAQ,wBAAwB,OAAO,iBAAiB;IACjG;IACA,SAAS,QAAQ;IACjB,OAAO,QAAQ;IACf,wBAAwB,QAAQ,qBAAqB,QAAQ,QAAQ,wBAAwB;IAC7F;IACA,OAAO,UAAQ;AACb,aAAO,qBAAqB,UAAU;QACpC;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,qBAAqB,gBAAgB;QACrC;QACA;QACA;QACA;QACA;QACA;OACD;IACH;GACD;AAED,SAAO;IACL,MAAM,aAAa,OAAO,IAAI;IAC9B,gBAAgB,OAAO;IACvB,UAAU,CAAC,GAAG,4BAA4B,GAAG,yBAAyB,GAAG,OAAO,QAAQ;IACxF,GAAI,QAAQ,qBAAqB,QAAQ,QAAQ,wBAAwB,OAAO,EAAE,cAAc,KAAI,IAAK,CAAA;;AAE7G;AAGO,IAAM,yBAAyB;EACpC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,+BAA+B,CAAC,OAAe,aAC7C,mCAAmC,OAAO,UAAU,QAAQ","debugId":"3d55c462-4329-5de1-8913-e26600734d6f"}