@unbrained/pm-cli 2026.5.31 → 2026.6.5

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 (586) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/dist/cli/argv-utils.js +7 -3
  3. package/dist/cli/argv-utils.js.map +1 -1
  4. package/dist/cli/bootstrap-args.d.ts +1 -0
  5. package/dist/cli/bootstrap-args.js +23 -3
  6. package/dist/cli/bootstrap-args.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +17 -3
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.d.ts +63 -0
  10. package/dist/cli/commands/close-many.js +302 -0
  11. package/dist/cli/commands/close-many.js.map +1 -0
  12. package/dist/cli/commands/completion.d.ts +1 -0
  13. package/dist/cli/commands/completion.js +241 -27
  14. package/dist/cli/commands/completion.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +4 -4
  16. package/dist/cli/commands/config.js +115 -3
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/contracts.js +191 -162
  19. package/dist/cli/commands/contracts.js.map +1 -1
  20. package/dist/cli/commands/create.d.ts +1 -0
  21. package/dist/cli/commands/create.js +77 -114
  22. package/dist/cli/commands/create.js.map +1 -1
  23. package/dist/cli/commands/extension/doctor.d.ts +12 -0
  24. package/dist/cli/commands/extension/doctor.js +97 -2
  25. package/dist/cli/commands/extension/doctor.js.map +1 -1
  26. package/dist/cli/commands/extension/scaffold.js +49 -48
  27. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  28. package/dist/cli/commands/extension.js +51 -23
  29. package/dist/cli/commands/extension.js.map +1 -1
  30. package/dist/cli/commands/get.js +7 -7
  31. package/dist/cli/commands/get.js.map +1 -1
  32. package/dist/cli/commands/health.js +38 -3
  33. package/dist/cli/commands/health.js.map +1 -1
  34. package/dist/cli/commands/index.d.ts +2 -1
  35. package/dist/cli/commands/index.js +4 -3
  36. package/dist/cli/commands/index.js.map +1 -1
  37. package/dist/cli/commands/init.d.ts +10 -0
  38. package/dist/cli/commands/init.js +107 -4
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/list.d.ts +5 -0
  41. package/dist/cli/commands/list.js +58 -26
  42. package/dist/cli/commands/list.js.map +1 -1
  43. package/dist/cli/commands/reindex.js +163 -47
  44. package/dist/cli/commands/reindex.js.map +1 -1
  45. package/dist/cli/commands/repeatable-metadata-parsers.d.ts +15 -0
  46. package/dist/cli/commands/repeatable-metadata-parsers.js +120 -0
  47. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -0
  48. package/dist/cli/commands/restore.js +25 -4
  49. package/dist/cli/commands/restore.js.map +1 -1
  50. package/dist/cli/commands/schema.d.ts +122 -1
  51. package/dist/cli/commands/schema.js +536 -6
  52. package/dist/cli/commands/schema.js.map +1 -1
  53. package/dist/cli/commands/search.d.ts +1 -0
  54. package/dist/cli/commands/search.js +18 -4
  55. package/dist/cli/commands/search.js.map +1 -1
  56. package/dist/cli/commands/test.js +4 -3
  57. package/dist/cli/commands/test.js.map +1 -1
  58. package/dist/cli/commands/update-many.js +69 -140
  59. package/dist/cli/commands/update-many.js.map +1 -1
  60. package/dist/cli/commands/update.d.ts +2 -0
  61. package/dist/cli/commands/update.js +138 -119
  62. package/dist/cli/commands/update.js.map +1 -1
  63. package/dist/cli/commands/validate.d.ts +1 -0
  64. package/dist/cli/commands/validate.js +63 -33
  65. package/dist/cli/commands/validate.js.map +1 -1
  66. package/dist/cli/error-guidance.js +26 -3
  67. package/dist/cli/error-guidance.js.map +1 -1
  68. package/dist/cli/help-content.js +82 -3
  69. package/dist/cli/help-content.js.map +1 -1
  70. package/dist/cli/main.js +377 -23
  71. package/dist/cli/main.js.map +1 -1
  72. package/dist/cli/register-list-query.js +9 -3
  73. package/dist/cli/register-list-query.js.map +1 -1
  74. package/dist/cli/register-mutation.js +200 -28
  75. package/dist/cli/register-mutation.js.map +1 -1
  76. package/dist/cli/register-operations.js +4 -2
  77. package/dist/cli/register-operations.js.map +1 -1
  78. package/dist/cli/register-setup.js +4 -2
  79. package/dist/cli/register-setup.js.map +1 -1
  80. package/dist/cli/registration-helpers.js +31 -4
  81. package/dist/cli/registration-helpers.js.map +1 -1
  82. package/dist/cli-bundle/chunks/activity-3RWRRNOW.js +20 -0
  83. package/dist/cli-bundle/chunks/activity-3RWRRNOW.js.map +1 -0
  84. package/dist/cli-bundle/chunks/activity-P5BUMWP3.js +16 -0
  85. package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js +206 -0
  86. package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js.map +1 -0
  87. package/dist/cli-bundle/chunks/{aggregate-ADUOSFRO.js → aggregate-OOAGKWRG.js} +11 -11
  88. package/dist/cli-bundle/chunks/{append-JD2DETU7.js → append-5JE3YGXU.js} +8 -9
  89. package/dist/cli-bundle/chunks/{append-JD2DETU7.js.map → append-5JE3YGXU.js.map} +1 -1
  90. package/dist/cli-bundle/chunks/append-PNN6UIBZ.js +69 -0
  91. package/dist/cli-bundle/chunks/append-PNN6UIBZ.js.map +1 -0
  92. package/dist/cli-bundle/chunks/chunk-26KTVXJW.js +218 -0
  93. package/dist/cli-bundle/chunks/chunk-26KTVXJW.js.map +1 -0
  94. package/dist/cli-bundle/chunks/{chunk-JULRTHJQ.js → chunk-3OH4DAEB.js} +119 -6
  95. package/dist/cli-bundle/chunks/chunk-3OH4DAEB.js.map +7 -0
  96. package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js +5553 -0
  97. package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js.map +1 -0
  98. package/dist/cli-bundle/chunks/{chunk-WDPXDQFG.js → chunk-4PJQSECJ.js} +6 -4
  99. package/dist/cli-bundle/chunks/chunk-4PJQSECJ.js.map +7 -0
  100. package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js +1832 -0
  101. package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js.map +1 -0
  102. package/dist/cli-bundle/chunks/{chunk-6HT2F4TK.js → chunk-5IRA6IYD.js} +175 -54
  103. package/dist/cli-bundle/chunks/chunk-5IRA6IYD.js.map +7 -0
  104. package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js +412 -0
  105. package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js.map +1 -0
  106. package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js +182 -0
  107. package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js.map +1 -0
  108. package/dist/cli-bundle/chunks/chunk-7K24QB23.js +698 -0
  109. package/dist/cli-bundle/chunks/chunk-7K24QB23.js.map +1 -0
  110. package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js +380 -0
  111. package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js.map +1 -0
  112. package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js +230 -0
  113. package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js.map +1 -0
  114. package/dist/cli-bundle/chunks/{chunk-G57E5D7T.js → chunk-ATBVS6WW.js} +5 -5
  115. package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js +332 -0
  116. package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js.map +1 -0
  117. package/dist/cli-bundle/chunks/{chunk-PXUAZUUY.js → chunk-B3N4TKNL.js} +12 -11
  118. package/dist/cli-bundle/chunks/chunk-B3N4TKNL.js.map +7 -0
  119. package/dist/cli-bundle/chunks/{chunk-KBQY3YG5.js → chunk-BNL6S7QH.js} +3 -3
  120. package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js +154 -0
  121. package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-NGN7UV5K.js → chunk-CJDQB2ED.js} +2 -2
  123. package/dist/cli-bundle/chunks/chunk-CWT53EYT.js +1340 -0
  124. package/dist/cli-bundle/chunks/chunk-CWT53EYT.js.map +1 -0
  125. package/dist/cli-bundle/chunks/{chunk-D7AOMPRH.js → chunk-D3WUNETC.js} +5 -5
  126. package/dist/cli-bundle/chunks/{chunk-3M73P3G6.js → chunk-D5X7N6FI.js} +210 -132
  127. package/dist/cli-bundle/chunks/chunk-D5X7N6FI.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-6YCV7WSL.js → chunk-DFIZGAI5.js} +10 -12
  129. package/dist/cli-bundle/chunks/{chunk-6YCV7WSL.js.map → chunk-DFIZGAI5.js.map} +1 -1
  130. package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js +1704 -0
  131. package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js.map +1 -0
  132. package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js +2988 -0
  133. package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js.map +1 -0
  134. package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js +128 -0
  135. package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js.map +1 -0
  136. package/dist/cli-bundle/chunks/chunk-G5BACLYH.js +454 -0
  137. package/dist/cli-bundle/chunks/chunk-G5BACLYH.js.map +1 -0
  138. package/dist/cli-bundle/chunks/{chunk-U7FMKRXH.js → chunk-GCAVRLGE.js} +37 -16
  139. package/dist/cli-bundle/chunks/chunk-GCAVRLGE.js.map +7 -0
  140. package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js +57 -0
  141. package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js.map +1 -0
  142. package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js +3860 -0
  143. package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js.map +1 -0
  144. package/dist/cli-bundle/chunks/chunk-GPGAYASV.js +346 -0
  145. package/dist/cli-bundle/chunks/chunk-GPGAYASV.js.map +1 -0
  146. package/dist/cli-bundle/chunks/{chunk-MD7K4JYF.js → chunk-HPH6X4ZZ.js} +26 -15
  147. package/dist/cli-bundle/chunks/chunk-HPH6X4ZZ.js.map +7 -0
  148. package/dist/cli-bundle/chunks/{chunk-5HSEP75M.js → chunk-HZOS2UG5.js} +18 -6
  149. package/dist/cli-bundle/chunks/chunk-HZOS2UG5.js.map +7 -0
  150. package/dist/cli-bundle/chunks/chunk-IUV734HF.js +17 -0
  151. package/dist/cli-bundle/chunks/chunk-IUV734HF.js.map +1 -0
  152. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js +15 -0
  153. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js.map +1 -0
  154. package/dist/cli-bundle/chunks/{chunk-L2FXEKDB.js → chunk-JB4RGL4V.js} +7 -7
  155. package/dist/cli-bundle/chunks/chunk-JQI2HE55.js +130 -0
  156. package/dist/cli-bundle/chunks/chunk-JQI2HE55.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-SEXQN4KL.js → chunk-K47WAYQV.js} +3 -3
  158. package/dist/cli-bundle/chunks/{chunk-CEFIVZPG.js → chunk-KA24HME7.js} +2 -2
  159. package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js +1325 -0
  160. package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js.map +1 -0
  161. package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js +242 -0
  162. package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js.map +1 -0
  163. package/dist/cli-bundle/chunks/{chunk-7Y53ZJIQ.js → chunk-KK6YPGH3.js} +22 -3
  164. package/dist/cli-bundle/chunks/chunk-KK6YPGH3.js.map +7 -0
  165. package/dist/cli-bundle/chunks/{chunk-A7E7PUVX.js → chunk-LDJK7SHN.js} +7 -7
  166. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js +24 -0
  167. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js.map +1 -0
  168. package/dist/cli-bundle/chunks/chunk-MISYRLEP.js +80 -0
  169. package/dist/cli-bundle/chunks/chunk-MISYRLEP.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-FQE6XZDB.js → chunk-N5YF3VFN.js} +54 -32
  171. package/dist/cli-bundle/chunks/chunk-N5YF3VFN.js.map +7 -0
  172. package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js +173 -0
  173. package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js.map +1 -0
  174. package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js +338 -0
  175. package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js.map +1 -0
  176. package/dist/cli-bundle/chunks/{chunk-OGZEG5TT.js → chunk-OIQIXTNB.js} +164 -53
  177. package/dist/cli-bundle/chunks/chunk-OIQIXTNB.js.map +7 -0
  178. package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js +751 -0
  179. package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js.map +1 -0
  180. package/dist/cli-bundle/chunks/{chunk-JTWRXG4B.js → chunk-OUF3ARDX.js} +251 -251
  181. package/dist/cli-bundle/chunks/chunk-OUF3ARDX.js.map +7 -0
  182. package/dist/cli-bundle/chunks/{chunk-PVNQLCIS.js → chunk-RANZIID5.js} +2 -2
  183. package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js +140 -0
  184. package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js.map +7 -0
  185. package/dist/cli-bundle/chunks/{chunk-JFWUHHS2.js → chunk-S3CV7JGJ.js} +4 -4
  186. package/dist/cli-bundle/chunks/{chunk-LSXGH6NE.js → chunk-SRVKTWPR.js} +748 -196
  187. package/dist/cli-bundle/chunks/chunk-SRVKTWPR.js.map +7 -0
  188. package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js +76 -0
  189. package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js.map +1 -0
  190. package/dist/cli-bundle/chunks/chunk-SZQCER6S.js +631 -0
  191. package/dist/cli-bundle/chunks/chunk-SZQCER6S.js.map +1 -0
  192. package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js +540 -0
  193. package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js.map +1 -0
  194. package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js +422 -0
  195. package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-P53TN6IA.js → chunk-TK633IVD.js} +35 -8
  197. package/dist/cli-bundle/chunks/chunk-TK633IVD.js.map +7 -0
  198. package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js +131 -0
  199. package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js.map +7 -0
  200. package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js +119 -0
  201. package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js.map +1 -0
  202. package/dist/cli-bundle/chunks/chunk-UOVLWB47.js +1664 -0
  203. package/dist/cli-bundle/chunks/chunk-UOVLWB47.js.map +1 -0
  204. package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js +186 -0
  205. package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js.map +1 -0
  206. package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js +182 -0
  207. package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-LRBOHPUE.js → chunk-WIKR7KFL.js} +8 -8
  209. package/dist/cli-bundle/chunks/{chunk-BUPWJ3IJ.js → chunk-XG7RJYHV.js} +484 -49
  210. package/dist/cli-bundle/chunks/chunk-XG7RJYHV.js.map +7 -0
  211. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js +53 -0
  212. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js.map +1 -0
  213. package/dist/cli-bundle/chunks/{chunk-AKOOMO3T.js → chunk-XX5LRINW.js} +2 -2
  214. package/dist/cli-bundle/chunks/{chunk-WJ2NAC37.js → chunk-Y2AKE2HS.js} +3 -3
  215. package/dist/cli-bundle/chunks/{chunk-GN7IJPCD.js → chunk-ZQ4F6EC4.js} +301 -24
  216. package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js.map +7 -0
  217. package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js +1809 -0
  218. package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{claim-EE4TKKCV.js → claim-AZLP7YFO.js} +10 -11
  220. package/dist/cli-bundle/chunks/{claim-EE4TKKCV.js.map → claim-AZLP7YFO.js.map} +1 -1
  221. package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js +129 -0
  222. package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js.map +1 -0
  223. package/dist/cli-bundle/chunks/close-65DFYAVS.js +17 -0
  224. package/dist/cli-bundle/chunks/close-65DFYAVS.js.map +1 -0
  225. package/dist/cli-bundle/chunks/close-RMHQ3KWH.js +13 -0
  226. package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js +311 -0
  227. package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js.map +1 -0
  228. package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js +314 -0
  229. package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js.map +7 -0
  230. package/dist/cli-bundle/chunks/{comments-AAKJQ6LW.js → comments-AGBNSJJH.js} +10 -11
  231. package/dist/cli-bundle/chunks/{comments-AAKJQ6LW.js.map → comments-AGBNSJJH.js.map} +1 -1
  232. package/dist/cli-bundle/chunks/comments-CJWXQI7X.js +100 -0
  233. package/dist/cli-bundle/chunks/comments-CJWXQI7X.js.map +1 -0
  234. package/dist/cli-bundle/chunks/{config-V3FZOKLI.js → config-5ON3ADRH.js} +121 -10
  235. package/dist/cli-bundle/chunks/config-5ON3ADRH.js.map +7 -0
  236. package/dist/cli-bundle/chunks/config-DDPYIA6J.js +1671 -0
  237. package/dist/cli-bundle/chunks/config-DDPYIA6J.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{context-RZ5QPNJB.js → context-E6U3DWVM.js} +32 -19
  239. package/dist/cli-bundle/chunks/{context-RZ5QPNJB.js.map → context-E6U3DWVM.js.map} +2 -2
  240. package/dist/cli-bundle/chunks/context-ZOJEN5VT.js +1461 -0
  241. package/dist/cli-bundle/chunks/context-ZOJEN5VT.js.map +1 -0
  242. package/dist/cli-bundle/chunks/{contracts-YLMH33VU.js → contracts-CXSFM45B.js} +194 -162
  243. package/dist/cli-bundle/chunks/contracts-CXSFM45B.js.map +7 -0
  244. package/dist/cli-bundle/chunks/contracts-LCSX5R53.js +1274 -0
  245. package/dist/cli-bundle/chunks/contracts-LCSX5R53.js.map +1 -0
  246. package/dist/cli-bundle/chunks/create-ATONSAZW.js +27 -0
  247. package/dist/cli-bundle/chunks/create-WYFKN2U4.js +31 -0
  248. package/dist/cli-bundle/chunks/create-WYFKN2U4.js.map +1 -0
  249. package/dist/cli-bundle/chunks/{delete-RHCTEORS.js → delete-RONNH4F4.js} +7 -8
  250. package/dist/cli-bundle/chunks/{delete-RHCTEORS.js.map → delete-RONNH4F4.js.map} +1 -1
  251. package/dist/cli-bundle/chunks/delete-ZXWC56WO.js +55 -0
  252. package/dist/cli-bundle/chunks/delete-ZXWC56WO.js.map +1 -0
  253. package/dist/cli-bundle/chunks/deps-EHXIFOZR.js +225 -0
  254. package/dist/cli-bundle/chunks/deps-EHXIFOZR.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{deps-MZYCMLAO.js → deps-WII3O4HB.js} +7 -8
  256. package/dist/cli-bundle/chunks/{deps-MZYCMLAO.js.map → deps-WII3O4HB.js.map} +1 -1
  257. package/dist/cli-bundle/chunks/{docs-FXXUCZYU.js → docs-JMVCFNHH.js} +9 -10
  258. package/dist/cli-bundle/chunks/{docs-FXXUCZYU.js.map → docs-JMVCFNHH.js.map} +1 -1
  259. package/dist/cli-bundle/chunks/docs-PDREIMLS.js +31 -0
  260. package/dist/cli-bundle/chunks/docs-PDREIMLS.js.map +1 -0
  261. package/dist/cli-bundle/chunks/extension-B4ROVWJD.js +28 -0
  262. package/dist/cli-bundle/chunks/extension-B4ROVWJD.js.map +1 -0
  263. package/dist/cli-bundle/chunks/{extension-B4WL7BQU.js → extension-G6UXSM5S.js} +4 -5
  264. package/dist/cli-bundle/chunks/files-2PN7UM2D.js +282 -0
  265. package/dist/cli-bundle/chunks/files-2PN7UM2D.js.map +1 -0
  266. package/dist/cli-bundle/chunks/{files-WVOX67PE.js → files-MXYS5W4M.js} +9 -10
  267. package/dist/cli-bundle/chunks/{files-WVOX67PE.js.map → files-MXYS5W4M.js.map} +1 -1
  268. package/dist/cli-bundle/chunks/gc-GT552UJH.js +178 -0
  269. package/dist/cli-bundle/chunks/gc-GT552UJH.js.map +1 -0
  270. package/dist/cli-bundle/chunks/{gc-JWNF66EC.js → gc-QNBRJG6H.js} +3 -3
  271. package/dist/cli-bundle/chunks/{get-LTK3HOCQ.js → get-CINFEUIY.js} +16 -17
  272. package/dist/cli-bundle/chunks/get-CINFEUIY.js.map +7 -0
  273. package/dist/cli-bundle/chunks/get-WXMLRG7M.js +194 -0
  274. package/dist/cli-bundle/chunks/get-WXMLRG7M.js.map +1 -0
  275. package/dist/cli-bundle/chunks/health-5VPOJQ53.js +1258 -0
  276. package/dist/cli-bundle/chunks/health-5VPOJQ53.js.map +1 -0
  277. package/dist/cli-bundle/chunks/{health-TCWL55KM.js → health-IT5DBPRJ.js} +43 -15
  278. package/dist/cli-bundle/chunks/health-IT5DBPRJ.js.map +7 -0
  279. package/dist/cli-bundle/chunks/history-6FC4H6HI.js +20 -0
  280. package/dist/cli-bundle/chunks/history-FLZIP7PM.js +24 -0
  281. package/dist/cli-bundle/chunks/history-FLZIP7PM.js.map +1 -0
  282. package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js +23 -0
  283. package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js.map +1 -0
  284. package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js +19 -0
  285. package/dist/cli-bundle/chunks/{history-repair-ZWSTDRH2.js → history-repair-KC5ZOJRZ.js} +12 -14
  286. package/dist/cli-bundle/chunks/{history-repair-ZWSTDRH2.js.map → history-repair-KC5ZOJRZ.js.map} +1 -1
  287. package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js +193 -0
  288. package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js.map +1 -0
  289. package/dist/cli-bundle/chunks/init-6MRFVOLH.js +20 -0
  290. package/dist/cli-bundle/chunks/init-6MRFVOLH.js.map +1 -0
  291. package/dist/cli-bundle/chunks/init-KHX3FEEM.js +16 -0
  292. package/dist/cli-bundle/chunks/{learnings-NXTWE3FR.js → learnings-A3CLB5CO.js} +10 -11
  293. package/dist/cli-bundle/chunks/{learnings-NXTWE3FR.js.map → learnings-A3CLB5CO.js.map} +1 -1
  294. package/dist/cli-bundle/chunks/learnings-DCX55BNX.js +44 -0
  295. package/dist/cli-bundle/chunks/learnings-DCX55BNX.js.map +1 -0
  296. package/dist/cli-bundle/chunks/list-53LZ2AEO.js +20 -0
  297. package/dist/cli-bundle/chunks/list-DBRECOG4.js +24 -0
  298. package/dist/cli-bundle/chunks/list-DBRECOG4.js.map +1 -0
  299. package/dist/cli-bundle/chunks/{notes-DFS5ZGOO.js → notes-42LIC3UE.js} +10 -11
  300. package/dist/cli-bundle/chunks/{notes-DFS5ZGOO.js.map → notes-42LIC3UE.js.map} +1 -1
  301. package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js +44 -0
  302. package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js.map +1 -0
  303. package/dist/cli-bundle/chunks/{plan-67AB2PLM.js → plan-HDQXEUKD.js} +13 -14
  304. package/dist/cli-bundle/chunks/{plan-67AB2PLM.js.map → plan-HDQXEUKD.js.map} +1 -1
  305. package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js +1171 -0
  306. package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js.map +1 -0
  307. package/dist/cli-bundle/chunks/{register-list-query-UP3VRUFS.js → register-list-query-AG3XKXWL.js} +22 -24
  308. package/dist/cli-bundle/chunks/register-list-query-AG3XKXWL.js.map +7 -0
  309. package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js +227 -0
  310. package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js.map +1 -0
  311. package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js +813 -0
  312. package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js.map +1 -0
  313. package/dist/cli-bundle/chunks/{register-mutation-YWSBF545.js → register-mutation-RSMT6DPK.js} +154 -43
  314. package/dist/cli-bundle/chunks/register-mutation-RSMT6DPK.js.map +7 -0
  315. package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js +370 -0
  316. package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js.map +1 -0
  317. package/dist/cli-bundle/chunks/{register-operations-3BDTGSDH.js → register-operations-Q54JQZUN.js} +33 -34
  318. package/dist/cli-bundle/chunks/register-operations-Q54JQZUN.js.map +7 -0
  319. package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js +242 -0
  320. package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{register-setup-V56GDRUS.js → register-setup-YJKIQRKA.js} +18 -19
  322. package/dist/cli-bundle/chunks/{register-setup-V56GDRUS.js.map → register-setup-YJKIQRKA.js.map} +2 -2
  323. package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js +21 -0
  324. package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js.map +1 -0
  325. package/dist/cli-bundle/chunks/restore-JL5QIH7H.js +17 -0
  326. package/dist/cli-bundle/chunks/schema-LVXZWFGY.js +770 -0
  327. package/dist/cli-bundle/chunks/schema-LVXZWFGY.js.map +1 -0
  328. package/dist/cli-bundle/chunks/schema-V6BX65Q2.js +780 -0
  329. package/dist/cli-bundle/chunks/schema-V6BX65Q2.js.map +7 -0
  330. package/dist/cli-bundle/chunks/{search-HENBL456.js → search-5A3BMFA7.js} +25 -16
  331. package/dist/cli-bundle/chunks/search-5A3BMFA7.js.map +7 -0
  332. package/dist/cli-bundle/chunks/search-C7NPB7G7.js +1127 -0
  333. package/dist/cli-bundle/chunks/search-C7NPB7G7.js.map +1 -0
  334. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js +120 -0
  335. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js.map +1 -0
  336. package/dist/cli-bundle/chunks/{stats-N6H3YP2F.js → stats-Y2CBTZSL.js} +7 -8
  337. package/dist/cli-bundle/chunks/{stats-N6H3YP2F.js.map → stats-Y2CBTZSL.js.map} +1 -1
  338. package/dist/cli-bundle/chunks/test-OFYONO3C.js +35 -0
  339. package/dist/cli-bundle/chunks/test-OFYONO3C.js.map +1 -0
  340. package/dist/cli-bundle/chunks/test-RJ4ZF35X.js +31 -0
  341. package/dist/cli-bundle/chunks/{test-all-G2AZOHXI.js → test-all-EEMKNTGU.js} +13 -14
  342. package/dist/cli-bundle/chunks/{test-all-G2AZOHXI.js.map → test-all-EEMKNTGU.js.map} +1 -1
  343. package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js +328 -0
  344. package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js.map +1 -0
  345. package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js +929 -0
  346. package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js.map +1 -0
  347. package/dist/cli-bundle/chunks/{test-runs-GX5HTPSF.js → test-runs-L2M7WKH7.js} +5 -5
  348. package/dist/cli-bundle/chunks/update-6YEHPVXH.js +25 -0
  349. package/dist/cli-bundle/chunks/update-6YEHPVXH.js.map +1 -0
  350. package/dist/cli-bundle/chunks/update-PYLVHMRD.js +21 -0
  351. package/dist/cli-bundle/chunks/{update-many-46HRSP2Q.js → update-many-322CCH2L.js} +78 -146
  352. package/dist/cli-bundle/chunks/update-many-322CCH2L.js.map +7 -0
  353. package/dist/cli-bundle/chunks/update-many-DYWGW57M.js +605 -0
  354. package/dist/cli-bundle/chunks/update-many-DYWGW57M.js.map +1 -0
  355. package/dist/cli-bundle/chunks/{upgrade-H5HHM5UV.js → upgrade-2U727SAM.js} +5 -7
  356. package/dist/cli-bundle/chunks/{upgrade-H5HHM5UV.js.map → upgrade-2U727SAM.js.map} +1 -1
  357. package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js +266 -0
  358. package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js.map +1 -0
  359. package/dist/cli-bundle/chunks/validate-GZ24NYHO.js +1120 -0
  360. package/dist/cli-bundle/chunks/validate-GZ24NYHO.js.map +1 -0
  361. package/dist/cli-bundle/chunks/{validate-TMCVKIGZ.js → validate-ZFVWPEEN.js} +61 -48
  362. package/dist/cli-bundle/chunks/validate-ZFVWPEEN.js.map +7 -0
  363. package/dist/cli-bundle/main.js +490 -52
  364. package/dist/cli-bundle/main.js.map +2 -2
  365. package/dist/core/checkpoint/mutation-checkpoint.d.ts +44 -0
  366. package/dist/core/checkpoint/mutation-checkpoint.js +119 -0
  367. package/dist/core/checkpoint/mutation-checkpoint.js.map +1 -0
  368. package/dist/core/config/positional-value.js +4 -2
  369. package/dist/core/config/positional-value.js.map +1 -1
  370. package/dist/core/diagnostics/remediation.d.ts +73 -0
  371. package/dist/core/diagnostics/remediation.js +328 -0
  372. package/dist/core/diagnostics/remediation.js.map +1 -0
  373. package/dist/core/extensions/extension-hook-runtime.js +9 -2
  374. package/dist/core/extensions/extension-hook-runtime.js.map +1 -1
  375. package/dist/core/extensions/extension-types.d.ts +60 -4
  376. package/dist/core/extensions/extension-types.js +2 -2
  377. package/dist/core/extensions/extension-types.js.map +1 -1
  378. package/dist/core/extensions/index.d.ts +5 -1
  379. package/dist/core/extensions/index.js +61 -2
  380. package/dist/core/extensions/index.js.map +1 -1
  381. package/dist/core/extensions/item-fields.d.ts +5 -1
  382. package/dist/core/extensions/item-fields.js +126 -4
  383. package/dist/core/extensions/item-fields.js.map +1 -1
  384. package/dist/core/extensions/loader.js +283 -8
  385. package/dist/core/extensions/loader.js.map +1 -1
  386. package/dist/core/item/item-format.d.ts +3 -2
  387. package/dist/core/item/item-format.js +15 -10
  388. package/dist/core/item/item-format.js.map +1 -1
  389. package/dist/core/item/status-filter.d.ts +29 -0
  390. package/dist/core/item/status-filter.js +97 -0
  391. package/dist/core/item/status-filter.js.map +1 -0
  392. package/dist/core/item/type-registry.js +4 -2
  393. package/dist/core/item/type-registry.js.map +1 -1
  394. package/dist/core/output/output.js +17 -5
  395. package/dist/core/output/output.js.map +1 -1
  396. package/dist/core/schema/item-types-file.d.ts +15 -0
  397. package/dist/core/schema/item-types-file.js +27 -2
  398. package/dist/core/schema/item-types-file.js.map +1 -1
  399. package/dist/core/schema/runtime-field-filters.js +4 -3
  400. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  401. package/dist/core/schema/runtime-field-values.d.ts +1 -1
  402. package/dist/core/schema/runtime-field-values.js +10 -4
  403. package/dist/core/schema/runtime-field-values.js.map +1 -1
  404. package/dist/core/schema/runtime-schema.js +75 -2
  405. package/dist/core/schema/runtime-schema.js.map +1 -1
  406. package/dist/core/schema/status-defs-file.d.ts +113 -0
  407. package/dist/core/schema/status-defs-file.js +260 -0
  408. package/dist/core/schema/status-defs-file.js.map +1 -0
  409. package/dist/core/schema/type-workflows.d.ts +64 -0
  410. package/dist/core/schema/type-workflows.js +98 -0
  411. package/dist/core/schema/type-workflows.js.map +1 -0
  412. package/dist/core/search/cache.d.ts +3 -1
  413. package/dist/core/search/cache.js +104 -28
  414. package/dist/core/search/cache.js.map +1 -1
  415. package/dist/core/search/http-client.d.ts +2 -2
  416. package/dist/core/search/http-client.js +2 -2
  417. package/dist/core/search/http-client.js.map +1 -1
  418. package/dist/core/search/vector-stores.d.ts +1 -0
  419. package/dist/core/search/vector-stores.js +64 -14
  420. package/dist/core/search/vector-stores.js.map +1 -1
  421. package/dist/core/search/vectorization-metadata.d.ts +13 -0
  422. package/dist/core/search/vectorization-metadata.js +65 -0
  423. package/dist/core/search/vectorization-metadata.js.map +1 -0
  424. package/dist/core/shared/serialization.d.ts +1 -0
  425. package/dist/core/shared/serialization.js +86 -2
  426. package/dist/core/shared/serialization.js.map +1 -1
  427. package/dist/core/store/front-matter-cache.js +14 -5
  428. package/dist/core/store/front-matter-cache.js.map +1 -1
  429. package/dist/core/store/item-store.d.ts +2 -0
  430. package/dist/core/store/item-store.js +61 -6
  431. package/dist/core/store/item-store.js.map +1 -1
  432. package/dist/core/store/settings-validator.js +18 -2
  433. package/dist/core/store/settings-validator.js.map +1 -1
  434. package/dist/core/store/settings.js +40 -5
  435. package/dist/core/store/settings.js.map +1 -1
  436. package/dist/core/telemetry/consent.js +3 -3
  437. package/dist/core/telemetry/consent.js.map +1 -1
  438. package/dist/core/telemetry/observability.js +4 -3
  439. package/dist/core/telemetry/observability.js.map +1 -1
  440. package/dist/mcp/server.js +221 -12
  441. package/dist/mcp/server.js.map +1 -1
  442. package/dist/sdk/cli-contracts/commander-mutation-options.js +16 -2
  443. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  444. package/dist/sdk/cli-contracts/commander-types.js +7 -2
  445. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  446. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  447. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  448. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  449. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -0
  450. package/dist/sdk/cli-contracts/tool-option-contracts.js +53 -3
  451. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  452. package/dist/sdk/cli-contracts/tool-parameter-tables.js +35 -6
  453. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  454. package/dist/sdk/cli-contracts.d.ts +19 -1
  455. package/dist/sdk/cli-contracts.js +187 -15
  456. package/dist/sdk/cli-contracts.js.map +1 -1
  457. package/dist/sdk/errors.d.ts +22 -0
  458. package/dist/sdk/errors.js +46 -0
  459. package/dist/sdk/errors.js.map +1 -0
  460. package/dist/sdk/index.d.ts +2 -1
  461. package/dist/sdk/index.js +3 -2
  462. package/dist/sdk/index.js.map +1 -1
  463. package/dist/sdk/package-import-adapters.js +14 -3
  464. package/dist/sdk/package-import-adapters.js.map +1 -1
  465. package/dist/sdk/runtime.d.ts +1 -0
  466. package/dist/sdk/runtime.js +3 -2
  467. package/dist/sdk/runtime.js.map +1 -1
  468. package/dist/sdk/testing.d.ts +77 -0
  469. package/dist/sdk/testing.js +239 -0
  470. package/dist/sdk/testing.js.map +1 -0
  471. package/dist/types.d.ts +19 -0
  472. package/dist/types.js +3 -2
  473. package/dist/types.js.map +1 -1
  474. package/docs/AGENT_GUIDE.md +21 -2
  475. package/docs/COMMANDS.md +85 -5
  476. package/docs/CONFIGURATION.md +49 -2
  477. package/docs/EXTENSIONS.md +118 -6
  478. package/docs/QUICKSTART.md +2 -0
  479. package/docs/RELEASING.md +2 -2
  480. package/docs/SDK.md +273 -1
  481. package/docs/TESTING.md +17 -0
  482. package/docs/examples/policy-restricted-extension/manifest.json +1 -0
  483. package/docs/examples/starter-extension/index.js +9 -1
  484. package/docs/examples/starter-extension/manifest.json +1 -0
  485. package/package.json +12 -6
  486. package/packages/pm-beads/extensions/beads/index.js +2 -4
  487. package/packages/pm-beads/extensions/beads/index.ts +43 -33
  488. package/packages/pm-beads/extensions/beads/manifest.json +12 -1
  489. package/packages/pm-calendar/README.md +6 -0
  490. package/packages/pm-calendar/extensions/calendar/index.js +6 -1
  491. package/packages/pm-calendar/extensions/calendar/index.ts +6 -1
  492. package/packages/pm-calendar/extensions/calendar/manifest.json +6 -1
  493. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +6 -1
  494. package/packages/pm-guide-shell/README.md +4 -0
  495. package/packages/pm-guide-shell/extensions/guide-shell/index.js +22 -0
  496. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +22 -0
  497. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +6 -1
  498. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +74 -3
  499. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +84 -4
  500. package/packages/pm-lifecycle-hooks/README.md +29 -0
  501. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +18 -0
  502. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +20 -0
  503. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +9 -0
  504. package/packages/pm-lifecycle-hooks/package.json +52 -0
  505. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +13 -1
  506. package/packages/pm-search-advanced/extensions/search-advanced/index.js +69 -1
  507. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +91 -2
  508. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +13 -1
  509. package/packages/pm-templates/extensions/templates/manifest.json +6 -1
  510. package/packages/pm-todos/extensions/todos/index.js +3 -7
  511. package/packages/pm-todos/extensions/todos/index.ts +55 -42
  512. package/packages/pm-todos/extensions/todos/manifest.json +13 -1
  513. package/scripts/bundle-cli.mjs +121 -17
  514. package/dist/cli-bundle/chunks/activity-OWYSUZOY.js +0 -17
  515. package/dist/cli-bundle/chunks/chunk-3M73P3G6.js.map +0 -7
  516. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js +0 -189
  517. package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js.map +0 -7
  518. package/dist/cli-bundle/chunks/chunk-5HSEP75M.js.map +0 -7
  519. package/dist/cli-bundle/chunks/chunk-6HT2F4TK.js.map +0 -7
  520. package/dist/cli-bundle/chunks/chunk-7Y53ZJIQ.js.map +0 -7
  521. package/dist/cli-bundle/chunks/chunk-BUPWJ3IJ.js.map +0 -7
  522. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js +0 -47
  523. package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js.map +0 -7
  524. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js +0 -56
  525. package/dist/cli-bundle/chunks/chunk-FM26RGSU.js.map +0 -7
  526. package/dist/cli-bundle/chunks/chunk-FQE6XZDB.js.map +0 -7
  527. package/dist/cli-bundle/chunks/chunk-GN7IJPCD.js.map +0 -7
  528. package/dist/cli-bundle/chunks/chunk-JTWRXG4B.js.map +0 -7
  529. package/dist/cli-bundle/chunks/chunk-JULRTHJQ.js.map +0 -7
  530. package/dist/cli-bundle/chunks/chunk-LSXGH6NE.js.map +0 -7
  531. package/dist/cli-bundle/chunks/chunk-MD7K4JYF.js.map +0 -7
  532. package/dist/cli-bundle/chunks/chunk-OGZEG5TT.js.map +0 -7
  533. package/dist/cli-bundle/chunks/chunk-P53TN6IA.js.map +0 -7
  534. package/dist/cli-bundle/chunks/chunk-PXUAZUUY.js.map +0 -7
  535. package/dist/cli-bundle/chunks/chunk-U7FMKRXH.js.map +0 -7
  536. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js +0 -141
  537. package/dist/cli-bundle/chunks/chunk-VGICHR7D.js.map +0 -7
  538. package/dist/cli-bundle/chunks/chunk-WDPXDQFG.js.map +0 -7
  539. package/dist/cli-bundle/chunks/close-XY4CSAYF.js +0 -14
  540. package/dist/cli-bundle/chunks/config-V3FZOKLI.js.map +0 -7
  541. package/dist/cli-bundle/chunks/contracts-YLMH33VU.js.map +0 -7
  542. package/dist/cli-bundle/chunks/create-PZVHRIZQ.js +0 -28
  543. package/dist/cli-bundle/chunks/get-LTK3HOCQ.js.map +0 -7
  544. package/dist/cli-bundle/chunks/health-TCWL55KM.js.map +0 -7
  545. package/dist/cli-bundle/chunks/history-A2JUDXUE.js +0 -21
  546. package/dist/cli-bundle/chunks/history-redact-ED6RFCPL.js +0 -20
  547. package/dist/cli-bundle/chunks/init-M2WUB4YH.js +0 -16
  548. package/dist/cli-bundle/chunks/list-OGWQPC26.js +0 -20
  549. package/dist/cli-bundle/chunks/register-list-query-UP3VRUFS.js.map +0 -7
  550. package/dist/cli-bundle/chunks/register-mutation-YWSBF545.js.map +0 -7
  551. package/dist/cli-bundle/chunks/register-operations-3BDTGSDH.js.map +0 -7
  552. package/dist/cli-bundle/chunks/restore-MB2ISME7.js +0 -18
  553. package/dist/cli-bundle/chunks/schema-Q622KC46.js +0 -119
  554. package/dist/cli-bundle/chunks/schema-Q622KC46.js.map +0 -7
  555. package/dist/cli-bundle/chunks/search-HENBL456.js.map +0 -7
  556. package/dist/cli-bundle/chunks/test-VNBDRJ4Z.js +0 -32
  557. package/dist/cli-bundle/chunks/update-H6SCWNMA.js +0 -22
  558. package/dist/cli-bundle/chunks/update-many-46HRSP2Q.js.map +0 -7
  559. package/dist/cli-bundle/chunks/validate-TMCVKIGZ.js.map +0 -7
  560. /package/dist/cli-bundle/chunks/{activity-OWYSUZOY.js.map → activity-P5BUMWP3.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{aggregate-ADUOSFRO.js.map → aggregate-OOAGKWRG.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-G57E5D7T.js.map → chunk-ATBVS6WW.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-KBQY3YG5.js.map → chunk-BNL6S7QH.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-NGN7UV5K.js.map → chunk-CJDQB2ED.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-D7AOMPRH.js.map → chunk-D3WUNETC.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-L2FXEKDB.js.map → chunk-JB4RGL4V.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-SEXQN4KL.js.map → chunk-K47WAYQV.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-CEFIVZPG.js.map → chunk-KA24HME7.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-A7E7PUVX.js.map → chunk-LDJK7SHN.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{chunk-PVNQLCIS.js.map → chunk-RANZIID5.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{chunk-JFWUHHS2.js.map → chunk-S3CV7JGJ.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{chunk-LRBOHPUE.js.map → chunk-WIKR7KFL.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{chunk-AKOOMO3T.js.map → chunk-XX5LRINW.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{chunk-WJ2NAC37.js.map → chunk-Y2AKE2HS.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{close-XY4CSAYF.js.map → close-RMHQ3KWH.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{create-PZVHRIZQ.js.map → create-ATONSAZW.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{extension-B4WL7BQU.js.map → extension-G6UXSM5S.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{gc-JWNF66EC.js.map → gc-QNBRJG6H.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{history-A2JUDXUE.js.map → history-6FC4H6HI.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{history-redact-ED6RFCPL.js.map → history-redact-XKYEZDBL.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{init-M2WUB4YH.js.map → init-KHX3FEEM.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{list-OGWQPC26.js.map → list-53LZ2AEO.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{restore-MB2ISME7.js.map → restore-JL5QIH7H.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{test-VNBDRJ4Z.js.map → test-RJ4ZF35X.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{test-runs-GX5HTPSF.js.map → test-runs-L2M7WKH7.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{update-H6SCWNMA.js.map → update-PYLVHMRD.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../core/schema/runtime-field-values.ts", "../../../../../../../../core/item/status.ts", "../../../../../../../../core/shared/conflict-markers.ts", "../../../../../../../../core/item/item-format.ts", "../../../../../../../../core/item/toon-decode.ts"],
4
+ "sourcesContent": ["import { EXIT_CODE } from \"../shared/constants.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { runtimeFieldOptionTarget, type RuntimeFieldDefinitionResolved, type RuntimeFieldRegistry } from \"./runtime-schema.js\";\n\nfunction toCamelToken(value: string): string {\n const segments = value\n .trim()\n .replaceAll(/[^A-Za-z0-9]+/g, \" \")\n .split(/\\s+/)\n .filter((segment) => segment.length > 0)\n .map((segment) => segment.toLowerCase());\n if (segments.length === 0) {\n return value;\n }\n const [first, ...rest] = segments;\n return `${first}${rest.map((segment) => `${segment.slice(0, 1).toUpperCase()}${segment.slice(1)}`).join(\"\")}`;\n}\n\nfunction resolveCandidateOptionKeys(definition: RuntimeFieldDefinitionResolved): string[] {\n return [...new Set([\n runtimeFieldOptionTarget(definition),\n toCamelToken(definition.key),\n toCamelToken(definition.cli_flag),\n ...definition.cli_aliases.map((alias) => toCamelToken(alias)),\n ])];\n}\n\nexport function readRuntimeFieldOptionValue(\n options: Record<string, unknown>,\n definition: RuntimeFieldDefinitionResolved,\n): unknown {\n for (const candidateKey of resolveCandidateOptionKeys(definition)) {\n if (!Object.hasOwn(options, candidateKey)) {\n continue;\n }\n const value = options[candidateKey];\n if (value !== undefined) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction normalizeStringArrayValue(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value\n .flatMap((entry) => normalizeStringArrayValue(entry))\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n }\n if (typeof value === \"string\") {\n return value\n .split(/[,\\n|]/)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n }\n if (value === undefined || value === null) {\n return [];\n }\n return [String(value).trim()].filter((entry) => entry.length > 0);\n}\n\nfunction parseBooleanValue(raw: unknown, label: string): boolean {\n if (typeof raw === \"boolean\") {\n return raw;\n }\n if (typeof raw === \"number\") {\n if (raw === 1) {\n return true;\n }\n if (raw === 0) {\n return false;\n }\n }\n if (typeof raw === \"string\") {\n const normalized = raw.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\" || normalized === \"yes\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\" || normalized === \"no\") {\n return false;\n }\n }\n throw new PmCliError(`${label} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);\n}\n\nfunction parseNumberValue(raw: unknown, label: string): number {\n if (typeof raw === \"number\" && Number.isFinite(raw)) {\n return raw;\n }\n const candidate = typeof raw === \"string\" ? raw.trim() : String(raw);\n const parsed = Number(candidate);\n if (!Number.isFinite(parsed)) {\n throw new PmCliError(`${label} must be a number`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nexport function coerceRuntimeFieldValue(\n definition: RuntimeFieldDefinitionResolved,\n rawValue: unknown,\n labelOverride?: string,\n): unknown {\n const label = labelOverride ?? `--${definition.cli_flag}`;\n if (definition.repeatable || definition.type === \"string_array\") {\n const values = normalizeStringArrayValue(rawValue);\n if (definition.type === \"number\") {\n return values.map((value) => parseNumberValue(value, label));\n }\n if (definition.type === \"boolean\") {\n return values.map((value) => parseBooleanValue(value, label));\n }\n return values;\n }\n\n const scalarRaw = Array.isArray(rawValue) ? rawValue[rawValue.length - 1] : rawValue;\n if (scalarRaw === undefined) {\n return undefined;\n }\n if (definition.type === \"number\") {\n return parseNumberValue(scalarRaw, label);\n }\n if (definition.type === \"boolean\") {\n return parseBooleanValue(scalarRaw, label);\n }\n return typeof scalarRaw === \"string\" ? scalarRaw : String(scalarRaw);\n}\n\nfunction shouldRequireFieldOnCreate(definition: RuntimeFieldDefinitionResolved, itemTypeName: string | undefined): boolean {\n if (!definition.required && !definition.required_on_create) {\n return false;\n }\n if (definition.required_types.length === 0) {\n return true;\n }\n if (!itemTypeName) {\n return false;\n }\n return definition.required_types.map((value) => value.toLowerCase()).includes(itemTypeName.trim().toLowerCase());\n}\n\nexport function collectRuntimeCreateFieldValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n itemTypeName: string | undefined,\n): { values: Record<string, unknown>; missing_required_flags: string[] } {\n const values: Record<string, unknown> = {};\n const missingRequiredFlags: string[] = [];\n for (const definition of fieldRegistry.command_to_fields.get(\"create\") ?? []) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n if (shouldRequireFieldOnCreate(definition, itemTypeName)) {\n missingRequiredFlags.push(`--${definition.cli_flag}`);\n }\n continue;\n }\n values[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return {\n values,\n missing_required_flags: [...new Set(missingRequiredFlags)].sort((left, right) => left.localeCompare(right)),\n };\n}\n\nexport function collectRuntimeUpdateFieldValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n commands: Array<\"update\" | \"update_many\"> | null | undefined = [\"update\"],\n): Record<string, unknown> {\n const values: Record<string, unknown> = {};\n const definitions = (commands ?? [\"update\"]).flatMap((command) => fieldRegistry.command_to_fields.get(command) ?? []);\n const seen = new Set<string>();\n for (const definition of definitions) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n continue;\n }\n if (seen.has(definition.metadata_key)) {\n continue;\n }\n seen.add(definition.metadata_key);\n values[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return values;\n}\n", "import { STATUS_VALUES } from \"../../types/index.js\";\nimport type { ItemStatus } from \"../../types/index.js\";\nimport { normalizeStatusInputWithRegistry, type RuntimeStatusRegistry } from \"../schema/runtime-schema.js\";\n\nconst STATUS_ALIAS_MAP: Readonly<Record<string, ItemStatus>> = {\n \"in-progress\": \"in_progress\",\n cancelled: \"canceled\",\n};\n\nexport function normalizeStatusInput(value: unknown, registry?: RuntimeStatusRegistry): ItemStatus | undefined {\n if (registry) {\n const normalizedFromRegistry = normalizeStatusInputWithRegistry(value, registry);\n if (normalizedFromRegistry) {\n return normalizedFromRegistry;\n }\n }\n if (typeof value !== \"string\") {\n return undefined;\n }\n const normalized = value.trim().toLowerCase();\n if (!normalized) {\n return undefined;\n }\n const canonical = STATUS_ALIAS_MAP[normalized] ?? normalized;\n if (!(STATUS_VALUES as readonly string[]).includes(canonical)) {\n return undefined;\n }\n return canonical as ItemStatus;\n}\n\n/**\n * Normalize a status against the runtime registry, falling back to the original\n * value when normalization does not resolve to a known status. This preserves\n * the long-standing `normalizeStatusInput(status, registry) ?? status` pattern\n * used by query commands so that unknown/custom statuses still compare against\n * registry sets by their raw value.\n */\nexport function normalizeStatusForRegistry(status: ItemStatus, registry: RuntimeStatusRegistry): ItemStatus {\n return normalizeStatusInput(status, registry) ?? status;\n}\n\n/**\n * Determine whether a status is terminal according to the runtime status\n * registry, applying registry-aware normalization first (with raw fallback).\n */\nexport function isTerminalStatus(status: ItemStatus, registry: RuntimeStatusRegistry): boolean {\n return registry.terminal_statuses.has(normalizeStatusForRegistry(status, registry));\n}\n", "export interface ConflictMarkerMatch {\n line: number;\n marker: \"<<<<<<<\" | \"=======\" | \">>>>>>>\";\n text: string;\n}\n\nconst CONFLICT_MARKER_PATTERN = /^\\s*(<<<<<<<|=======|>>>>>>>)(?:\\s.*)?$/;\n\nexport function findMergeConflictMarkers(content: string): ConflictMarkerMatch[] {\n if (content.length === 0) {\n return [];\n }\n const lines = content.split(/\\r?\\n/);\n const matches: ConflictMarkerMatch[] = [];\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index] ?? \"\";\n const markerMatch = line.match(CONFLICT_MARKER_PATTERN);\n if (!markerMatch) {\n continue;\n }\n const marker = markerMatch[1] as ConflictMarkerMatch[\"marker\"];\n matches.push({\n line: index + 1,\n marker,\n text: line,\n });\n }\n return matches;\n}\n\nexport function findFirstMergeConflictMarker(content: string): ConflictMarkerMatch | undefined {\n const matches = findMergeConflictMarkers(content);\n return matches[0];\n}\n", "import { encode as encodeToon } from \"@toon-format/toon\";\nimport type {\n CalendarEvent,\n Comment,\n Dependency,\n ItemDocument,\n ItemMetadata,\n RuntimeSchemaSettings,\n ItemTestRunSummary,\n LinkedDoc,\n LinkedFile,\n LinkedTest,\n LogNote,\n PlanDecision,\n PlanDiscovery,\n PlanStep,\n PlanStepDoc,\n PlanStepFile,\n PlanStepLink,\n PlanStepStatus,\n PlanValidationCheck,\n RecurrenceRule,\n Reminder,\n} from \"../../types/index.js\";\nimport type { ItemFormat } from \"../../types/index.js\";\nimport {\n CONFIDENCE_TEXT_VALUES,\n ISSUE_SEVERITY_VALUES,\n RECURRENCE_FREQUENCY_VALUES,\n RECURRENCE_WEEKDAY_VALUES,\n STATUS_VALUES,\n weekdayOrderIndex,\n} from \"../../types/index.js\";\nimport { coerceRuntimeFieldValue } from \"../schema/runtime-field-values.js\";\nimport {\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../schema/runtime-schema.js\";\nimport { normalizeStatusInput } from \"./status.js\";\nimport { decodeToonItemContent } from \"./toon-decode.js\";\nimport { EXIT_CODE, FRONT_MATTER_KEY_ORDER } from \"../shared/constants.js\";\nimport { findFirstMergeConflictMarker } from \"../shared/conflict-markers.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { orderObject } from \"../shared/serialization.js\";\nimport { compareTimestampStrings, isTimestampLiteral } from \"../shared/time.js\";\n\nconst LINKED_TEST_PM_CONTEXT_MODE_VALUES = new Set([\"schema\", \"tracker\", \"auto\"]);\n\nfunction normalizePathValue(value: string): string {\n return value.replaceAll(\"\\\\\", \"/\");\n}\n\nconst REQUIRED_STRING_FIELDS = [\n \"id\",\n \"title\",\n \"description\",\n \"created_at\",\n \"updated_at\",\n] as const;\n\nconst STATIC_FRONT_MATTER_FIELD_SET = new Set(FRONT_MATTER_KEY_ORDER);\n\ninterface RuntimeSchemaValidationContext {\n statusRegistry?: RuntimeStatusRegistry;\n fieldRegistry?: RuntimeFieldRegistry;\n unknownFieldPolicy: \"allow\" | \"warn\" | \"reject\";\n extensionFieldNames: ReadonlySet<string>;\n onWarning?: (warning: string) => void;\n}\n\nexport interface ItemDocumentFormatOptions {\n format?: ItemFormat;\n schema?: RuntimeSchemaSettings;\n extensionFieldNames?: readonly string[];\n onWarning?: (warning: string) => void;\n}\n\nfunction resolveRuntimeSchemaValidationContext(\n options: ItemDocumentFormatOptions | undefined,\n): RuntimeSchemaValidationContext | undefined {\n if (!options?.schema) {\n return undefined;\n }\n return {\n statusRegistry: resolveRuntimeStatusRegistry(options.schema),\n fieldRegistry: resolveRuntimeFieldRegistry(options.schema),\n unknownFieldPolicy: options.schema.unknown_field_policy ?? \"allow\",\n extensionFieldNames: new Set(options.extensionFieldNames ?? []),\n onWarning: options.onWarning,\n };\n}\n\nfunction runtimeFieldRequiredForType(definition: RuntimeFieldRegistry[\"definitions\"][number], typeName: string): boolean {\n if (!definition.required) {\n return false;\n }\n if (definition.required_types.length === 0) {\n return true;\n }\n return definition.required_types.map((value) => value.toLowerCase()).includes(typeName.trim().toLowerCase());\n}\n\nfunction validationError(message: string): never {\n throw new PmCliError(`Invalid item front matter: ${message}`, EXIT_CODE.GENERIC_FAILURE);\n}\n\nfunction buildKnownFrontMatterKeys(runtimeContext: RuntimeSchemaValidationContext): Set<string> {\n const knownKeys = new Set(STATIC_FRONT_MATTER_FIELD_SET);\n for (const definition of runtimeContext.fieldRegistry?.definitions ?? []) {\n knownKeys.add(definition.metadata_key);\n }\n for (const fieldName of runtimeContext.extensionFieldNames) {\n knownKeys.add(fieldName);\n }\n return knownKeys;\n}\n\nfunction assertFrontMatterCondition(condition: boolean, message: string): void {\n if (!condition) {\n validationError(message);\n }\n}\n\nfunction assertTimestampField(record: Record<string, unknown>, fieldName: \"created_at\" | \"updated_at\" | \"deadline\"): void {\n const rawValue = record[fieldName];\n assertFrontMatterCondition(typeof rawValue === \"string\", `${fieldName} must be a string`);\n const timestamp = rawValue as string;\n assertFrontMatterCondition(isTimestampLiteral(timestamp), `${fieldName} must be a valid ISO timestamp`);\n}\n\nfunction assertValidRecurrenceRule(recurrence: unknown): void {\n assertFrontMatterCondition(\n typeof recurrence === \"object\" && recurrence !== null && !Array.isArray(recurrence),\n \"event.recurrence must be an object\",\n );\n const recurrenceRecord = recurrence as Record<string, unknown>;\n assertFrontMatterCondition(typeof recurrenceRecord.freq === \"string\", \"event.recurrence.freq must be a string\");\n const frequency = (recurrenceRecord.freq as string).trim().toLowerCase();\n assertFrontMatterCondition(\n RECURRENCE_FREQUENCY_VALUES.includes(frequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number]),\n `event.recurrence.freq must be one of: ${RECURRENCE_FREQUENCY_VALUES.join(\", \")}`,\n );\n\n if (recurrenceRecord.interval !== undefined) {\n assertFrontMatterCondition(\n typeof recurrenceRecord.interval === \"number\" &&\n Number.isInteger(recurrenceRecord.interval) &&\n (recurrenceRecord.interval as number) >= 1,\n \"event.recurrence.interval must be an integer >= 1\",\n );\n }\n\n if (recurrenceRecord.count !== undefined) {\n assertFrontMatterCondition(\n typeof recurrenceRecord.count === \"number\" && Number.isInteger(recurrenceRecord.count) && (recurrenceRecord.count as number) >= 1,\n \"event.recurrence.count must be an integer >= 1\",\n );\n }\n\n if (recurrenceRecord.until !== undefined) {\n assertFrontMatterCondition(typeof recurrenceRecord.until === \"string\", \"event.recurrence.until must be a string\");\n assertFrontMatterCondition(\n isTimestampLiteral(recurrenceRecord.until as string),\n \"event.recurrence.until must be a valid ISO timestamp\",\n );\n }\n\n if (recurrenceRecord.by_weekday !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_weekday), \"event.recurrence.by_weekday must be an array\");\n for (const weekday of recurrenceRecord.by_weekday as unknown[]) {\n assertFrontMatterCondition(typeof weekday === \"string\", \"event.recurrence.by_weekday entries must be strings\");\n const normalizedWeekday = (weekday as string).trim().toLowerCase();\n assertFrontMatterCondition(\n RECURRENCE_WEEKDAY_VALUES.includes(normalizedWeekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number]),\n `event.recurrence.by_weekday entries must be one of: ${RECURRENCE_WEEKDAY_VALUES.join(\", \")}`,\n );\n }\n }\n\n if (recurrenceRecord.by_month_day !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_month_day), \"event.recurrence.by_month_day must be an array\");\n for (const day of recurrenceRecord.by_month_day as unknown[]) {\n assertFrontMatterCondition(\n typeof day === \"number\" && Number.isInteger(day) && day >= 1 && day <= 31,\n \"event.recurrence.by_month_day entries must be integers 1..31\",\n );\n }\n }\n\n if (recurrenceRecord.exdates !== undefined) {\n assertFrontMatterCondition(Array.isArray(recurrenceRecord.exdates), \"event.recurrence.exdates must be an array\");\n for (const exdate of recurrenceRecord.exdates as unknown[]) {\n assertFrontMatterCondition(typeof exdate === \"string\", \"event.recurrence.exdates entries must be strings\");\n assertFrontMatterCondition(isTimestampLiteral(exdate as string), \"event.recurrence.exdates entries must be valid ISO timestamps\");\n }\n }\n}\n\nfunction assertValidFrontMatter(\n frontMatter: unknown,\n runtimeContext?: RuntimeSchemaValidationContext,\n): asserts frontMatter is ItemMetadata {\n assertFrontMatterCondition(\n typeof frontMatter === \"object\" && frontMatter !== null && !Array.isArray(frontMatter),\n \"front matter must be an object\",\n );\n\n const record = frontMatter as Record<string, unknown>;\n for (const fieldName of REQUIRED_STRING_FIELDS) {\n assertFrontMatterCondition(typeof record[fieldName] === \"string\", `${fieldName} is required and must be a string`);\n }\n\n const itemType = record.type;\n assertFrontMatterCondition(typeof itemType === \"string\" && itemType.trim().length > 0, \"type must be a non-empty string\");\n\n const status = record.status;\n assertFrontMatterCondition(\n typeof status === \"string\" && status.trim().length > 0,\n \"status must be a non-empty string\",\n );\n const statusRegistry = runtimeContext?.statusRegistry;\n const normalizedStatus = normalizeStatusInput(status as string, statusRegistry);\n const statusDomain = statusRegistry\n ? statusRegistry.definitions.map((definition) => definition.id)\n : [...STATUS_VALUES];\n assertFrontMatterCondition(normalizedStatus !== undefined, `status must be one of: ${statusDomain.join(\", \")}`);\n\n const priority = record.priority;\n assertFrontMatterCondition(\n typeof priority === \"number\" && Number.isInteger(priority) && [0, 1, 2, 3, 4].includes(priority),\n \"priority must be an integer 0..4\",\n );\n\n const tags = record.tags;\n assertFrontMatterCondition(Array.isArray(tags), \"tags must be an array\");\n for (const tag of tags as unknown[]) {\n assertFrontMatterCondition(typeof tag === \"string\", \"tags entries must be strings\");\n }\n\n const confidence = record.confidence;\n if (confidence !== undefined) {\n if (typeof confidence === \"number\") {\n assertFrontMatterCondition(\n Number.isInteger(confidence) && confidence >= 0 && confidence <= 100,\n \"confidence number value must be an integer 0..100\",\n );\n } else if (typeof confidence === \"string\") {\n const normalizedConfidence = confidence.trim().toLowerCase();\n const isKnownTextConfidence =\n normalizedConfidence === \"med\" || CONFIDENCE_TEXT_VALUES.includes(normalizedConfidence as (typeof CONFIDENCE_TEXT_VALUES)[number]);\n assertFrontMatterCondition(\n isKnownTextConfidence,\n `confidence string value must be one of: ${[...CONFIDENCE_TEXT_VALUES, \"med\"].join(\", \")}`,\n );\n } else {\n assertFrontMatterCondition(false, \"confidence must be a number or string\");\n }\n }\n\n const severity = record.severity;\n if (severity !== undefined) {\n if (typeof severity !== \"string\") {\n validationError(\"severity must be a string\");\n }\n const normalizedSeverity = severity.trim().toLowerCase();\n const isKnownSeverity =\n normalizedSeverity === \"med\" || ISSUE_SEVERITY_VALUES.includes(normalizedSeverity as (typeof ISSUE_SEVERITY_VALUES)[number]);\n assertFrontMatterCondition(\n isKnownSeverity,\n `severity value must be one of: ${[...ISSUE_SEVERITY_VALUES, \"med\"].join(\", \")}`,\n );\n }\n\n const regression = record.regression;\n if (regression !== undefined) {\n if (typeof regression !== \"boolean\") {\n validationError(\"regression must be a boolean\");\n }\n }\n\n assertTimestampField(record, \"created_at\");\n assertTimestampField(record, \"updated_at\");\n if (record.deadline !== undefined) {\n assertTimestampField(record, \"deadline\");\n }\n if (record.reminders !== undefined) {\n const reminders = record.reminders;\n assertFrontMatterCondition(Array.isArray(reminders), \"reminders must be an array\");\n for (const reminder of reminders as unknown[]) {\n assertFrontMatterCondition(typeof reminder === \"object\" && reminder !== null && !Array.isArray(reminder), \"reminders entries must be objects\");\n const reminderRecord = reminder as Record<string, unknown>;\n assertFrontMatterCondition(typeof reminderRecord.at === \"string\", \"reminder.at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(reminderRecord.at as string), \"reminder.at must be a valid ISO timestamp\");\n assertFrontMatterCondition(typeof reminderRecord.text === \"string\", \"reminder.text must be a string\");\n assertFrontMatterCondition((reminderRecord.text as string).trim().length > 0, \"reminder.text must not be empty\");\n }\n }\n if (record.events !== undefined) {\n const events = record.events;\n assertFrontMatterCondition(Array.isArray(events), \"events must be an array\");\n for (const event of events as unknown[]) {\n assertFrontMatterCondition(typeof event === \"object\" && event !== null && !Array.isArray(event), \"events entries must be objects\");\n const eventRecord = event as Record<string, unknown>;\n assertFrontMatterCondition(typeof eventRecord.start_at === \"string\", \"event.start_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(eventRecord.start_at as string), \"event.start_at must be a valid ISO timestamp\");\n\n if (eventRecord.end_at !== undefined) {\n assertFrontMatterCondition(typeof eventRecord.end_at === \"string\", \"event.end_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(eventRecord.end_at as string), \"event.end_at must be a valid ISO timestamp\");\n assertFrontMatterCondition(\n compareTimestampStrings(eventRecord.end_at as string, eventRecord.start_at as string) > 0,\n \"event.end_at must be after event.start_at\",\n );\n }\n\n for (const stringField of [\"title\", \"description\", \"location\", \"timezone\"] as const) {\n if (eventRecord[stringField] !== undefined) {\n assertFrontMatterCondition(typeof eventRecord[stringField] === \"string\", `event.${stringField} must be a string`);\n assertFrontMatterCondition(\n (eventRecord[stringField] as string).trim().length > 0,\n `event.${stringField} must not be empty`,\n );\n }\n }\n\n if (eventRecord.all_day !== undefined) {\n assertFrontMatterCondition(typeof eventRecord.all_day === \"boolean\", \"event.all_day must be a boolean\");\n }\n\n if (eventRecord.recurrence !== undefined) {\n assertValidRecurrenceRule(eventRecord.recurrence);\n if ((eventRecord.recurrence as Record<string, unknown>).until !== undefined) {\n assertFrontMatterCondition(\n compareTimestampStrings(\n (eventRecord.recurrence as Record<string, unknown>).until as string,\n eventRecord.start_at as string,\n ) >= 0,\n \"event.recurrence.until must be at or after event.start_at\",\n );\n }\n }\n }\n }\n if (record.closed_at !== undefined) {\n const closedAt = record.closed_at;\n assertFrontMatterCondition(typeof closedAt === \"string\", \"closed_at must be a string\");\n assertFrontMatterCondition(isTimestampLiteral(closedAt as string), \"closed_at must be a valid ISO timestamp\");\n }\n for (const fieldName of [\"source_type\", \"source_owner\", \"design\", \"external_ref\"] as const) {\n const value = record[fieldName];\n if (value !== undefined) {\n assertFrontMatterCondition(typeof value === \"string\", `${fieldName} must be a string`);\n }\n }\n const typeOptions = record.type_options;\n if (typeOptions !== undefined) {\n assertFrontMatterCondition(\n typeof typeOptions === \"object\" && typeOptions !== null && !Array.isArray(typeOptions),\n \"type_options must be an object\",\n );\n for (const [optionKey, optionValue] of Object.entries(typeOptions as Record<string, unknown>)) {\n assertFrontMatterCondition(optionKey.trim().length > 0, \"type_options keys must be non-empty\");\n assertFrontMatterCondition(typeof optionValue === \"string\", \"type_options values must be strings\");\n const optionText = optionValue as string;\n assertFrontMatterCondition(optionText.trim().length > 0, \"type_options values must be non-empty strings\");\n }\n }\n\n if (runtimeContext?.fieldRegistry) {\n for (const definition of runtimeContext.fieldRegistry.definitions) {\n const fieldValue = record[definition.metadata_key];\n if (fieldValue === undefined) {\n if (runtimeFieldRequiredForType(definition, itemType as string)) {\n validationError(`missing required schema field: ${definition.metadata_key}`);\n }\n continue;\n }\n try {\n record[definition.metadata_key] = coerceRuntimeFieldValue(\n definition,\n fieldValue,\n `metadata field \"${definition.metadata_key}\"`,\n );\n } catch (error: unknown) {\n validationError(\n error instanceof Error ? error.message.replace(/^Invalid\\s+/u, \"\") : `invalid ${definition.metadata_key} value`,\n );\n }\n }\n }\n\n if (runtimeContext && runtimeContext.unknownFieldPolicy !== \"allow\") {\n const knownKeys = buildKnownFrontMatterKeys(runtimeContext);\n const unknownKeys = Object.keys(record).filter((key) => !knownKeys.has(key)).sort((left, right) => left.localeCompare(right));\n if (unknownKeys.length > 0) {\n if (runtimeContext.unknownFieldPolicy === \"reject\") {\n validationError(`unknown schema fields are not allowed: ${unknownKeys.join(\", \")}`);\n } else {\n runtimeContext.onWarning?.(`item_unknown_schema_fields:${unknownKeys.join(\",\")}`);\n }\n }\n }\n}\n\nfunction sortDependencies(values: Dependency[] | undefined): Dependency[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n id: value.id.trim().toLowerCase(),\n kind: value.kind,\n created_at: value.created_at,\n author: value.author?.trim() || undefined,\n source_kind: value.source_kind?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byCreated = compareTimestampStrings(a.created_at, b.created_at);\n if (byCreated !== 0) return byCreated;\n const byId = a.id.localeCompare(b.id);\n if (byId !== 0) return byId;\n const byKind = a.kind.localeCompare(b.kind);\n if (byKind !== 0) return byKind;\n return (a.source_kind ?? \"\").localeCompare(b.source_kind ?? \"\");\n });\n}\n\nfunction sortLogValues<T extends Comment | LogNote>(values: T[] | undefined): T[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values].sort((a, b) => {\n const byCreated = compareTimestampStrings(a.created_at, b.created_at);\n if (byCreated !== 0) return byCreated;\n const byText = a.text.localeCompare(b.text);\n if (byText !== 0) return byText;\n return a.author.localeCompare(b.author);\n });\n}\n\nfunction sortReminders(values: Reminder[] | undefined): Reminder[] | undefined {\n if (!values || values.length === 0) return undefined;\n const normalized = [...values]\n .map((value) => ({\n at: value.at,\n text: value.text.trim(),\n }))\n .filter((value) => value.text.length > 0)\n .sort((a, b) => {\n const byAt = compareTimestampStrings(a.at, b.at);\n if (byAt !== 0) return byAt;\n return a.text.localeCompare(b.text);\n });\n return normalized.length === 0 ? undefined : normalized;\n}\n\nfunction normalizeRecurrenceRule(value: RecurrenceRule | undefined): RecurrenceRule | undefined {\n if (!value) {\n return undefined;\n }\n const normalizedFrequency = value.freq.trim().toLowerCase();\n if (!RECURRENCE_FREQUENCY_VALUES.includes(normalizedFrequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number])) {\n return undefined;\n }\n\n const byWeekday = Array.from(\n new Set(\n (value.by_weekday ?? [])\n .map((weekday) => weekday.trim().toLowerCase())\n .filter((weekday) => RECURRENCE_WEEKDAY_VALUES.includes(weekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number])),\n ),\n ).sort(\n (a, b) =>\n weekdayOrderIndex(a as (typeof RECURRENCE_WEEKDAY_VALUES)[number]) -\n weekdayOrderIndex(b as (typeof RECURRENCE_WEEKDAY_VALUES)[number]),\n );\n\n const byMonthDay = Array.from(\n new Set(\n (value.by_month_day ?? [])\n .filter((day) => Number.isInteger(day) && day >= 1 && day <= 31)\n .map((day) => day as number),\n ),\n ).sort((a, b) => a - b);\n\n const exdates = Array.from(\n new Set(\n (value.exdates ?? [])\n .map((timestamp) => timestamp.trim())\n .filter((timestamp) => isTimestampLiteral(timestamp)),\n ),\n ).sort((a, b) => compareTimestampStrings(a, b));\n\n const normalized: RecurrenceRule = {\n freq: normalizedFrequency as (typeof RECURRENCE_FREQUENCY_VALUES)[number],\n interval: value.interval !== undefined && value.interval > 1 ? value.interval : undefined,\n count: value.count,\n until: value.until?.trim() || undefined,\n by_weekday: byWeekday.length > 0 ? (byWeekday as (typeof RECURRENCE_WEEKDAY_VALUES)[number][]) : undefined,\n by_month_day: byMonthDay.length > 0 ? byMonthDay : undefined,\n exdates: exdates.length > 0 ? exdates : undefined,\n };\n for (const [key, fieldValue] of Object.entries(normalized)) {\n if (fieldValue === undefined) {\n delete (normalized as unknown as Record<string, unknown>)[key];\n }\n }\n return normalized;\n}\n\nfunction sortEvents(values: CalendarEvent[] | undefined): CalendarEvent[] | undefined {\n if (!values || values.length === 0) {\n return undefined;\n }\n const normalized = [...values]\n .map((value) => {\n const event: CalendarEvent = {\n start_at: value.start_at,\n end_at: value.end_at || undefined,\n title: value.title?.trim() || undefined,\n description: value.description?.trim() || undefined,\n location: value.location?.trim() || undefined,\n all_day: value.all_day,\n timezone: value.timezone?.trim() || undefined,\n recurrence: normalizeRecurrenceRule(value.recurrence),\n };\n for (const [key, fieldValue] of Object.entries(event)) {\n if (fieldValue === undefined) {\n delete (event as unknown as Record<string, unknown>)[key];\n }\n }\n return event;\n })\n .sort((a, b) => {\n const byStart = compareTimestampStrings(a.start_at, b.start_at);\n if (byStart !== 0) return byStart;\n const byEnd = (a.end_at ?? \"\").localeCompare(b.end_at ?? \"\");\n if (byEnd !== 0) return byEnd;\n const byTitle = (a.title ?? \"\").localeCompare(b.title ?? \"\");\n if (byTitle !== 0) return byTitle;\n const byAllDay = Number(Boolean(a.all_day)) - Number(Boolean(b.all_day));\n if (byAllDay !== 0) return byAllDay;\n const byTimezone = (a.timezone ?? \"\").localeCompare(b.timezone ?? \"\");\n if (byTimezone !== 0) return byTimezone;\n const byLocation = (a.location ?? \"\").localeCompare(b.location ?? \"\");\n if (byLocation !== 0) return byLocation;\n const byDescription = (a.description ?? \"\").localeCompare(b.description ?? \"\");\n if (byDescription !== 0) return byDescription;\n return JSON.stringify(a.recurrence ?? {}).localeCompare(JSON.stringify(b.recurrence ?? {}));\n });\n return normalized;\n}\n\nfunction normalizeFiles(values: LinkedFile[] | undefined): LinkedFile[] | undefined {\n if (!values || values.length === 0) return undefined;\n return values\n .map((value) => ({\n path: normalizePathValue(value.path),\n scope: value.scope,\n note: value.note?.trim() || undefined,\n }));\n}\n\nfunction normalizeTestRunSummaries(values: ItemTestRunSummary[] | undefined): ItemTestRunSummary[] | undefined {\n if (!values || values.length === 0) return undefined;\n const normalized = values\n .map((value) => {\n const runId = typeof value.run_id === \"string\" ? value.run_id.trim() : \"\";\n const kind = value.kind === \"test\" || value.kind === \"test-all\" ? value.kind : \"test\";\n const status =\n value.status === \"passed\" || value.status === \"failed\" || value.status === \"stopped\" || value.status === \"canceled\"\n ? value.status\n : \"failed\";\n const startedAt = typeof value.started_at === \"string\" ? value.started_at : \"\";\n const finishedAt = typeof value.finished_at === \"string\" ? value.finished_at : \"\";\n const recordedAt = typeof value.recorded_at === \"string\" ? value.recorded_at : \"\";\n const passed = typeof value.passed === \"number\" && Number.isFinite(value.passed) ? Math.max(0, Math.floor(value.passed)) : 0;\n const failed = typeof value.failed === \"number\" && Number.isFinite(value.failed) ? Math.max(0, Math.floor(value.failed)) : 0;\n const skipped = typeof value.skipped === \"number\" && Number.isFinite(value.skipped) ? Math.max(0, Math.floor(value.skipped)) : 0;\n return {\n run_id: runId,\n kind,\n status,\n started_at: startedAt,\n finished_at: finishedAt,\n recorded_at: recordedAt,\n attempt:\n typeof value.attempt === \"number\" && Number.isFinite(value.attempt) && value.attempt >= 1\n ? Math.floor(value.attempt)\n : undefined,\n resumed_from: value.resumed_from?.trim() || undefined,\n passed,\n failed,\n skipped,\n items:\n typeof value.items === \"number\" && Number.isFinite(value.items) && value.items >= 0\n ? Math.floor(value.items)\n : undefined,\n linked_tests:\n typeof value.linked_tests === \"number\" && Number.isFinite(value.linked_tests) && value.linked_tests >= 0\n ? Math.floor(value.linked_tests)\n : undefined,\n fail_on_skipped_triggered: value.fail_on_skipped_triggered === true ? true : undefined,\n };\n })\n .filter((value) => value.run_id.length > 0 && value.started_at.length > 0 && value.finished_at.length > 0 && value.recorded_at.length > 0)\n .sort((a, b) => {\n const byRecorded = compareTimestampStrings(a.recorded_at, b.recorded_at);\n if (byRecorded !== 0) return byRecorded;\n const byRunId = a.run_id.localeCompare(b.run_id);\n if (byRunId !== 0) return byRunId;\n return a.kind.localeCompare(b.kind);\n });\n return normalized.length > 0 ? normalized : undefined;\n}\n\nfunction sortTests(values: LinkedTest[] | undefined): LinkedTest[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n command: value.command?.trim() || undefined,\n path: value.path ? normalizePathValue(value.path) : undefined,\n scope: value.scope,\n timeout_seconds:\n typeof value.timeout_seconds === \"number\" && Number.isFinite(value.timeout_seconds) && value.timeout_seconds > 0\n ? value.timeout_seconds\n : undefined,\n pm_context_mode: (() => {\n const normalized = value.pm_context_mode?.trim().toLowerCase();\n if (!normalized || !LINKED_TEST_PM_CONTEXT_MODE_VALUES.has(normalized)) {\n return undefined;\n }\n return normalized as LinkedTest[\"pm_context_mode\"];\n })(),\n env_set: value.env_set\n ? Object.fromEntries(\n Object.entries(value.env_set)\n .map(([key, envValue]) => [key.trim(), String(envValue).trim()] as const)\n .filter(([key, envValue]) => key.length > 0 && envValue.length > 0)\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n env_clear: value.env_clear\n ? [...new Set(value.env_clear.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n shared_host_safe: value.shared_host_safe === true ? true : undefined,\n assert_stdout_contains: value.assert_stdout_contains\n ? [...new Set(value.assert_stdout_contains.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stdout_regex: value.assert_stdout_regex\n ? [...new Set(value.assert_stdout_regex.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stderr_contains: value.assert_stderr_contains\n ? [...new Set(value.assert_stderr_contains.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stderr_regex: value.assert_stderr_regex\n ? [...new Set(value.assert_stderr_regex.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) =>\n a.localeCompare(b),\n )\n : undefined,\n assert_stdout_min_lines:\n typeof value.assert_stdout_min_lines === \"number\" &&\n Number.isFinite(value.assert_stdout_min_lines) &&\n value.assert_stdout_min_lines >= 0\n ? Math.floor(value.assert_stdout_min_lines)\n : undefined,\n assert_json_field_equals: value.assert_json_field_equals\n ? Object.fromEntries(\n Object.entries(value.assert_json_field_equals)\n .map(([key, expectedValue]) => [key.trim(), String(expectedValue).trim()] as const)\n .filter(([key, expectedValue]) => key.length > 0 && expectedValue.length > 0)\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n assert_json_field_gte: value.assert_json_field_gte\n ? Object.fromEntries(\n Object.entries(value.assert_json_field_gte)\n .map(([key, expectedValue]) => [key.trim(), Number(expectedValue)] as const)\n .filter(([key, expectedValue]) => key.length > 0 && Number.isFinite(expectedValue))\n .sort(([left], [right]) => left.localeCompare(right)),\n )\n : undefined,\n note: value.note?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byScope = a.scope.localeCompare(b.scope);\n if (byScope !== 0) return byScope;\n const byPath = (a.path ?? \"\").localeCompare(b.path ?? \"\");\n if (byPath !== 0) return byPath;\n const byCommand = (a.command ?? \"\").localeCompare(b.command ?? \"\");\n if (byCommand !== 0) return byCommand;\n const byTimeout = (a.timeout_seconds ?? 0) - (b.timeout_seconds ?? 0);\n if (byTimeout !== 0) return byTimeout;\n const byPmContext = (a.pm_context_mode ?? \"\").localeCompare(b.pm_context_mode ?? \"\");\n if (byPmContext !== 0) return byPmContext;\n const bySharedHostSafe = Number(Boolean(a.shared_host_safe)) - Number(Boolean(b.shared_host_safe));\n if (bySharedHostSafe !== 0) return bySharedHostSafe;\n const byEnvClear = JSON.stringify(a.env_clear ?? []).localeCompare(JSON.stringify(b.env_clear ?? []));\n if (byEnvClear !== 0) return byEnvClear;\n const byEnvSet = JSON.stringify(a.env_set ?? {}).localeCompare(JSON.stringify(b.env_set ?? {}));\n if (byEnvSet !== 0) return byEnvSet;\n const byStdoutContains = JSON.stringify(a.assert_stdout_contains ?? []).localeCompare(\n JSON.stringify(b.assert_stdout_contains ?? []),\n );\n if (byStdoutContains !== 0) return byStdoutContains;\n const byStdoutRegex = JSON.stringify(a.assert_stdout_regex ?? []).localeCompare(\n JSON.stringify(b.assert_stdout_regex ?? []),\n );\n if (byStdoutRegex !== 0) return byStdoutRegex;\n const byStderrContains = JSON.stringify(a.assert_stderr_contains ?? []).localeCompare(\n JSON.stringify(b.assert_stderr_contains ?? []),\n );\n if (byStderrContains !== 0) return byStderrContains;\n const byStderrRegex = JSON.stringify(a.assert_stderr_regex ?? []).localeCompare(\n JSON.stringify(b.assert_stderr_regex ?? []),\n );\n if (byStderrRegex !== 0) return byStderrRegex;\n const byStdoutMinLines = (a.assert_stdout_min_lines ?? 0) - (b.assert_stdout_min_lines ?? 0);\n if (byStdoutMinLines !== 0) return byStdoutMinLines;\n const byJsonFieldEquals = JSON.stringify(a.assert_json_field_equals ?? {}).localeCompare(\n JSON.stringify(b.assert_json_field_equals ?? {}),\n );\n if (byJsonFieldEquals !== 0) return byJsonFieldEquals;\n const byJsonFieldGte = JSON.stringify(a.assert_json_field_gte ?? {}).localeCompare(\n JSON.stringify(b.assert_json_field_gte ?? {}),\n );\n if (byJsonFieldGte !== 0) return byJsonFieldGte;\n return (a.note ?? \"\").localeCompare(b.note ?? \"\");\n });\n}\n\nfunction sortDocs(values: LinkedDoc[] | undefined): LinkedDoc[] | undefined {\n if (!values || values.length === 0) return undefined;\n return [...values]\n .map((value) => ({\n path: normalizePathValue(value.path),\n scope: value.scope,\n note: value.note?.trim() || undefined,\n }))\n .sort((a, b) => {\n const byScope = a.scope.localeCompare(b.scope);\n if (byScope !== 0) return byScope;\n const byPath = a.path.localeCompare(b.path);\n if (byPath !== 0) return byPath;\n return (a.note ?? \"\").localeCompare(b.note ?? \"\");\n });\n}\n\nfunction trimStringOrUndefined(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction normalizePlanStepLinks(value: unknown): PlanStepLink[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: PlanStepLink[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const id = trimStringOrUndefined(record.id);\n const kind = trimStringOrUndefined(record.kind);\n if (!id || !kind) continue;\n const link: PlanStepLink = { id, kind: kind as PlanStepLink[\"kind\"] };\n const note = trimStringOrUndefined(record.note);\n if (note) link.note = note;\n if (record.required_before_step === true) link.required_before_step = true;\n out.push(link);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizePlanStepFiles(value: unknown): PlanStepFile[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: PlanStepFile[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const path = trimStringOrUndefined(record.path);\n if (!path) continue;\n const file: PlanStepFile = { path: normalizePathValue(path) };\n if (record.scope === \"project\" || record.scope === \"global\") file.scope = record.scope;\n const note = trimStringOrUndefined(record.note);\n if (note) file.note = note;\n out.push(file);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizePlanStepTests(value: unknown): { command?: string; path?: string; note?: string }[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: { command?: string; path?: string; note?: string }[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const command = trimStringOrUndefined(record.command);\n const path = trimStringOrUndefined(record.path);\n if (!command && !path) continue;\n const test: { command?: string; path?: string; note?: string } = {};\n if (command) test.command = command;\n if (path) test.path = normalizePathValue(path);\n const note = trimStringOrUndefined(record.note);\n if (note) test.note = note;\n out.push(test);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizePlanStepDocs(value: unknown): PlanStepDoc[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: PlanStepDoc[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const path = trimStringOrUndefined(record.path);\n if (!path) continue;\n const doc: PlanStepDoc = { path: normalizePathValue(path) };\n if (record.scope === \"project\" || record.scope === \"global\") doc.scope = record.scope;\n const note = trimStringOrUndefined(record.note);\n if (note) doc.note = note;\n out.push(doc);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizePlanSteps(value: unknown): PlanStep[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: PlanStep[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const id = trimStringOrUndefined(record.id);\n const title = trimStringOrUndefined(record.title);\n const status = trimStringOrUndefined(record.status);\n const orderRaw = record.order;\n const order = typeof orderRaw === \"number\" && Number.isFinite(orderRaw) ? orderRaw : Number(orderRaw);\n if (!id || !title || !status || !Number.isFinite(order)) continue;\n const created_at = typeof record.created_at === \"string\" ? record.created_at : \"\";\n const updated_at = typeof record.updated_at === \"string\" ? record.updated_at : \"\";\n if (!created_at || !updated_at) continue;\n const step: PlanStep = {\n id,\n order,\n title,\n status: status as PlanStepStatus,\n created_at,\n updated_at,\n };\n const body = trimStringOrUndefined(record.body);\n if (body) step.body = body;\n const owner = trimStringOrUndefined(record.owner);\n if (owner) step.owner = owner;\n const evidence = trimStringOrUndefined(record.evidence);\n if (evidence) step.evidence = evidence;\n const blockedReason = trimStringOrUndefined(record.blocked_reason);\n if (blockedReason) step.blocked_reason = blockedReason;\n const supersededBy = trimStringOrUndefined(record.superseded_by);\n if (supersededBy) step.superseded_by = supersededBy;\n const completedAt = typeof record.completed_at === \"string\" ? record.completed_at : undefined;\n if (completedAt && completedAt.length > 0) step.completed_at = completedAt;\n const links = normalizePlanStepLinks(record.linked_items);\n if (links) step.linked_items = links;\n const files = normalizePlanStepFiles(record.files);\n if (files) step.files = files;\n const tests = normalizePlanStepTests(record.tests);\n if (tests) step.tests = tests;\n const docs = normalizePlanStepDocs(record.docs);\n if (docs) step.docs = docs;\n out.push(step);\n }\n out.sort((left, right) => left.order - right.order);\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizePlanDecisions(value: unknown): PlanDecision[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: PlanDecision[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const ts = typeof record.ts === \"string\" ? record.ts : \"\";\n const author = typeof record.author === \"string\" ? record.author : \"\";\n const decision = trimStringOrUndefined(record.decision);\n if (!ts || !author || !decision) continue;\n const item: PlanDecision = { ts, author, decision };\n const rationale = trimStringOrUndefined(record.rationale);\n if (rationale) item.rationale = rationale;\n const evidence = trimStringOrUndefined(record.evidence);\n if (evidence) item.evidence = evidence;\n const stepId = trimStringOrUndefined(record.step_id);\n if (stepId) item.step_id = stepId;\n out.push(item);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizePlanDiscoveries(value: unknown): PlanDiscovery[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: PlanDiscovery[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const ts = typeof record.ts === \"string\" ? record.ts : \"\";\n const author = typeof record.author === \"string\" ? record.author : \"\";\n const text = trimStringOrUndefined(record.text);\n if (!ts || !author || !text) continue;\n const item: PlanDiscovery = { ts, author, text };\n const stepId = trimStringOrUndefined(record.step_id);\n if (stepId) item.step_id = stepId;\n out.push(item);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizePlanValidation(value: unknown): PlanValidationCheck[] | undefined {\n if (!Array.isArray(value)) return undefined;\n const out: PlanValidationCheck[] = [];\n for (const entry of value) {\n if (entry === null || typeof entry !== \"object\") continue;\n const record = entry as Record<string, unknown>;\n const text = trimStringOrUndefined(record.text);\n if (!text) continue;\n const item: PlanValidationCheck = { text };\n const command = trimStringOrUndefined(record.command);\n if (command) item.command = command;\n const expected = trimStringOrUndefined(record.expected);\n if (expected) item.expected = expected;\n out.push(item);\n }\n return out.length > 0 ? out : undefined;\n}\n\nfunction normalizeTypeOptions(values: Record<string, string> | undefined): Record<string, string> | undefined {\n if (!values) {\n return undefined;\n }\n const normalizedEntries = Object.entries(values)\n .map(([key, value]) => [key.trim(), value.trim()] as const)\n .filter(([key, value]) => key.length > 0 && value.length > 0)\n .sort((left, right) => left[0].localeCompare(right[0]));\n if (normalizedEntries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(normalizedEntries);\n}\n\nfunction normalizeBody(body: string): string {\n return body.replace(/^\\n+/, \"\").replace(/\\s+$/, \"\");\n}\n\nfunction normalizeConfidenceValue(value: ItemMetadata[\"confidence\"] | undefined): ItemMetadata[\"confidence\"] | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (typeof value === \"number\") {\n return value;\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"med\") {\n return \"medium\";\n }\n if (CONFIDENCE_TEXT_VALUES.includes(normalized as (typeof CONFIDENCE_TEXT_VALUES)[number])) {\n return normalized as (typeof CONFIDENCE_TEXT_VALUES)[number];\n }\n return undefined;\n}\n\nfunction normalizeSeverityValue(value: ItemMetadata[\"severity\"] | undefined): ItemMetadata[\"severity\"] | undefined {\n if (value === undefined) {\n return undefined;\n }\n const normalized = value.trim().toLowerCase();\n if (normalized === \"med\") {\n return \"medium\";\n }\n if (ISSUE_SEVERITY_VALUES.includes(normalized as (typeof ISSUE_SEVERITY_VALUES)[number])) {\n return normalized as (typeof ISSUE_SEVERITY_VALUES)[number];\n }\n return undefined;\n}\n\nexport function normalizeFrontMatter(\n frontMatter: ItemMetadata,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"extensionFieldNames\" | \"onWarning\"> = {},\n): ItemMetadata {\n const runtimeContext = resolveRuntimeSchemaValidationContext(options);\n const normalizedStatus = normalizeStatusInput(frontMatter.status, runtimeContext?.statusRegistry) ?? frontMatter.status;\n const tags = Array.from(new Set(frontMatter.tags.map((tag) => tag.trim().toLowerCase()).filter(Boolean))).sort((a, b) =>\n a.localeCompare(b),\n );\n const normalized: ItemMetadata = {\n id: frontMatter.id,\n title: frontMatter.title,\n description: frontMatter.description,\n type: frontMatter.type,\n source_type: frontMatter.source_type?.trim() || undefined,\n type_options: normalizeTypeOptions(frontMatter.type_options),\n status: normalizedStatus,\n priority: frontMatter.priority,\n tags,\n created_at: frontMatter.created_at,\n updated_at: frontMatter.updated_at,\n dependencies: sortDependencies(frontMatter.dependencies),\n comments: sortLogValues(frontMatter.comments),\n notes: sortLogValues(frontMatter.notes),\n learnings: sortLogValues(frontMatter.learnings),\n files: normalizeFiles(frontMatter.files),\n tests: sortTests(frontMatter.tests),\n test_runs: normalizeTestRunSummaries(frontMatter.test_runs),\n docs: sortDocs(frontMatter.docs),\n deadline: frontMatter.deadline || undefined,\n reminders: sortReminders(frontMatter.reminders),\n events: sortEvents(frontMatter.events),\n closed_at: frontMatter.closed_at || undefined,\n assignee: frontMatter.assignee?.trim() || undefined,\n source_owner: frontMatter.source_owner?.trim() || undefined,\n author: frontMatter.author || undefined,\n estimated_minutes: frontMatter.estimated_minutes,\n acceptance_criteria: frontMatter.acceptance_criteria ?? undefined,\n design: frontMatter.design ?? undefined,\n external_ref: frontMatter.external_ref ?? undefined,\n definition_of_ready: frontMatter.definition_of_ready?.trim() || undefined,\n order: frontMatter.order,\n goal: frontMatter.goal?.trim() || undefined,\n objective: frontMatter.objective?.trim() || undefined,\n value: frontMatter.value?.trim() || undefined,\n impact: frontMatter.impact?.trim() || undefined,\n outcome: frontMatter.outcome?.trim() || undefined,\n why_now: frontMatter.why_now?.trim() || undefined,\n parent: frontMatter.parent?.trim() || undefined,\n reviewer: frontMatter.reviewer?.trim() || undefined,\n risk: frontMatter.risk ?? undefined,\n confidence: normalizeConfidenceValue(frontMatter.confidence),\n sprint: frontMatter.sprint?.trim() || undefined,\n release: frontMatter.release?.trim() || undefined,\n blocked_by: frontMatter.blocked_by?.trim() || undefined,\n blocked_reason: frontMatter.blocked_reason?.trim() || undefined,\n unblock_note: frontMatter.unblock_note?.trim() || undefined,\n reporter: frontMatter.reporter?.trim() || undefined,\n severity: normalizeSeverityValue(frontMatter.severity),\n environment: frontMatter.environment?.trim() || undefined,\n repro_steps: frontMatter.repro_steps?.trim() || undefined,\n resolution: frontMatter.resolution?.trim() || undefined,\n expected_result: frontMatter.expected_result?.trim() || undefined,\n actual_result: frontMatter.actual_result?.trim() || undefined,\n affected_version: frontMatter.affected_version?.trim() || undefined,\n fixed_version: frontMatter.fixed_version?.trim() || undefined,\n component: frontMatter.component?.trim() || undefined,\n regression: frontMatter.regression,\n customer_impact: frontMatter.customer_impact?.trim() || undefined,\n close_reason: frontMatter.close_reason || undefined,\n plan_mode: trimStringOrUndefined(frontMatter.plan_mode) as ItemMetadata[\"plan_mode\"],\n plan_scope: trimStringOrUndefined(frontMatter.plan_scope),\n plan_harness: trimStringOrUndefined(frontMatter.plan_harness) as ItemMetadata[\"plan_harness\"],\n plan_resume_context: trimStringOrUndefined(frontMatter.plan_resume_context),\n plan_steps: normalizePlanSteps(frontMatter.plan_steps),\n plan_decisions: normalizePlanDecisions(frontMatter.plan_decisions),\n plan_discoveries: normalizePlanDiscoveries(frontMatter.plan_discoveries),\n plan_validation: normalizePlanValidation(frontMatter.plan_validation),\n };\n const sourceRecord = frontMatter as unknown as Record<string, unknown>;\n for (const [key, value] of Object.entries(sourceRecord)) {\n if (Object.prototype.hasOwnProperty.call(normalized, key) || value === undefined) {\n continue;\n }\n (normalized as unknown as Record<string, unknown>)[key] = value;\n }\n\n if (runtimeContext?.fieldRegistry) {\n for (const definition of runtimeContext.fieldRegistry.definitions) {\n const currentValue = (normalized as unknown as Record<string, unknown>)[definition.metadata_key];\n if (currentValue === undefined) {\n continue;\n }\n (normalized as unknown as Record<string, unknown>)[definition.metadata_key] = coerceRuntimeFieldValue(\n definition,\n currentValue,\n `metadata field \"${definition.metadata_key}\"`,\n );\n }\n }\n\n if (runtimeContext && runtimeContext.unknownFieldPolicy !== \"allow\") {\n const knownKeys = buildKnownFrontMatterKeys(runtimeContext);\n const unknownKeys = Object.keys(normalized as unknown as Record<string, unknown>)\n .filter((key) => !knownKeys.has(key))\n .sort((left, right) => left.localeCompare(right));\n if (unknownKeys.length > 0) {\n if (runtimeContext.unknownFieldPolicy === \"reject\") {\n validationError(`unknown schema fields are not allowed: ${unknownKeys.join(\", \")}`);\n }\n }\n }\n\n for (const [key, value] of Object.entries(normalized)) {\n if (value === undefined) {\n delete (normalized as unknown as Record<string, unknown>)[key];\n }\n }\n return normalized;\n}\n\nfunction orderFrontMatter(frontMatter: ItemMetadata): Record<string, unknown> {\n return orderObject(frontMatter as unknown as Record<string, unknown>, FRONT_MATTER_KEY_ORDER);\n}\n\nfunction findJsonObjectEnd(content: string): number {\n let depth = 0;\n let inString = false;\n let escaped = false;\n\n for (let i = 0; i < content.length; i += 1) {\n const char = content[i];\n if (inString) {\n if (escaped) {\n escaped = false;\n continue;\n }\n if (char === \"\\\\\") {\n escaped = true;\n continue;\n }\n if (char === \"\\\"\") {\n inString = false;\n }\n continue;\n }\n if (char === \"\\\"\") {\n inString = true;\n continue;\n }\n if (char === \"{\") {\n depth += 1;\n continue;\n }\n if (char === \"}\") {\n depth -= 1;\n if (depth === 0) {\n return i;\n }\n }\n }\n\n return -1;\n}\n\nexport function splitFrontMatter(content: string): { frontMatter: string; body: string } {\n if (!content.startsWith(\"{\")) {\n return { frontMatter: \"\", body: content };\n }\n const end = findJsonObjectEnd(content);\n if (end < 0) {\n return { frontMatter: \"\", body: content };\n }\n const frontMatter = content.slice(0, end + 1);\n const body = content.slice(end + 1).replace(/^\\r?\\n+/, \"\");\n return { frontMatter, body };\n}\n\nfunction stripLeadingYamlDocument(content: string): { content: string; stripped: boolean } {\n const normalizedContent = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;\n const opener = normalizedContent.match(/^[ \\t]*---[ \\t]*(?:\\r?\\n|$)/);\n if (!opener) {\n return { content: normalizedContent, stripped: false };\n }\n\n let cursor = opener[0].length;\n while (cursor < normalizedContent.length) {\n const nextNewline = normalizedContent.indexOf(\"\\n\", cursor);\n const lineEnd = nextNewline === -1 ? normalizedContent.length : nextNewline;\n const line = normalizedContent.slice(cursor, lineEnd).replace(/\\r$/, \"\");\n const afterLine = nextNewline === -1 ? lineEnd : lineEnd + 1;\n if (line.trim() === \"---\") {\n return { content: normalizedContent.slice(afterLine).replace(/^\\s+/, \"\"), stripped: true };\n }\n cursor = afterLine;\n }\n\n return { content: normalizedContent, stripped: false };\n}\n\nfunction parseJsonMarkdownItemDocument(\n content: string,\n runtimeContext?: RuntimeSchemaValidationContext,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"extensionFieldNames\" | \"onWarning\"> = {},\n): ItemDocument {\n const normalized = stripLeadingYamlDocument(content);\n if (normalized.stripped) {\n options.onWarning?.(\"json_markdown_leading_yaml_frontmatter_ignored\");\n }\n const { frontMatter, body } = splitFrontMatter(normalized.content);\n if (!frontMatter) {\n const trimmed = content.trimStart();\n if (trimmed.startsWith(\"{\")) {\n validationError(\"JSON front matter is not valid JSON\");\n }\n validationError(\"missing JSON front matter\");\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(frontMatter);\n } catch {\n validationError(\"JSON front matter is not valid JSON\");\n }\n assertValidFrontMatter(parsed, runtimeContext);\n\n return {\n metadata: normalizeFrontMatter(parsed, options),\n body: normalizeBody(body),\n };\n}\n\nfunction parseToonItemDocument(\n content: string,\n runtimeContext?: RuntimeSchemaValidationContext,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"extensionFieldNames\" | \"onWarning\"> = {},\n): ItemDocument {\n let parsed: unknown;\n try {\n // decodeToonItemContent transparently recovers documents that the upstream\n // strict decoder rejects (bracketed-token-then-colon inside a quoted value;\n // see toon-decode.ts). The recovery is lossless, so it stays silent rather\n // than emitting a per-read warning that would perpetually flip pm health\n // red for legacy files. The behavior is pinned by toon-decode.spec.ts.\n parsed = decodeToonItemContent(content).value;\n } catch {\n validationError(\"TOON item document is not valid TOON\");\n }\n assertFrontMatterCondition(\n typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed),\n \"TOON item document must be an object\",\n );\n const record = parsed as Record<string, unknown>;\n\n if (Object.prototype.hasOwnProperty.call(record, \"front_matter\")) {\n assertValidFrontMatter(record.front_matter, runtimeContext);\n assertFrontMatterCondition(\n record.body === undefined || typeof record.body === \"string\",\n \"TOON item document body must be a string\",\n );\n return {\n metadata: normalizeFrontMatter(record.front_matter, options),\n body: normalizeBody(typeof record.body === \"string\" ? record.body : \"\"),\n };\n }\n\n const { body, ...frontMatterRecord } = record;\n assertFrontMatterCondition(\n body === undefined || typeof body === \"string\",\n \"TOON item document body must be a string\",\n );\n assertValidFrontMatter(frontMatterRecord, runtimeContext);\n return {\n metadata: normalizeFrontMatter(frontMatterRecord, options),\n body: normalizeBody(typeof body === \"string\" ? body : \"\"),\n };\n}\n\nfunction serializeJsonMarkdownItemDocument(\n document: ItemDocument,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"extensionFieldNames\" | \"onWarning\"> = {},\n): string {\n const normalizedFrontMatter = normalizeFrontMatter(document.metadata, options);\n const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);\n const serializedFrontMatter = JSON.stringify(orderedFrontMatter, null, 2);\n const normalizedBody = normalizeBody(document.body ?? \"\");\n if (!normalizedBody) {\n return `${serializedFrontMatter}\\n`;\n }\n return `${serializedFrontMatter}\\n\\n${normalizedBody}\\n`;\n}\n\nfunction serializeToonItemDocument(\n document: ItemDocument,\n options: Pick<ItemDocumentFormatOptions, \"schema\" | \"extensionFieldNames\" | \"onWarning\"> = {},\n): string {\n const normalizedFrontMatter = normalizeFrontMatter(document.metadata, options);\n const orderedFrontMatter = orderFrontMatter(normalizedFrontMatter);\n const normalizedBody = normalizeBody(document.body ?? \"\");\n return `${encodeToon({ ...orderedFrontMatter, body: normalizedBody })}\\n`;\n}\n\nexport function parseItemDocument(content: string, options: ItemDocumentFormatOptions = {}): ItemDocument {\n const conflictMarker = findFirstMergeConflictMarker(content);\n if (conflictMarker) {\n throw new PmCliError(\n `Merge conflict markers detected in item document at line ${conflictMarker.line} (${conflictMarker.marker}). Resolve <<<<<<< ======= >>>>>>> markers and retry.`,\n EXIT_CODE.GENERIC_FAILURE,\n {\n code: \"merge_conflict_markers_detected\",\n required: \"Resolve merge-conflict markers in the item file before parsing or mutation commands.\",\n why: \"Partially merged documents can corrupt item metadata and history integrity.\",\n examples: [\"git status\", \"git add <resolved-file> && git commit\"],\n nextSteps: [\"Resolve conflicts, save the file, then rerun the pm command.\"],\n },\n );\n }\n const format = options.format ?? \"toon\";\n const runtimeContext = resolveRuntimeSchemaValidationContext(options);\n return format === \"toon\"\n ? parseToonItemDocument(content, runtimeContext, options)\n : parseJsonMarkdownItemDocument(content, runtimeContext, options);\n}\n\nexport function serializeItemDocument(document: ItemDocument, options: ItemDocumentFormatOptions = {}): string {\n const format = options.format ?? \"toon\";\n return format === \"toon\" ? serializeToonItemDocument(document, options) : serializeJsonMarkdownItemDocument(document, options);\n}\n\nexport function canonicalDocument(document: ItemDocument, options: Pick<ItemDocumentFormatOptions, \"schema\" | \"extensionFieldNames\" | \"onWarning\"> = {}): ItemDocument {\n return {\n metadata: normalizeFrontMatter(document.metadata, options),\n body: normalizeBody(document.body ?? \"\"),\n };\n}\n", "import { decode as decodeToon } from \"@toon-format/toon\";\n\nexport interface ToonDecodeResult {\n /** The decoded TOON document. */\n value: unknown;\n /** True when the strict decode required the scalar-bracket escape workaround. */\n usedScalarBracketEscape: boolean;\n}\n\n/**\n * Escape `[` as `\\u005b` inside quoted scalar values so the upstream\n * `@toon-format/toon` strict decoder cannot mis-read them.\n *\n * The upstream bug: the strict decoder's array-header detection scans the whole\n * line for an opening bracket when the key is unquoted, so a quoted scalar value\n * that contains a bracketed token followed (anywhere later on the line) by a\n * colon, e.g. `body: \"POST [redacted]: ok\"` or `desc: \"sntr[ysu]_ ... :\"`, is\n * mis-detected as a `key`+bracket+colon array header and throws. The library's\n * own `encode()` emits exactly this otherwise-correctly-quoted form, so strict\n * decode cannot read the encoder's own output for such values.\n *\n * A line is treated as a scalar `key: value` (not an array header) only when its\n * `\": \"` key/value separator occurs before the first `[`; array-header lines\n * (`tags[3]:`, `comments[6]{...}:`) have the bracket first and are left\n * untouched, as are non-string (unquoted) values. Within a matched quoted value\n * every `[` becomes `\\u005b`, which the decoder unescapes back to `[`, so the\n * decoded value is byte-for-byte identical. Crucially, this neutralises only the\n * bracket trigger and nothing else, so the retry stays in strict mode and every\n * other strict invariant (duplicate sibling keys, array-count mismatches, tabs\n * in indentation, ...) is still enforced.\n */\nfunction escapeBracketsInQuotedScalars(content: string): string {\n return content\n .split(\"\\n\")\n .map((line) => {\n const separatorIndex = line.indexOf(\": \");\n const bracketIndex = line.indexOf(\"[\");\n if (separatorIndex === -1 || bracketIndex === -1 || bracketIndex < separatorIndex) {\n return line;\n }\n const key = line.slice(0, separatorIndex + 2);\n const value = line.slice(separatorIndex + 2);\n if (!value.startsWith('\"')) {\n return line;\n }\n return key + value.replaceAll(\"[\", \"\\\\u005b\");\n })\n .join(\"\\n\");\n}\n\n/**\n * Decode a TOON item document, working around the upstream bracket mis-parse\n * bug described in {@link escapeBracketsInQuotedScalars}.\n *\n * Strict decode is attempted first (the fast path for all well-formed\n * documents). Only if it fails is the scalar-bracket escape applied and strict\n * decode retried, so the workaround never relaxes strict validation; it only\n * removes the specific trigger. If the escaped content is identical to the\n * original (no quoted-scalar bracket to neutralise) the original strict error is\n * surfaced unchanged; if the retry itself fails the document has a genuine\n * problem beyond the bracket bug and that error propagates.\n */\nexport function decodeToonItemContent(content: string): ToonDecodeResult {\n try {\n return { value: decodeToon(content), usedScalarBracketEscape: false };\n } catch (strictError) {\n const escaped = escapeBracketsInQuotedScalars(content);\n if (escaped === content) {\n throw strictError;\n }\n return { value: decodeToon(escaped), usedScalarBracketEscape: true };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -4,7 +4,7 @@ import {
4
4
  runActiveRendererOverride,
5
5
  runActiveServiceOverrideSync,
6
6
  setActiveCommandResult
7
- } from "./chunk-LSXGH6NE.js";
7
+ } from "./chunk-SRVKTWPR.js";
8
8
 
9
9
  // dist/core/output/mutation-projection.js
10
10
  !(function() {
@@ -89,14 +89,25 @@ function projectMutationResult(result, options = {}) {
89
89
  !(function() {
90
90
  try {
91
91
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
92
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "4294a479-42ff-5bc2-a600-74671b15c673");
92
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "9759da9d-e64a-537d-99ac-6e25ee5357a6");
93
93
  } catch (e2) {
94
94
  }
95
95
  })();
96
+ var NATIVE_OUTPUT_MARKER = "__pm_native_output";
96
97
  var streamErrorHandlersInstalled = false;
97
98
  function isPlainObject2(value) {
98
99
  return typeof value === "object" && value !== null && !Array.isArray(value);
99
100
  }
101
+ function shouldUseNativeOutput(result) {
102
+ return isPlainObject2(result) && result[NATIVE_OUTPUT_MARKER] === true;
103
+ }
104
+ function stripNativeOutputMarker(result) {
105
+ if (!isPlainObject2(result) || result[NATIVE_OUTPUT_MARKER] !== true) {
106
+ return result;
107
+ }
108
+ const { [NATIVE_OUTPUT_MARKER]: _marker, ...rest } = result;
109
+ return rest;
110
+ }
100
111
  function isBrokenPipeError(error) {
101
112
  return typeof error === "object" && error !== null && error.code === "EPIPE";
102
113
  }
@@ -265,10 +276,11 @@ function renderDefaultMarkdownResult(value) {
265
276
  }
266
277
  function formatOutput(result, options) {
267
278
  const commandOverride = runActiveCommandOverride(result);
268
- const effectiveResult = commandOverride.result;
279
+ const nativeOutput = shouldUseNativeOutput(commandOverride.result);
280
+ const effectiveResult = stripNativeOutputMarker(commandOverride.result);
269
281
  setActiveCommandResult(effectiveResult);
270
282
  const format = options.json === true ? "json" : options.json === false ? "toon" : options.defaultOutputFormat === "json" ? "json" : "toon";
271
- const serviceOverride = runActiveServiceOverrideSync("output_format", {
283
+ const serviceOverride = nativeOutput ? { handled: false, result: effectiveResult } : runActiveServiceOverrideSync("output_format", {
272
284
  command: options.command,
273
285
  args: options.commandArgs,
274
286
  command_options: options.commandOptions,
@@ -289,7 +301,7 @@ function formatOutput(result, options) {
289
301
  return markdownDefault;
290
302
  }
291
303
  }
292
- const rendererOverride = runActiveRendererOverride(format, outputResult);
304
+ const rendererOverride = nativeOutput ? { rendered: null } : runActiveRendererOverride(format, outputResult);
293
305
  if (rendererOverride.rendered !== null) {
294
306
  return rendererOverride.rendered.endsWith("\n") ? rendererOverride.rendered : `${rendererOverride.rendered}
295
307
  `;
@@ -327,4 +339,4 @@ export {
327
339
  printResult,
328
340
  printError
329
341
  };
330
- //# sourceMappingURL=chunk-5HSEP75M.js.map
342
+ //# sourceMappingURL=chunk-HZOS2UG5.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../../../core/output/mutation-projection.ts", "../../../../../../../../core/output/output.ts"],
4
+ "sourcesContent": ["/**\n * Shared projection helper for mutation command results.\n *\n * Mutation commands (create/update/close/append/update-many) return a result\n * envelope that carries a `changed_fields` string array. On create this array simply\n * re-lists every field the command just set, which the item echo above it already\n * shows, so for high-volume agent loops it is ~50% redundant payload. This helper\n * lets the CLI (`--no-changed-fields`) and the MCP agent path trim that array down\n * to a deterministic `changed_field_count` without losing mutation evidence.\n *\n * Compaction is deliberately scoped to the mutation envelope only:\n * - the envelope's own top-level `changed_fields` (create/update/close/append), and\n * - `rows[*].changed_fields` (update-many reports its delta per row).\n * It does NOT recurse into arbitrary nested objects, so unrelated payloads that\n * legitimately carry `changed_fields` (for example `pm history --diff` entries, or a\n * custom runtime metadata field) are left untouched.\n *\n * The helper is pure and side-effect free, reused by both the output layer and the\n * MCP server, and returns the original reference unchanged when nothing is compacted.\n */\n\nexport type ChangedFieldsMode = \"full\" | \"compact\";\n\nexport interface MutationProjectionOptions {\n /** Defaults to \"full\" (unchanged output). \"compact\" drops the array, keeping a count. */\n changedFields?: ChangedFieldsMode;\n}\n\nconst CHANGED_FIELDS_KEY = \"changed_fields\";\nconst CHANGED_FIELD_COUNT_KEY = \"changed_field_count\";\nconst ROWS_KEY = \"rows\";\nconst UPDATE_MANY_MUTATION_MODES = new Set([\"apply\", \"rollback\"]);\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\n\n/** Replace a single envelope's own top-level `changed_fields` array with a count. */\nfunction compactOwnChangedFields(envelope: Record<string, unknown>): Record<string, unknown> | null {\n const changedFields = envelope[CHANGED_FIELDS_KEY];\n if (!Array.isArray(changedFields)) {\n return null;\n }\n const projected: Record<string, unknown> =\n Object.getPrototypeOf(envelope) === null ? Object.create(null) : {};\n for (const [key, value] of Object.entries(envelope)) {\n if (key !== CHANGED_FIELDS_KEY) {\n projected[key] = value;\n }\n }\n projected[CHANGED_FIELD_COUNT_KEY] = changedFields.length;\n return projected;\n}\n\nfunction isMutationEnvelope(value: Record<string, unknown>): boolean {\n return \"item\" in value && Array.isArray(value[CHANGED_FIELDS_KEY]);\n}\n\nfunction isUpdateManyMutationEnvelope(value: Record<string, unknown>): boolean {\n return (\n typeof value.mode === \"string\" &&\n UPDATE_MANY_MUTATION_MODES.has(value.mode) &&\n Array.isArray(value[ROWS_KEY])\n );\n}\n\nfunction replaceRows(envelope: Record<string, unknown>, rows: unknown[]): Record<string, unknown> {\n const projected: Record<string, unknown> =\n Object.getPrototypeOf(envelope) === null ? Object.create(null) : {};\n Object.assign(projected, envelope);\n projected[ROWS_KEY] = rows;\n return projected;\n}\n\n/**\n * Returns a copy of a mutation result with the envelope `changed_fields` arrays\n * replaced by `changed_field_count` when compact mode is requested. Inputs that are\n * not a mutation envelope (or full mode) are returned unchanged (same reference).\n */\nexport function projectMutationResult(result: unknown, options: MutationProjectionOptions = {}): unknown {\n const mode = options.changedFields ?? \"full\";\n if (mode === \"full\" || !isPlainObject(result)) {\n return result;\n }\n\n let changed = false;\n let projected: Record<string, unknown> = result;\n\n const compactedTop = isMutationEnvelope(result) ? compactOwnChangedFields(result) : null;\n if (compactedTop !== null) {\n projected = compactedTop;\n changed = true;\n }\n\n // update-many reports its per-item delta under rows[*].changed_fields.\n const rows = isUpdateManyMutationEnvelope(projected) ? projected[ROWS_KEY] : undefined;\n if (Array.isArray(rows)) {\n let rowsChanged = false;\n const nextRows = rows.map((row) => {\n if (!isPlainObject(row)) {\n return row;\n }\n const compactedRow = compactOwnChangedFields(row);\n if (compactedRow) {\n rowsChanged = true;\n return compactedRow;\n }\n return row;\n });\n if (rowsChanged) {\n projected = replaceRows(projected, nextRows);\n changed = true;\n }\n }\n\n return changed ? projected : result;\n}\n", "import {\n runActiveCommandOverride,\n runActiveRendererOverride,\n runActiveServiceOverrideSync,\n setActiveCommandResult,\n} from \"../extensions/index.js\";\nimport { EXIT_CODE } from \"../shared/constants.js\";\nimport { projectMutationResult } from \"./mutation-projection.js\";\n\nexport interface OutputOptions {\n json?: boolean;\n quiet?: boolean;\n /** When true, mutation results drop the verbose changed_fields array (keeps changed_field_count). */\n noChangedFields?: boolean;\n defaultOutputFormat?: \"toon\" | \"json\";\n command?: string;\n commandArgs?: string[];\n commandOptions?: Record<string, unknown>;\n pmRoot?: string;\n}\n\ninterface NodeLikeError {\n code?: string;\n}\n\nconst NATIVE_OUTPUT_MARKER = \"__pm_native_output\";\n\nlet streamErrorHandlersInstalled = false;\ntype OutputStreamTarget = \"stdout\" | \"stderr\";\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction shouldUseNativeOutput(result: unknown): boolean {\n return isPlainObject(result) && result[NATIVE_OUTPUT_MARKER] === true;\n}\n\nfunction stripNativeOutputMarker<T>(result: T): T {\n if (!isPlainObject(result) || result[NATIVE_OUTPUT_MARKER] !== true) {\n return result;\n }\n const { [NATIVE_OUTPUT_MARKER]: _marker, ...rest } = result;\n return rest as T;\n}\n\nfunction isBrokenPipeError(error: unknown): boolean {\n return typeof error === \"object\" && error !== null && (error as NodeLikeError).code === \"EPIPE\";\n}\n\nfunction markStdoutBrokenPipeExitCode(): void {\n if (process.exitCode === undefined || process.exitCode === EXIT_CODE.SUCCESS) {\n process.exitCode = EXIT_CODE.SUCCESS;\n }\n}\n\nfunction markStderrBrokenPipeExitCode(): void {\n if (process.exitCode === undefined || process.exitCode === EXIT_CODE.SUCCESS) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n}\n\nfunction markBrokenPipeExitCode(target: OutputStreamTarget): void {\n if (target === \"stdout\") {\n markStdoutBrokenPipeExitCode();\n return;\n }\n markStderrBrokenPipeExitCode();\n}\n\nfunction handleUnhandledStreamError(error: unknown): void {\n const unhandled = error instanceof Error ? error : new Error(String(error));\n setImmediate(() => {\n throw unhandled;\n });\n}\n\nfunction installStreamErrorHandlers(): void {\n if (streamErrorHandlersInstalled) {\n return;\n }\n streamErrorHandlersInstalled = true;\n process.stdout.on(\"error\", (error: unknown) => {\n if (isBrokenPipeError(error)) {\n markBrokenPipeExitCode(\"stdout\");\n return;\n }\n handleUnhandledStreamError(error);\n });\n process.stderr.on(\"error\", (error: unknown) => {\n if (isBrokenPipeError(error)) {\n markBrokenPipeExitCode(\"stderr\");\n return;\n }\n handleUnhandledStreamError(error);\n });\n}\n\nfunction writeToStream(target: OutputStreamTarget, text: string): boolean {\n installStreamErrorHandlers();\n try {\n if (target === \"stdout\") {\n process.stdout.write(text);\n } else {\n process.stderr.write(text);\n }\n return true;\n } catch (error: unknown) {\n if (isBrokenPipeError(error)) {\n markBrokenPipeExitCode(target);\n return false;\n }\n throw error;\n }\n}\n\nexport function writeStdout(text: string): boolean {\n return writeToStream(\"stdout\", text);\n}\n\nexport function writeStderr(text: string): boolean {\n return writeToStream(\"stderr\", text);\n}\n\nfunction renderScalar(value: unknown): string {\n if (typeof value === \"string\") return JSON.stringify(value);\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n if (value === null) return \"null\";\n return JSON.stringify(value);\n}\n\nfunction compactToonValue(value: unknown): unknown | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (Array.isArray(value)) {\n const compactedEntries = value\n .map((entry) => compactToonValue(entry))\n .filter((entry): entry is unknown => entry !== undefined);\n return compactedEntries.length > 0 ? compactedEntries : undefined;\n }\n\n if (isPlainObject(value)) {\n const compacted: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n const compactedEntry = compactToonValue(entry);\n if (compactedEntry !== undefined) {\n compacted[key] = compactedEntry;\n }\n }\n return Object.keys(compacted).length > 0 ? compacted : undefined;\n }\n\n return value;\n}\n\nfunction renderToonValue(value: unknown, depth: number): string {\n const indent = \" \".repeat(depth);\n\n if (Array.isArray(value)) {\n if (value.length === 0) return \"[]\";\n return value\n .map((entry) => {\n if (!isPlainObject(entry) && !Array.isArray(entry)) {\n return `${indent}- ${renderScalar(entry)}`;\n }\n const rendered = renderToonValue(entry, depth + 1);\n const lines = rendered.split(\"\\n\");\n const [firstLine, ...rest] = lines;\n if (rest.length === 0) {\n return `${indent}- ${firstLine.trimStart()}`;\n }\n return `${indent}- ${firstLine.trimStart()}\\n${rest.join(\"\\n\")}`;\n })\n .join(\"\\n\");\n }\n\n if (isPlainObject(value)) {\n const entries = Object.entries(value);\n if (entries.length === 0) return \"{}\";\n return entries\n .map(([key, entry]) => {\n if (!isPlainObject(entry) && !Array.isArray(entry)) {\n return `${indent}${key}: ${renderScalar(entry)}`;\n }\n if (Array.isArray(entry) && entry.length === 0) {\n return `${indent}${key}: []`;\n }\n if (isPlainObject(entry) && Object.keys(entry).length === 0) {\n return `${indent}${key}: {}`;\n }\n return `${indent}${key}:\\n${renderToonValue(entry, depth + 1)}`;\n })\n .join(\"\\n\");\n }\n\n return `${indent}${renderScalar(value)}`;\n}\n\nfunction renderDefaultMarkdownResult(value: unknown): string | null {\n if (!isPlainObject(value) || value.output_default !== \"markdown\") {\n return null;\n }\n if (typeof value.view !== \"string\" || !Array.isArray(value.events) || !Array.isArray(value.days)) {\n return null;\n }\n const lines = [`# pm calendar (${value.view})`, \"\"];\n const summary = isPlainObject(value.summary) ? value.summary : {};\n lines.push(`- events: ${String(summary.events ?? 0)}`);\n lines.push(\"\");\n if (value.events.length === 0) {\n lines.push(\"No calendar events matched the selected filters.\");\n return `${lines.join(\"\\n\")}\\n`;\n }\n for (const event of value.events) {\n if (!isPlainObject(event)) {\n continue;\n }\n const kind = typeof event.kind === \"string\" ? event.kind : \"event\";\n const title = typeof event.item_title === \"string\" ? event.item_title : \"\";\n const itemId = typeof event.item_id === \"string\" ? event.item_id : \"\";\n const reminderText = typeof event.reminder_text === \"string\" && event.reminder_text.length > 0 ? ` ${event.reminder_text}` : \"\";\n lines.push(`- [${kind}] ${itemId} ${title}${reminderText}`.trim());\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function formatOutput(result: unknown, options: OutputOptions): string {\n const commandOverride = runActiveCommandOverride(result);\n const nativeOutput = shouldUseNativeOutput(commandOverride.result);\n const effectiveResult = stripNativeOutputMarker(commandOverride.result);\n setActiveCommandResult(effectiveResult);\n const format =\n options.json === true\n ? \"json\"\n : options.json === false\n ? \"toon\"\n : options.defaultOutputFormat === \"json\"\n ? \"json\"\n : \"toon\";\n const serviceOverride = nativeOutput ? { handled: false, result: effectiveResult } : runActiveServiceOverrideSync(\"output_format\", {\n command: options.command,\n args: options.commandArgs,\n command_options: options.commandOptions,\n global: { ...options },\n pm_root: options.pmRoot,\n format,\n options: { ...options },\n result: effectiveResult,\n });\n if (serviceOverride.handled && typeof serviceOverride.result === \"string\") {\n return serviceOverride.result.endsWith(\"\\n\") ? serviceOverride.result : `${serviceOverride.result}\\n`;\n }\n const outputResult = serviceOverride.handled ? serviceOverride.result : effectiveResult;\n if (format === \"toon\") {\n const markdownDefault = renderDefaultMarkdownResult(outputResult);\n if (markdownDefault !== null) {\n return markdownDefault;\n }\n }\n const rendererOverride = nativeOutput ? { rendered: null } : runActiveRendererOverride(format, outputResult);\n if (rendererOverride.rendered !== null) {\n return rendererOverride.rendered.endsWith(\"\\n\") ? rendererOverride.rendered : `${rendererOverride.rendered}\\n`;\n }\n if (format === \"json\") {\n return `${JSON.stringify(outputResult, null, 2)}\\n`;\n }\n const compactedToon = compactToonValue(outputResult);\n if (compactedToon === undefined) {\n return \"{}\\n\";\n }\n return `${renderToonValue(compactedToon, 0)}\\n`;\n}\n\nexport function printResult(result: unknown, options: OutputOptions): void {\n const projected = options.noChangedFields ? projectMutationResult(result, { changedFields: \"compact\" }) : result;\n const rendered = formatOutput(projected, options);\n if (options.quiet) {\n return;\n }\n writeStdout(rendered);\n}\n\nexport function printError(message: string): void {\n const override = runActiveServiceOverrideSync(\"error_format\", {\n message,\n });\n const rendered = override.handled && typeof override.result === \"string\" ? override.result : message;\n writeStderr(rendered.endsWith(\"\\n\") ? rendered : `${rendered}\\n`);\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["isPlainObject"]
7
+ }
@@ -0,0 +1,17 @@
1
+ // dist/core/search/staleness.js
2
+
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d56343df-f5f2-5c7a-b02e-19c311035a85")}catch(e){}}();
4
+ function collectStaleVectorizationIds(items, ledgerEntries) {
5
+ const entries = ledgerEntries ?? {};
6
+ return items.filter((item) => {
7
+ const trackedUpdatedAt = entries[item.id];
8
+ return trackedUpdatedAt !== item.updated_at;
9
+ }).map((item) => item.id).sort((left, right) => left.localeCompare(right));
10
+ }
11
+
12
+ export {
13
+ collectStaleVectorizationIds
14
+ };
15
+ //# sourceMappingURL=chunk-IUV734HF.js.map
16
+
17
+ //# debugId=d56343df-f5f2-5c7a-b02e-19c311035a85
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../core/search/staleness.ts"],"sourcesContent":["/**\n * Vectorization-ledger staleness helpers.\n *\n * The vectorization status ledger at `search/vectorization-status.json`\n * records the `updated_at` of every item that has been embedded into the\n * vector store. When an item's current `updated_at` differs from the\n * ledger's recorded value (or the item is missing from the ledger\n * entirely), the vector store is stale for that item and a `pm reindex`\n * is needed.\n *\n * This module exposes the comparison helper as a tiny pure function so it\n * can be reused by `pm health` (gates), `pm reindex`, and `pm search`\n * (query-time staleness warning) without re-importing each other.\n */\n\nexport interface ItemWithUpdatedAt {\n id: string;\n updated_at: string;\n}\n\n/**\n * Return the sorted list of item IDs whose current `updated_at` does not\n * match the ledger entry. Missing ledger entries count as stale.\n */\nexport function collectStaleVectorizationIds<T extends ItemWithUpdatedAt>(\n items: readonly T[],\n ledgerEntries: Readonly<Record<string, string>> | null | undefined,\n): string[] {\n // Tolerate a missing / corrupted / partially-written ledger by treating\n // unknown items as stale (the same as having no entry).\n const entries = ledgerEntries ?? {};\n return items\n .filter((item) => {\n const trackedUpdatedAt = entries[item.id];\n return trackedUpdatedAt !== item.updated_at;\n })\n .map((item) => item.id)\n .sort((left, right) => left.localeCompare(right));\n}\n"],"names":[],"mappings":";;;AAwBM,SAAU,6BACd,OACA,eAAkE;AAIlE,QAAM,UAAU,iBAAiB,CAAA;AACjC,SAAO,MACJ,OAAO,CAAC,SAAQ;AACf,UAAM,mBAAmB,QAAQ,KAAK,EAAE;AACxC,WAAO,qBAAqB,KAAK;EACnC,CAAC,EACA,IAAI,CAAC,SAAS,KAAK,EAAE,EACrB,KAAK,CAAC,MAAM,UAAU,KAAK,cAAc,KAAK,CAAC;AACpD","debugId":"d56343df-f5f2-5c7a-b02e-19c311035a85"}
@@ -0,0 +1,15 @@
1
+ // dist/core/shared/author.js
2
+
3
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8e7605f7-d4a4-5afb-b3c2-a555bd331f22")}catch(e){}}();
4
+ function resolveAuthor(candidate, fallback) {
5
+ const resolved = candidate ?? process.env.PM_AUTHOR ?? fallback;
6
+ const trimmed = resolved.trim();
7
+ return trimmed || "unknown";
8
+ }
9
+
10
+ export {
11
+ resolveAuthor
12
+ };
13
+ //# sourceMappingURL=chunk-J27KIHTG.js.map
14
+
15
+ //# debugId=8e7605f7-d4a4-5afb-b3c2-a555bd331f22
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../core/shared/author.ts"],"sourcesContent":["export function resolveAuthor(candidate: string | undefined, fallback: string): string {\n const resolved = candidate ?? process.env.PM_AUTHOR ?? fallback;\n const trimmed = resolved.trim();\n return trimmed || \"unknown\";\n}\n"],"names":[],"mappings":";;;AAAM,SAAU,cAAc,WAA+B,UAAgB;AAC3E,QAAM,WAAW,aAAa,QAAQ,IAAI,aAAa;AACvD,QAAM,UAAU,SAAS,KAAI;AAC7B,SAAO,WAAW;AACpB","debugId":"8e7605f7-d4a4-5afb-b3c2-a555bd331f22"}
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  readHistoryEntries
3
- } from "./chunk-LRBOHPUE.js";
3
+ } from "./chunk-WIKR7KFL.js";
4
4
  import {
5
5
  parseLimit
6
- } from "./chunk-SEXQN4KL.js";
6
+ } from "./chunk-K47WAYQV.js";
7
7
  import {
8
8
  enforceHistoryStreamPolicyForItems,
9
9
  listAllFrontMatterLight
10
- } from "./chunk-BUPWJ3IJ.js";
10
+ } from "./chunk-XG7RJYHV.js";
11
11
  import {
12
12
  resolveItemTypeRegistry
13
- } from "./chunk-WDPXDQFG.js";
13
+ } from "./chunk-4PJQSECJ.js";
14
14
  import {
15
15
  compareTimestampStrings,
16
16
  nowIso,
17
17
  resolveIsoOrRelative
18
- } from "./chunk-PVNQLCIS.js";
18
+ } from "./chunk-RANZIID5.js";
19
19
  import {
20
20
  EXIT_CODE,
21
21
  PmCliError,
@@ -25,7 +25,7 @@ import {
25
25
  readSettings,
26
26
  resolvePmRoot,
27
27
  runActiveOnReadHooks
28
- } from "./chunk-LSXGH6NE.js";
28
+ } from "./chunk-SRVKTWPR.js";
29
29
 
30
30
  // dist/cli/commands/activity.js
31
31
  import fs from "node:fs/promises";
@@ -182,4 +182,4 @@ async function runActivity(options, global2) {
182
182
  export {
183
183
  runActivity
184
184
  };
185
- //# sourceMappingURL=chunk-L2FXEKDB.js.map
185
+ //# sourceMappingURL=chunk-JB4RGL4V.js.map
@@ -0,0 +1,130 @@
1
+
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="18d2c948-3f43-54ab-a773-8289b2d0d9ec")}catch(e){}}();
3
+ import {
4
+ levenshteinDistanceWithinLimit
5
+ } from "./chunk-XSLQSXAH.js";
6
+ import {
7
+ coerceRuntimeFieldValue,
8
+ normalizeStatusInput,
9
+ readRuntimeFieldOptionValue
10
+ } from "./chunk-KBG47ZOY.js";
11
+ import {
12
+ EXIT_CODE,
13
+ PmCliError,
14
+ stableValueEquals
15
+ } from "./chunk-4LTBNUYT.js";
16
+
17
+ // dist/core/item/status-filter.js
18
+ var STATUS_GROUP_ALIASES = {
19
+ open: "open_status",
20
+ closed: "close_status",
21
+ canceled: "canceled_status",
22
+ cancelled: "canceled_status"
23
+ };
24
+ function resolveStatusFilterToken(token, registry) {
25
+ const trimmed = token.trim().toLowerCase();
26
+ if (trimmed.length === 0) {
27
+ return void 0;
28
+ }
29
+ const group = STATUS_GROUP_ALIASES[trimmed];
30
+ if (group) {
31
+ return registry[group];
32
+ }
33
+ return normalizeStatusInput(token, registry);
34
+ }
35
+ function collectStatusSuggestionCandidates(registry) {
36
+ const candidates = new Set(Object.keys(STATUS_GROUP_ALIASES));
37
+ for (const definition of registry.definitions) {
38
+ candidates.add(definition.id);
39
+ for (const alias of definition.aliases) {
40
+ candidates.add(alias);
41
+ }
42
+ }
43
+ return [...candidates];
44
+ }
45
+ function suggestClosestStatus(value, registry) {
46
+ const normalized = value.trim().toLowerCase();
47
+ let best;
48
+ let bestDistance = Number.POSITIVE_INFINITY;
49
+ for (const candidate of collectStatusSuggestionCandidates(registry)) {
50
+ const distance = levenshteinDistanceWithinLimit(normalized, candidate.toLowerCase(), 2);
51
+ if (distance !== null && distance < bestDistance) {
52
+ best = candidate;
53
+ bestDistance = distance;
54
+ }
55
+ }
56
+ return best;
57
+ }
58
+ function parseStatusFilterCsv(raw, registry, options) {
59
+ if (typeof raw !== "string") {
60
+ return void 0;
61
+ }
62
+ const strict = options?.strict === true;
63
+ const flagLabel = options?.flagLabel ?? "--status";
64
+ const tokens = raw.split(",").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
65
+ if (tokens.length === 0) {
66
+ return void 0;
67
+ }
68
+ const resolved = [];
69
+ for (const token of tokens) {
70
+ const status = resolveStatusFilterToken(token, registry);
71
+ if (status === void 0) {
72
+ if (strict) {
73
+ const suggestion = suggestClosestStatus(token, registry);
74
+ throw new PmCliError(`Invalid ${flagLabel} value "${token}". Use open|closed|canceled or a configured status id${suggestion ? `. Did you mean "${suggestion}"?` : "."}`, EXIT_CODE.USAGE);
75
+ }
76
+ resolved.push(token);
77
+ continue;
78
+ }
79
+ resolved.push(status);
80
+ }
81
+ return [...new Set(resolved)];
82
+ }
83
+
84
+ // dist/core/schema/runtime-field-filters.js
85
+ function valuesEqual(left, right) {
86
+ return stableValueEquals(left, right);
87
+ }
88
+ function collectRuntimeFilterValues(options, fieldRegistry, command) {
89
+ const filters = {};
90
+ for (const definition of fieldRegistry.command_to_fields.get(command) ?? []) {
91
+ const rawValue = readRuntimeFieldOptionValue(options, definition);
92
+ if (rawValue === void 0) {
93
+ continue;
94
+ }
95
+ filters[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);
96
+ }
97
+ return filters;
98
+ }
99
+ function matchesRuntimeFilters(item, filters) {
100
+ for (const [fieldKey, expectedValue] of Object.entries(filters)) {
101
+ const actualValue = item[fieldKey];
102
+ if (Array.isArray(expectedValue)) {
103
+ if (Array.isArray(actualValue)) {
104
+ const normalizedActual = actualValue.map((value) => String(value));
105
+ const normalizedExpected = expectedValue.map((value) => String(value));
106
+ if (!normalizedExpected.every((value) => normalizedActual.includes(value))) {
107
+ return false;
108
+ }
109
+ continue;
110
+ }
111
+ if (!valuesEqual(actualValue, expectedValue[expectedValue.length - 1])) {
112
+ return false;
113
+ }
114
+ continue;
115
+ }
116
+ if (!valuesEqual(actualValue, expectedValue)) {
117
+ return false;
118
+ }
119
+ }
120
+ return true;
121
+ }
122
+
123
+ export {
124
+ parseStatusFilterCsv,
125
+ collectRuntimeFilterValues,
126
+ matchesRuntimeFilters
127
+ };
128
+ //# sourceMappingURL=chunk-JQI2HE55.js.map
129
+
130
+ //# debugId=18d2c948-3f43-54ab-a773-8289b2d0d9ec
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../core/item/status-filter.ts","../../../../../../../../core/schema/runtime-field-filters.ts"],"sourcesContent":["import { EXIT_CODE } from \"../shared/constants.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { levenshteinDistanceWithinLimit } from \"../shared/levenshtein.js\";\nimport type { RuntimeStatusRegistry } from \"../schema/runtime-schema.js\";\nimport type { ItemStatus } from \"../../types/index.js\";\nimport { normalizeStatusInput } from \"./status.js\";\n\n// Workflow-group aliases shared by every status-filter consumer so that the\n// agent-friendly `open`/`closed`/`canceled` shorthands resolve to whatever the\n// runtime workflow has configured as its open/close/cancel anchors, rather than\n// hardcoding the built-in status ids. `cancelled` is accepted as a spelling\n// variant of `canceled`.\nconst STATUS_GROUP_ALIASES: Readonly<Record<string, \"open_status\" | \"close_status\" | \"canceled_status\">> = {\n open: \"open_status\",\n closed: \"close_status\",\n canceled: \"canceled_status\",\n cancelled: \"canceled_status\",\n};\n\n/**\n * Resolve a single status-filter token to a concrete runtime status id.\n *\n * Returns `undefined` when the token is not a recognized workflow-group alias\n * (open/closed/canceled) and does not normalize to a known registry status.\n * Callers decide whether an unrecognized token is an error (strict mode) or is\n * passed through verbatim (lenient mode) — see {@link parseStatusFilterCsv}.\n */\nexport function resolveStatusFilterToken(\n token: string,\n registry: RuntimeStatusRegistry,\n): ItemStatus | undefined {\n const trimmed = token.trim().toLowerCase();\n if (trimmed.length === 0) {\n return undefined;\n }\n const group = STATUS_GROUP_ALIASES[trimmed];\n if (group) {\n return registry[group] as ItemStatus;\n }\n return normalizeStatusInput(token, registry);\n}\n\nfunction collectStatusSuggestionCandidates(registry: RuntimeStatusRegistry): string[] {\n const candidates = new Set<string>(Object.keys(STATUS_GROUP_ALIASES));\n for (const definition of registry.definitions) {\n candidates.add(definition.id);\n for (const alias of definition.aliases) {\n candidates.add(alias);\n }\n }\n return [...candidates];\n}\n\nfunction suggestClosestStatus(value: string, registry: RuntimeStatusRegistry): string | undefined {\n // Only ever called for an unresolved, already-non-empty token (parseStatusFilterCsv\n // filters blanks first), so no empty-input guard is needed here.\n const normalized = value.trim().toLowerCase();\n let best: string | undefined;\n let bestDistance = Number.POSITIVE_INFINITY;\n for (const candidate of collectStatusSuggestionCandidates(registry)) {\n const distance = levenshteinDistanceWithinLimit(normalized, candidate.toLowerCase(), 2);\n if (distance !== null && distance < bestDistance) {\n best = candidate;\n bestDistance = distance;\n }\n }\n return best;\n}\n\nexport interface ParseStatusFilterOptions {\n /**\n * When true, an unrecognized token throws a USAGE error with a did-you-mean\n * hint. When false (default), an unrecognized token is passed through\n * verbatim so custom/unknown statuses still compare against item values by\n * their raw string — preserving the long-standing lenient `pm list` behavior.\n */\n strict?: boolean;\n /** Flag label used in error messages (default: \"--status\"). */\n flagLabel?: string;\n}\n\n/**\n * Parse a comma-separated status filter into a de-duplicated list of concrete\n * status ids. Shared by `pm list` (lenient) and `pm search` (strict, with a\n * did-you-mean hint on typos) so both surfaces resolve the open/closed/canceled\n * workflow-group aliases identically.\n */\nexport function parseStatusFilterCsv(\n raw: unknown,\n registry: RuntimeStatusRegistry,\n options?: ParseStatusFilterOptions,\n): ItemStatus[] | undefined {\n if (typeof raw !== \"string\") {\n return undefined;\n }\n const strict = options?.strict === true;\n const flagLabel = options?.flagLabel ?? \"--status\";\n const tokens = raw\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n if (tokens.length === 0) {\n return undefined;\n }\n const resolved: ItemStatus[] = [];\n for (const token of tokens) {\n const status = resolveStatusFilterToken(token, registry);\n if (status === undefined) {\n if (strict) {\n const suggestion = suggestClosestStatus(token, registry);\n throw new PmCliError(\n `Invalid ${flagLabel} value \"${token}\". Use open|closed|canceled or a configured status id${\n suggestion ? `. Did you mean \"${suggestion}\"?` : \".\"\n }`,\n EXIT_CODE.USAGE,\n );\n }\n resolved.push(token as ItemStatus);\n continue;\n }\n resolved.push(status);\n }\n return [...new Set(resolved)];\n}\n","import { coerceRuntimeFieldValue, readRuntimeFieldOptionValue } from \"./runtime-field-values.js\";\nimport type { RuntimeFieldCommand, RuntimeFieldRegistry } from \"./runtime-schema.js\";\nimport { stableValueEquals } from \"../shared/serialization.js\";\n\nfunction valuesEqual(left: unknown, right: unknown): boolean {\n return stableValueEquals(left, right);\n}\n\nexport function collectRuntimeFilterValues(\n options: Record<string, unknown>,\n fieldRegistry: RuntimeFieldRegistry,\n command: RuntimeFieldCommand,\n): Record<string, unknown> {\n const filters: Record<string, unknown> = {};\n for (const definition of fieldRegistry.command_to_fields.get(command) ?? []) {\n const rawValue = readRuntimeFieldOptionValue(options, definition);\n if (rawValue === undefined) {\n continue;\n }\n filters[definition.metadata_key] = coerceRuntimeFieldValue(definition, rawValue);\n }\n return filters;\n}\n\nexport function matchesRuntimeFilters(item: Record<string, unknown>, filters: Record<string, unknown>): boolean {\n for (const [fieldKey, expectedValue] of Object.entries(filters)) {\n const actualValue = item[fieldKey];\n if (Array.isArray(expectedValue)) {\n if (Array.isArray(actualValue)) {\n const normalizedActual = actualValue.map((value) => String(value));\n const normalizedExpected = expectedValue.map((value) => String(value));\n if (!normalizedExpected.every((value) => normalizedActual.includes(value))) {\n return false;\n }\n continue;\n }\n if (!valuesEqual(actualValue, expectedValue[expectedValue.length - 1])) {\n return false;\n }\n continue;\n }\n if (!valuesEqual(actualValue, expectedValue)) {\n return false;\n }\n }\n return true;\n}\n"],"names":[],"mappings":"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","debugId":"18d2c948-3f43-54ab-a773-8289b2d0d9ec"}