@unbrained/pm-cli 2026.7.13 → 2026.7.14

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 (487) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +28 -0
  3. package/dist/cli/commands/aggregate.d.ts +1 -1
  4. package/dist/cli/commands/aggregate.js +18 -6
  5. package/dist/cli/commands/aggregate.js.map +1 -1
  6. package/dist/cli/commands/context.d.ts +16 -1
  7. package/dist/cli/commands/context.js +98 -16
  8. package/dist/cli/commands/context.js.map +1 -1
  9. package/dist/cli/commands/create.d.ts +1 -1
  10. package/dist/cli/commands/create.js +11 -7
  11. package/dist/cli/commands/create.js.map +1 -1
  12. package/dist/cli/commands/deps.d.ts +6 -96
  13. package/dist/cli/commands/deps.js +4 -214
  14. package/dist/cli/commands/deps.js.map +1 -1
  15. package/dist/cli/commands/docs.d.ts +2 -44
  16. package/dist/cli/commands/docs.js +8 -13
  17. package/dist/cli/commands/docs.js.map +1 -1
  18. package/dist/cli/commands/files.d.ts +6 -134
  19. package/dist/cli/commands/files.js +4 -294
  20. package/dist/cli/commands/files.js.map +1 -1
  21. package/dist/cli/commands/get.js +15 -2
  22. package/dist/cli/commands/get.js.map +1 -1
  23. package/dist/cli/commands/list.js +5 -6
  24. package/dist/cli/commands/list.js.map +1 -1
  25. package/dist/cli/commands/next.d.ts +3 -1
  26. package/dist/cli/commands/next.js +77 -20
  27. package/dist/cli/commands/next.js.map +1 -1
  28. package/dist/cli/commands/update-many.js +6 -3
  29. package/dist/cli/commands/update-many.js.map +1 -1
  30. package/dist/cli/commands/update.js +14 -7
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/commands/validate.d.ts +1 -1
  33. package/dist/cli/commands/validate.js +32 -35
  34. package/dist/cli/commands/validate.js.map +1 -1
  35. package/dist/cli/main.d.ts +2 -14
  36. package/dist/cli/main.js +27 -8
  37. package/dist/cli/main.js.map +1 -1
  38. package/dist/cli-bundle/chunks/append-DYQWQK2J.js +11 -0
  39. package/dist/cli-bundle/chunks/{append-2FS6MVG7.js → append-PVZJDM6J.js} +5 -5
  40. package/dist/cli-bundle/chunks/{chunk-J2WAWP4U.js → chunk-2FNWQXZ2.js} +4 -4
  41. package/dist/cli-bundle/chunks/{chunk-YFGYDZRP.js → chunk-2GA3NK35.js} +4 -4
  42. package/dist/cli-bundle/chunks/{chunk-XFEIASAC.js → chunk-2QIQGYPW.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-3WCGYH5Q.js → chunk-3CMRNVTO.js} +7 -7
  44. package/dist/cli-bundle/chunks/chunk-3HKUXVKV.js +9 -0
  45. package/dist/cli-bundle/chunks/{chunk-VDAZPPRU.js → chunk-3I3LRT2G.js} +2 -2
  46. package/dist/cli-bundle/chunks/{chunk-3P3RFJIQ.js → chunk-3TL7WOEF.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-4SHJ5JS3.js → chunk-44LNIULG.js} +4 -4
  48. package/dist/cli-bundle/chunks/{chunk-QFOAWBOB.js → chunk-4DY4KPQI.js} +11 -10
  49. package/dist/cli-bundle/chunks/{chunk-QFOAWBOB.js.map → chunk-4DY4KPQI.js.map} +2 -2
  50. package/dist/cli-bundle/chunks/{chunk-BVCF4ULV.js → chunk-4RXTMU57.js} +5 -5
  51. package/dist/cli-bundle/chunks/{chunk-XMI2TRY5.js → chunk-4WREH7RT.js} +4 -4
  52. package/dist/cli-bundle/chunks/{chunk-JYUGUXFW.js → chunk-5CT5BW6E.js} +5 -5
  53. package/dist/cli-bundle/chunks/{chunk-NA5SBIB4.js → chunk-5URI7TPJ.js} +44 -44
  54. package/dist/cli-bundle/chunks/chunk-5URI7TPJ.js.map +7 -0
  55. package/dist/cli-bundle/chunks/{chunk-QGH6WL6L.js → chunk-655STMGA.js} +2 -2
  56. package/dist/cli-bundle/chunks/{chunk-DGKBWCMA.js → chunk-6IIVBC56.js} +4 -4
  57. package/dist/cli-bundle/chunks/{chunk-SRQLQUO6.js → chunk-6MHSBDGD.js} +7 -7
  58. package/dist/cli-bundle/chunks/{chunk-SRQLQUO6.js.map → chunk-6MHSBDGD.js.map} +2 -2
  59. package/dist/cli-bundle/chunks/{chunk-D4GPNYYP.js → chunk-6OTZMORS.js} +6 -6
  60. package/dist/cli-bundle/chunks/{chunk-JVRVXO6M.js → chunk-6PKA3SJQ.js} +6 -6
  61. package/dist/cli-bundle/chunks/{chunk-2PR4ZTRO.js → chunk-6TTOHMTB.js} +8 -8
  62. package/dist/cli-bundle/chunks/{chunk-2PR4ZTRO.js.map → chunk-6TTOHMTB.js.map} +1 -1
  63. package/dist/cli-bundle/chunks/chunk-6X5MZ5R2.js +9 -0
  64. package/dist/cli-bundle/chunks/chunk-76UBY2EE.js +5 -0
  65. package/dist/cli-bundle/chunks/{chunk-ZS2KPCJN.js → chunk-7QDSYUMF.js} +7 -7
  66. package/dist/cli-bundle/chunks/{chunk-Z7TFPIJ6.js → chunk-7TQMR6LK.js} +7 -7
  67. package/dist/cli-bundle/chunks/{chunk-AHA4POA6.js → chunk-ABRCOSDC.js} +3 -3
  68. package/dist/cli-bundle/chunks/{chunk-XY3CC3EM.js → chunk-AFWZRL7M.js} +59 -53
  69. package/dist/cli-bundle/chunks/chunk-AFWZRL7M.js.map +7 -0
  70. package/dist/cli-bundle/chunks/{chunk-KQJVTQVK.js → chunk-ANSJHDOZ.js} +2 -2
  71. package/dist/cli-bundle/chunks/{chunk-OMT4NO7T.js → chunk-B5DZYTT3.js} +113 -24
  72. package/dist/cli-bundle/chunks/chunk-B5DZYTT3.js.map +7 -0
  73. package/dist/cli-bundle/chunks/chunk-B7SWOIP6.js +5 -0
  74. package/dist/cli-bundle/chunks/{chunk-D2LXG7WX.js → chunk-BN62TO2S.js} +5 -5
  75. package/dist/cli-bundle/chunks/chunk-BN62TO2S.js.map +1 -0
  76. package/dist/cli-bundle/chunks/{chunk-ZTSV7P2T.js → chunk-BPD26E3P.js} +357 -42
  77. package/dist/cli-bundle/chunks/chunk-BPD26E3P.js.map +1 -0
  78. package/dist/cli-bundle/chunks/{chunk-RKGFUC4O.js → chunk-CDJYP7OQ.js} +36 -14
  79. package/dist/cli-bundle/chunks/chunk-CDJYP7OQ.js.map +1 -0
  80. package/dist/cli-bundle/chunks/{chunk-VLFLRFJP.js → chunk-CIOZ376P.js} +20 -13
  81. package/dist/cli-bundle/chunks/chunk-CIOZ376P.js.map +1 -0
  82. package/dist/cli-bundle/chunks/{chunk-HXTCZSAI.js → chunk-DBZVUJTK.js} +3 -3
  83. package/dist/cli-bundle/chunks/{chunk-2QNOWOIB.js → chunk-DO5RGJXT.js} +3 -3
  84. package/dist/cli-bundle/chunks/{chunk-MKONZ4UO.js → chunk-DRNJPEPQ.js} +4 -4
  85. package/dist/cli-bundle/chunks/{chunk-XDT2PSXA.js → chunk-DVOLZJ3C.js} +12 -11
  86. package/dist/cli-bundle/chunks/{chunk-XDT2PSXA.js.map → chunk-DVOLZJ3C.js.map} +1 -1
  87. package/dist/cli-bundle/chunks/{chunk-H36FXA7B.js → chunk-DYEX6NFH.js} +4 -4
  88. package/dist/cli-bundle/chunks/{chunk-G3IB5GTD.js → chunk-E2WC6S4P.js} +15 -11
  89. package/dist/cli-bundle/chunks/chunk-E2WC6S4P.js.map +7 -0
  90. package/dist/cli-bundle/chunks/{chunk-GAJ7U7B4.js → chunk-ERL2YFJ2.js} +3 -3
  91. package/dist/cli-bundle/chunks/{chunk-FPEYOFEF.js → chunk-F7PSHRNO.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-UH7OLT6F.js → chunk-FDSBDNYE.js} +2 -2
  93. package/dist/cli-bundle/chunks/{chunk-DGJF32JF.js → chunk-FIGXOCEQ.js} +66 -21
  94. package/dist/cli-bundle/chunks/chunk-FIGXOCEQ.js.map +7 -0
  95. package/dist/cli-bundle/chunks/{chunk-RQAY7C5T.js → chunk-FJZDA6MS.js} +3 -3
  96. package/dist/cli-bundle/chunks/{chunk-B4TVNGRX.js → chunk-FO7GMJKG.js} +3 -3
  97. package/dist/cli-bundle/chunks/chunk-FRQ63VPB.js +5 -0
  98. package/dist/cli-bundle/chunks/{chunk-UTYNQ2WH.js → chunk-FS6UM5WH.js} +48 -27
  99. package/dist/cli-bundle/chunks/chunk-FS6UM5WH.js.map +7 -0
  100. package/dist/cli-bundle/chunks/{chunk-U252II47.js → chunk-FTQLW4JD.js} +4 -4
  101. package/dist/cli-bundle/chunks/{chunk-TNGLCRKS.js → chunk-GSEADLRH.js} +1821 -1809
  102. package/dist/cli-bundle/chunks/chunk-GSEADLRH.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-TGG7YGMC.js → chunk-GXXC7QSK.js} +53 -47
  104. package/dist/cli-bundle/chunks/chunk-GXXC7QSK.js.map +1 -0
  105. package/dist/cli-bundle/chunks/{chunk-AGD4VZXH.js → chunk-H2QBAKLQ.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-CJVQ4XIG.js → chunk-HAMLIWAF.js} +4 -4
  107. package/dist/cli-bundle/chunks/{chunk-56DX6QYG.js → chunk-HL7V2PHX.js} +19 -13
  108. package/dist/cli-bundle/chunks/chunk-HL7V2PHX.js.map +1 -0
  109. package/dist/cli-bundle/chunks/{chunk-7QOIQTPB.js → chunk-HLHSQ5CA.js} +4 -4
  110. package/dist/cli-bundle/chunks/{chunk-AHC7J6XD.js → chunk-IA3YFTXT.js} +6 -6
  111. package/dist/cli-bundle/chunks/{chunk-5ZCVF4WF.js → chunk-IAPHYPRL.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-OCSQWIOW.js → chunk-IFZA4VB5.js} +4 -4
  113. package/dist/cli-bundle/chunks/{chunk-6O2HJENY.js → chunk-IGED7NH2.js} +61 -48
  114. package/dist/cli-bundle/chunks/chunk-IGED7NH2.js.map +7 -0
  115. package/dist/cli-bundle/chunks/{chunk-RPCCQDG2.js → chunk-ILLUE5DI.js} +36 -14
  116. package/dist/cli-bundle/chunks/chunk-ILLUE5DI.js.map +7 -0
  117. package/dist/cli-bundle/chunks/{chunk-4WMFM77X.js → chunk-J4NZOP3I.js} +5 -5
  118. package/dist/cli-bundle/chunks/{chunk-57JVERX3.js → chunk-JAF4TUQ7.js} +4 -4
  119. package/dist/cli-bundle/chunks/chunk-JAF4TUQ7.js.map +7 -0
  120. package/dist/cli-bundle/chunks/{chunk-MTNKSSSO.js → chunk-JL7WZ4O2.js} +3 -3
  121. package/dist/cli-bundle/chunks/{chunk-AZ52LTCY.js → chunk-K7WNZ7KD.js} +3 -3
  122. package/dist/cli-bundle/chunks/{chunk-2OLSXXIV.js → chunk-KADLSPIU.js} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-RQKORMM4.js → chunk-KB726FMH.js} +4 -4
  124. package/dist/cli-bundle/chunks/{chunk-WKSFBBZT.js → chunk-L24HCJFC.js} +114 -25
  125. package/dist/cli-bundle/chunks/chunk-L24HCJFC.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-LDO24J5I.js → chunk-LWTIRS3Y.js} +365 -43
  127. package/dist/cli-bundle/chunks/chunk-LWTIRS3Y.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-TZTQ4TVV.js → chunk-M6ASXYCU.js} +4 -4
  129. package/dist/cli-bundle/chunks/{chunk-WDDOAU7Z.js → chunk-M7EWN4TF.js} +3 -3
  130. package/dist/cli-bundle/chunks/{chunk-327DSGW2.js → chunk-MD6ULIPJ.js} +3 -3
  131. package/dist/cli-bundle/chunks/{chunk-OKDBHOON.js → chunk-MKL4CP2I.js} +61 -48
  132. package/dist/cli-bundle/chunks/chunk-MKL4CP2I.js.map +1 -0
  133. package/dist/cli-bundle/chunks/{chunk-M52DG2QJ.js → chunk-MQZ3PLCF.js} +2 -2
  134. package/dist/cli-bundle/chunks/{chunk-GQ2CQNGI.js → chunk-N3CMP4NI.js} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-J7SBFUZC.js → chunk-NAQYVWSQ.js} +4 -4
  136. package/dist/cli-bundle/chunks/{chunk-U2GMYP3L.js → chunk-NKW36AMT.js} +4 -4
  137. package/dist/cli-bundle/chunks/{chunk-5WEYOVZ7.js → chunk-OBDLEQG5.js} +19 -12
  138. package/dist/cli-bundle/chunks/chunk-OBDLEQG5.js.map +7 -0
  139. package/dist/cli-bundle/chunks/{chunk-VL4LYTJN.js → chunk-OI4S4KCI.js} +18 -12
  140. package/dist/cli-bundle/chunks/chunk-OI4S4KCI.js.map +7 -0
  141. package/dist/cli-bundle/chunks/{chunk-FCVVMAEX.js → chunk-P6MYFH6K.js} +60 -22
  142. package/dist/cli-bundle/chunks/chunk-P6MYFH6K.js.map +1 -0
  143. package/dist/cli-bundle/chunks/{chunk-FTQQAPRX.js → chunk-PHKP3AGR.js} +8 -8
  144. package/dist/cli-bundle/chunks/{chunk-WVUXNIYO.js → chunk-Q37E63AM.js} +4 -4
  145. package/dist/cli-bundle/chunks/{chunk-JVXV7ANV.js → chunk-Q7E6OYZK.js} +2 -2
  146. package/dist/cli-bundle/chunks/{chunk-WVUYATII.js → chunk-QABYZYLU.js} +4 -4
  147. package/dist/cli-bundle/chunks/{chunk-QRRUGIJN.js → chunk-QASRVKUQ.js} +45 -45
  148. package/dist/cli-bundle/chunks/chunk-QASRVKUQ.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-L4262MFB.js → chunk-QK2ZN6UL.js} +14 -5
  150. package/dist/cli-bundle/chunks/{chunk-L4262MFB.js.map → chunk-QK2ZN6UL.js.map} +1 -1
  151. package/dist/cli-bundle/chunks/{chunk-7TQPV7HR.js → chunk-QSPARJWF.js} +2 -2
  152. package/dist/cli-bundle/chunks/{chunk-GTKILM6F.js → chunk-QZ7LT3XE.js} +3 -3
  153. package/dist/cli-bundle/chunks/{chunk-L3VKY6R6.js → chunk-RA5AIAMP.js} +3 -3
  154. package/dist/cli-bundle/chunks/{chunk-BJS27ALI.js → chunk-RGXD5JJR.js} +6 -6
  155. package/dist/cli-bundle/chunks/{chunk-TSEPW2P6.js → chunk-RMF3IOYQ.js} +7 -7
  156. package/dist/cli-bundle/chunks/{chunk-QXYKH56X.js → chunk-T4BRCB6Z.js} +1894 -1875
  157. package/dist/cli-bundle/chunks/chunk-T4BRCB6Z.js.map +7 -0
  158. package/dist/cli-bundle/chunks/{chunk-TGGTXC52.js → chunk-TH7U4KLY.js} +3 -3
  159. package/dist/cli-bundle/chunks/{chunk-LP4UATP6.js → chunk-TWLDBKQU.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-OTZ3C2NE.js → chunk-TZ2PSLLT.js} +49 -28
  161. package/dist/cli-bundle/chunks/chunk-TZ2PSLLT.js.map +1 -0
  162. package/dist/cli-bundle/chunks/{chunk-UK222BHQ.js → chunk-TZRTLMWM.js} +4 -4
  163. package/dist/cli-bundle/chunks/{chunk-6E6S2X6S.js → chunk-UB2QYSTO.js} +8 -8
  164. package/dist/cli-bundle/chunks/{chunk-S6CXUSYC.js → chunk-UGTVWL3E.js} +5 -5
  165. package/dist/cli-bundle/chunks/{chunk-BNS6QHTZ.js → chunk-UJ4HJYWL.js} +2 -2
  166. package/dist/cli-bundle/chunks/{chunk-BYVOEJPQ.js → chunk-UKUIIBDW.js} +4 -4
  167. package/dist/cli-bundle/chunks/{chunk-SGDBVR7X.js → chunk-UVBA6F5A.js} +2 -2
  168. package/dist/cli-bundle/chunks/{chunk-DZRZMBBF.js → chunk-VJTAEIPC.js} +5 -5
  169. package/dist/cli-bundle/chunks/{chunk-74PWVJON.js → chunk-W6HZ55JO.js} +2 -2
  170. package/dist/cli-bundle/chunks/{chunk-HR2MQAO5.js → chunk-WD6MSYMP.js} +13 -4
  171. package/dist/cli-bundle/chunks/{chunk-HR2MQAO5.js.map → chunk-WD6MSYMP.js.map} +2 -2
  172. package/dist/cli-bundle/chunks/{chunk-P7IFURWH.js → chunk-WPAWZW7S.js} +2 -2
  173. package/dist/cli-bundle/chunks/{chunk-36LEOWSX.js → chunk-WQUEHPZB.js} +2 -2
  174. package/dist/cli-bundle/chunks/{chunk-FCKJF7G2.js → chunk-WRKB56FC.js} +3 -3
  175. package/dist/cli-bundle/chunks/{chunk-KR5EHAN4.js → chunk-X3GYR4P2.js} +2 -2
  176. package/dist/cli-bundle/chunks/{chunk-J567OZJY.js → chunk-X6BVXQ52.js} +16 -12
  177. package/dist/cli-bundle/chunks/chunk-X6BVXQ52.js.map +1 -0
  178. package/dist/cli-bundle/chunks/chunk-Y72FV7RM.js +178 -0
  179. package/dist/cli-bundle/chunks/chunk-Y72FV7RM.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-OWW2KXOV.js → chunk-YQYG2V23.js} +2 -2
  181. package/dist/cli-bundle/chunks/{chunk-G2SCT7BC.js → chunk-YVKE5ZDM.js} +4 -4
  182. package/dist/cli-bundle/chunks/{chunk-QHIN4UTF.js → chunk-ZAYYDNB3.js} +4 -4
  183. package/dist/cli-bundle/chunks/chunk-ZHBI2AP7.js +9 -0
  184. package/dist/cli-bundle/chunks/chunk-ZNP64HOW.js +175 -0
  185. package/dist/cli-bundle/chunks/chunk-ZNP64HOW.js.map +1 -0
  186. package/dist/cli-bundle/chunks/{chunk-GNVBUNJQ.js → chunk-ZTRBSABY.js} +3 -3
  187. package/dist/cli-bundle/chunks/{chunk-PY32KGQU.js → chunk-ZUKSZVBW.js} +5 -5
  188. package/dist/cli-bundle/chunks/{close-CU56F47E.js → close-LZECOMHO.js} +5 -5
  189. package/dist/cli-bundle/chunks/close-RI4JQQHU.js +12 -0
  190. package/dist/cli-bundle/chunks/close-many-LY2XJ52M.js +21 -0
  191. package/dist/cli-bundle/chunks/{close-many-ZQ2WP67J.js → close-many-ZHI6A5TN.js} +12 -12
  192. package/dist/cli-bundle/chunks/comments-35M273DN.js +13 -0
  193. package/dist/cli-bundle/chunks/{comments-UDUMKXL6.js → comments-AJWRTFZ5.js} +7 -7
  194. package/dist/cli-bundle/chunks/{copy-VFHECFBV.js → copy-GMXYKBXT.js} +4 -4
  195. package/dist/cli-bundle/chunks/copy-NPYM7M7U.js +9 -0
  196. package/dist/cli-bundle/chunks/create-F53OBTOU.js +27 -0
  197. package/dist/cli-bundle/chunks/{create-CE2X3SGF.js → create-HU4Q7RJX.js} +11 -9
  198. package/dist/cli-bundle/chunks/{delete-2JXQCHHT.js → delete-GSDZLTRC.js} +4 -4
  199. package/dist/cli-bundle/chunks/delete-ODRWJWAM.js +10 -0
  200. package/dist/cli-bundle/chunks/deps-U57I7EAK.js +16 -0
  201. package/dist/cli-bundle/chunks/{deps-FPXNLO6C.js → deps-WWB7P2GT.js} +7 -4
  202. package/dist/cli-bundle/chunks/docs-G7N4E2JO.js +14 -0
  203. package/dist/cli-bundle/chunks/{docs-AMAR4OHU.js → docs-MQIY2ZQS.js} +7 -7
  204. package/dist/cli-bundle/chunks/files-TBZD7V6H.js +18 -0
  205. package/dist/cli-bundle/chunks/{files-JFHN7DYM.js → files-TTY6N2AV.js} +7 -7
  206. package/dist/cli-bundle/chunks/focus-U5TRVCRS.js +10 -0
  207. package/dist/cli-bundle/chunks/{focus-QFN2RRZ7.js → focus-XT6YVFFX.js} +5 -5
  208. package/dist/cli-bundle/chunks/{history-compact-G34XMABV.js → history-compact-KKVUWB4V.js} +8 -8
  209. package/dist/cli-bundle/chunks/{history-compact-SAHT5D46.js → history-compact-M7GHYVFN.js} +8 -8
  210. package/dist/cli-bundle/chunks/{history-redact-IFJDNKLZ.js → history-redact-3DVZOILD.js} +6 -6
  211. package/dist/cli-bundle/chunks/history-redact-JIHZLHDP.js +16 -0
  212. package/dist/cli-bundle/chunks/{history-repair-NXLQTCVN.js → history-repair-ITDUMK4N.js} +8 -8
  213. package/dist/cli-bundle/chunks/history-repair-NAFCHLH7.js +18 -0
  214. package/dist/cli-bundle/chunks/{learnings-5CZKAMBS.js → learnings-FGO3NSFW.js} +7 -7
  215. package/dist/cli-bundle/chunks/learnings-SONGPSHI.js +13 -0
  216. package/dist/cli-bundle/chunks/notes-BSD53H2W.js +13 -0
  217. package/dist/cli-bundle/chunks/{notes-POMK37UI.js → notes-NQ6RXVW6.js} +7 -7
  218. package/dist/cli-bundle/chunks/{plan-YBNYNT3A.js → plan-2NNEO46V.js} +10 -10
  219. package/dist/cli-bundle/chunks/plan-AWLYGBNV.js +24 -0
  220. package/dist/cli-bundle/chunks/{profile-JNKSU6EQ.js → profile-AAQUU6T3.js} +9 -9
  221. package/dist/cli-bundle/chunks/{profile-A2WPVG6I.js → profile-U725ATWZ.js} +9 -9
  222. package/dist/cli-bundle/chunks/{register-list-query-UG4ZA5AU.js → register-list-query-BUWCYHBT.js} +14 -13
  223. package/dist/cli-bundle/chunks/{register-list-query-UG4ZA5AU.js.map → register-list-query-BUWCYHBT.js.map} +1 -1
  224. package/dist/cli-bundle/chunks/{register-list-query-KJULL4W3.js → register-list-query-KTZ6AGE7.js} +16 -15
  225. package/dist/cli-bundle/chunks/{register-list-query-KJULL4W3.js.map → register-list-query-KTZ6AGE7.js.map} +1 -1
  226. package/dist/cli-bundle/chunks/{register-mutation-3OXYXBKH.js → register-mutation-4FMGJJF7.js} +29 -29
  227. package/dist/cli-bundle/chunks/{register-mutation-WK265BM7.js → register-mutation-UELYYOR7.js} +29 -29
  228. package/dist/cli-bundle/chunks/{register-operations-C5SQH3FJ.js → register-operations-ISUX6LY5.js} +33 -29
  229. package/dist/cli-bundle/chunks/{register-operations-C5SQH3FJ.js.map → register-operations-ISUX6LY5.js.map} +1 -1
  230. package/dist/cli-bundle/chunks/{register-operations-FH3PBHYN.js → register-operations-JVW24J2Y.js} +35 -31
  231. package/dist/cli-bundle/chunks/{register-operations-FH3PBHYN.js.map → register-operations-JVW24J2Y.js.map} +1 -1
  232. package/dist/cli-bundle/chunks/{register-setup-CCK7CJVR.js → register-setup-5XNGKJ22.js} +15 -15
  233. package/dist/cli-bundle/chunks/{register-setup-CPZBGSOJ.js → register-setup-ZTNY6S7R.js} +15 -15
  234. package/dist/cli-bundle/chunks/restore-66GLMHIX.js +14 -0
  235. package/dist/cli-bundle/chunks/{restore-IVS5XGYR.js → restore-B3BAB6X2.js} +6 -6
  236. package/dist/cli-bundle/chunks/{schema-P2MF23JO.js → schema-LZNUYHDB.js} +6 -6
  237. package/dist/cli-bundle/chunks/schema-LZNUYHDB.js.map +7 -0
  238. package/dist/cli-bundle/chunks/{schema-R3U2REY4.js → schema-U7IM2DXV.js} +6 -6
  239. package/dist/cli-bundle/chunks/schema-U7IM2DXV.js.map +1 -0
  240. package/dist/cli-bundle/chunks/update-2XGHIVQ2.js +21 -0
  241. package/dist/cli-bundle/chunks/update-2XGHIVQ2.js.map +7 -0
  242. package/dist/cli-bundle/chunks/{update-YBIQESMH.js → update-Q3UCILNR.js} +12 -12
  243. package/dist/cli-bundle/chunks/update-Q3UCILNR.js.map +1 -0
  244. package/dist/cli-bundle/chunks/{update-many-F3CIV5SQ.js → update-many-75K57FS3.js} +19 -19
  245. package/dist/cli-bundle/chunks/update-many-75K57FS3.js.map +1 -0
  246. package/dist/cli-bundle/chunks/update-many-U42YA445.js +30 -0
  247. package/dist/cli-bundle/chunks/update-many-U42YA445.js.map +7 -0
  248. package/dist/cli-bundle/main.js +39 -16
  249. package/dist/cli-bundle/main.js.map +2 -2
  250. package/dist/cli-bundle/sdk-runtime.js +56 -53
  251. package/dist/cli-bundle/sdk-testing.js +6 -6
  252. package/dist/cli-bundle/sdk.js +115 -55
  253. package/dist/cli-bundle/sdk.js.map +2 -2
  254. package/dist/core/extensions/command-hook-context.d.ts +40 -0
  255. package/dist/core/extensions/command-hook-context.js +14 -0
  256. package/dist/core/extensions/command-hook-context.js.map +1 -0
  257. package/dist/core/extensions/index.d.ts +1 -0
  258. package/dist/core/extensions/index.js +4 -3
  259. package/dist/core/extensions/index.js.map +1 -1
  260. package/dist/core/item/parse.d.ts +2 -0
  261. package/dist/core/item/parse.js +11 -2
  262. package/dist/core/item/parse.js.map +1 -1
  263. package/dist/core/store/paths.d.ts +2 -0
  264. package/dist/core/store/paths.js +10 -2
  265. package/dist/core/store/paths.js.map +1 -1
  266. package/dist/mcp/tool-definitions.js +12 -2
  267. package/dist/mcp/tool-definitions.js.map +1 -1
  268. package/dist/sdk/context-packing.d.ts +114 -0
  269. package/dist/sdk/context-packing.js +219 -0
  270. package/dist/sdk/context-packing.js.map +1 -0
  271. package/dist/sdk/context-relevance.d.ts +1 -1
  272. package/dist/sdk/context-relevance.js +4 -2
  273. package/dist/sdk/context-relevance.js.map +1 -1
  274. package/dist/sdk/context-usage.d.ts +79 -0
  275. package/dist/sdk/context-usage.js +193 -0
  276. package/dist/sdk/context-usage.js.map +1 -0
  277. package/dist/sdk/dependencies.d.ts +145 -0
  278. package/dist/sdk/dependencies.js +327 -0
  279. package/dist/sdk/dependencies.js.map +1 -0
  280. package/dist/sdk/docs.d.ts +48 -0
  281. package/dist/sdk/docs.js +15 -0
  282. package/dist/sdk/docs.js.map +1 -0
  283. package/dist/sdk/files.d.ts +135 -0
  284. package/dist/sdk/files.js +320 -0
  285. package/dist/sdk/files.js.map +1 -0
  286. package/dist/sdk/index.d.ts +6 -0
  287. package/dist/sdk/index.js +8 -2
  288. package/dist/sdk/index.js.map +1 -1
  289. package/dist/{cli/commands → sdk}/linked-artifacts.d.ts +11 -5
  290. package/dist/{cli/commands → sdk}/linked-artifacts.js +49 -25
  291. package/dist/sdk/linked-artifacts.js.map +1 -0
  292. package/dist/sdk/runtime.d.ts +4 -4
  293. package/dist/sdk/runtime.js +7 -4
  294. package/dist/sdk/runtime.js.map +1 -1
  295. package/dist/sdk/workspace.js +3 -2
  296. package/dist/sdk/workspace.js.map +1 -1
  297. package/docs/AGENT_GUIDE.md +1 -1
  298. package/docs/CONFIGURATION.md +1 -0
  299. package/docs/PR_REVIEW_LOOP.md +21 -11
  300. package/docs/SDK.md +94 -0
  301. package/marketplace.json +2 -2
  302. package/package.json +1 -1
  303. package/packages/pm-beads/package.json +1 -1
  304. package/packages/pm-calendar/package.json +1 -1
  305. package/packages/pm-command-kit/package.json +1 -1
  306. package/packages/pm-governance-audit/package.json +1 -1
  307. package/packages/pm-guide-shell/package.json +1 -1
  308. package/packages/pm-kanban/package.json +1 -1
  309. package/packages/pm-lifecycle-hooks/package.json +1 -1
  310. package/packages/pm-linked-test-adapters/package.json +1 -1
  311. package/packages/pm-search-advanced/package.json +1 -1
  312. package/packages/pm-templates/package.json +1 -1
  313. package/packages/pm-todos/package.json +1 -1
  314. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  315. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  316. package/dist/cli/commands/linked-artifacts.js.map +0 -1
  317. package/dist/cli-bundle/chunks/append-CTKFDEAX.js +0 -11
  318. package/dist/cli-bundle/chunks/chunk-56DX6QYG.js.map +0 -1
  319. package/dist/cli-bundle/chunks/chunk-57JVERX3.js.map +0 -7
  320. package/dist/cli-bundle/chunks/chunk-5WEYOVZ7.js.map +0 -7
  321. package/dist/cli-bundle/chunks/chunk-6O2HJENY.js.map +0 -7
  322. package/dist/cli-bundle/chunks/chunk-CCAGZCZK.js +0 -17
  323. package/dist/cli-bundle/chunks/chunk-CCAGZCZK.js.map +0 -7
  324. package/dist/cli-bundle/chunks/chunk-D2LXG7WX.js.map +0 -1
  325. package/dist/cli-bundle/chunks/chunk-DGJF32JF.js.map +0 -7
  326. package/dist/cli-bundle/chunks/chunk-FCVVMAEX.js.map +0 -1
  327. package/dist/cli-bundle/chunks/chunk-FUOK7JZ6.js +0 -14
  328. package/dist/cli-bundle/chunks/chunk-FUOK7JZ6.js.map +0 -1
  329. package/dist/cli-bundle/chunks/chunk-G3IB5GTD.js.map +0 -7
  330. package/dist/cli-bundle/chunks/chunk-J567OZJY.js.map +0 -1
  331. package/dist/cli-bundle/chunks/chunk-LDO24J5I.js.map +0 -7
  332. package/dist/cli-bundle/chunks/chunk-NA5SBIB4.js.map +0 -7
  333. package/dist/cli-bundle/chunks/chunk-OKDBHOON.js.map +0 -1
  334. package/dist/cli-bundle/chunks/chunk-OMT4NO7T.js.map +0 -7
  335. package/dist/cli-bundle/chunks/chunk-OTZ3C2NE.js.map +0 -1
  336. package/dist/cli-bundle/chunks/chunk-QRRUGIJN.js.map +0 -1
  337. package/dist/cli-bundle/chunks/chunk-QXYKH56X.js.map +0 -7
  338. package/dist/cli-bundle/chunks/chunk-RKGFUC4O.js.map +0 -1
  339. package/dist/cli-bundle/chunks/chunk-RPCCQDG2.js.map +0 -7
  340. package/dist/cli-bundle/chunks/chunk-TGG7YGMC.js.map +0 -1
  341. package/dist/cli-bundle/chunks/chunk-TNGLCRKS.js.map +0 -1
  342. package/dist/cli-bundle/chunks/chunk-UTYNQ2WH.js.map +0 -7
  343. package/dist/cli-bundle/chunks/chunk-VL4LYTJN.js.map +0 -7
  344. package/dist/cli-bundle/chunks/chunk-VLFLRFJP.js.map +0 -1
  345. package/dist/cli-bundle/chunks/chunk-WKSFBBZT.js.map +0 -1
  346. package/dist/cli-bundle/chunks/chunk-XY3CC3EM.js.map +0 -7
  347. package/dist/cli-bundle/chunks/chunk-ZTSV7P2T.js.map +0 -1
  348. package/dist/cli-bundle/chunks/close-BWM7FTF4.js +0 -12
  349. package/dist/cli-bundle/chunks/close-many-AUHTVFUQ.js +0 -21
  350. package/dist/cli-bundle/chunks/comments-7D5VPBZI.js +0 -13
  351. package/dist/cli-bundle/chunks/copy-QJ6ZVWZV.js +0 -9
  352. package/dist/cli-bundle/chunks/create-FGMTTYOI.js +0 -25
  353. package/dist/cli-bundle/chunks/delete-L2GMMMPR.js +0 -10
  354. package/dist/cli-bundle/chunks/deps-KTFI4RWD.js +0 -13
  355. package/dist/cli-bundle/chunks/docs-VNURA275.js +0 -14
  356. package/dist/cli-bundle/chunks/files-UNFPZLTG.js +0 -18
  357. package/dist/cli-bundle/chunks/focus-MI2UHBP4.js +0 -10
  358. package/dist/cli-bundle/chunks/history-redact-VAHGBUHI.js +0 -16
  359. package/dist/cli-bundle/chunks/history-repair-DDYQXR43.js +0 -18
  360. package/dist/cli-bundle/chunks/learnings-VWJEKHEO.js +0 -13
  361. package/dist/cli-bundle/chunks/notes-NGVJJJQO.js +0 -13
  362. package/dist/cli-bundle/chunks/plan-U6SQJUFI.js +0 -24
  363. package/dist/cli-bundle/chunks/restore-AX6ZMGHZ.js +0 -14
  364. package/dist/cli-bundle/chunks/update-XYHF3YZF.js +0 -21
  365. package/dist/cli-bundle/chunks/update-many-5HKVHFUL.js +0 -30
  366. /package/dist/cli-bundle/chunks/{append-CTKFDEAX.js.map → append-DYQWQK2J.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{append-2FS6MVG7.js.map → append-PVZJDM6J.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{chunk-J2WAWP4U.js.map → chunk-2FNWQXZ2.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{chunk-YFGYDZRP.js.map → chunk-2GA3NK35.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{chunk-XFEIASAC.js.map → chunk-2QIQGYPW.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{chunk-3WCGYH5Q.js.map → chunk-3CMRNVTO.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{close-BWM7FTF4.js.map → chunk-3HKUXVKV.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{chunk-VDAZPPRU.js.map → chunk-3I3LRT2G.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{chunk-3P3RFJIQ.js.map → chunk-3TL7WOEF.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{chunk-4SHJ5JS3.js.map → chunk-44LNIULG.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{chunk-BVCF4ULV.js.map → chunk-4RXTMU57.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{chunk-XMI2TRY5.js.map → chunk-4WREH7RT.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{chunk-JYUGUXFW.js.map → chunk-5CT5BW6E.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{chunk-QGH6WL6L.js.map → chunk-655STMGA.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{chunk-DGKBWCMA.js.map → chunk-6IIVBC56.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{chunk-D4GPNYYP.js.map → chunk-6OTZMORS.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{chunk-JVRVXO6M.js.map → chunk-6PKA3SJQ.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{close-many-AUHTVFUQ.js.map → chunk-6X5MZ5R2.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{close-CU56F47E.js.map → chunk-76UBY2EE.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{chunk-ZS2KPCJN.js.map → chunk-7QDSYUMF.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{chunk-Z7TFPIJ6.js.map → chunk-7TQMR6LK.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{chunk-AHA4POA6.js.map → chunk-ABRCOSDC.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{chunk-KQJVTQVK.js.map → chunk-ANSJHDOZ.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{close-many-ZQ2WP67J.js.map → chunk-B7SWOIP6.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{chunk-HXTCZSAI.js.map → chunk-DBZVUJTK.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{chunk-2QNOWOIB.js.map → chunk-DO5RGJXT.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{chunk-MKONZ4UO.js.map → chunk-DRNJPEPQ.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{chunk-H36FXA7B.js.map → chunk-DYEX6NFH.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{chunk-GAJ7U7B4.js.map → chunk-ERL2YFJ2.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{chunk-FPEYOFEF.js.map → chunk-F7PSHRNO.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{chunk-UH7OLT6F.js.map → chunk-FDSBDNYE.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{chunk-RQAY7C5T.js.map → chunk-FJZDA6MS.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{chunk-B4TVNGRX.js.map → chunk-FO7GMJKG.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{comments-UDUMKXL6.js.map → chunk-FRQ63VPB.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{chunk-U252II47.js.map → chunk-FTQLW4JD.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{chunk-AGD4VZXH.js.map → chunk-H2QBAKLQ.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{chunk-CJVQ4XIG.js.map → chunk-HAMLIWAF.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{chunk-7QOIQTPB.js.map → chunk-HLHSQ5CA.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{chunk-AHC7J6XD.js.map → chunk-IA3YFTXT.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{chunk-5ZCVF4WF.js.map → chunk-IAPHYPRL.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{chunk-OCSQWIOW.js.map → chunk-IFZA4VB5.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{chunk-4WMFM77X.js.map → chunk-J4NZOP3I.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{chunk-MTNKSSSO.js.map → chunk-JL7WZ4O2.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{chunk-AZ52LTCY.js.map → chunk-K7WNZ7KD.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{chunk-2OLSXXIV.js.map → chunk-KADLSPIU.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{chunk-RQKORMM4.js.map → chunk-KB726FMH.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{chunk-TZTQ4TVV.js.map → chunk-M6ASXYCU.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{chunk-WDDOAU7Z.js.map → chunk-M7EWN4TF.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{chunk-327DSGW2.js.map → chunk-MD6ULIPJ.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{chunk-M52DG2QJ.js.map → chunk-MQZ3PLCF.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{chunk-GQ2CQNGI.js.map → chunk-N3CMP4NI.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{chunk-J7SBFUZC.js.map → chunk-NAQYVWSQ.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{chunk-U2GMYP3L.js.map → chunk-NKW36AMT.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{chunk-FTQQAPRX.js.map → chunk-PHKP3AGR.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{chunk-WVUXNIYO.js.map → chunk-Q37E63AM.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{chunk-JVXV7ANV.js.map → chunk-Q7E6OYZK.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{chunk-WVUYATII.js.map → chunk-QABYZYLU.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{chunk-7TQPV7HR.js.map → chunk-QSPARJWF.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{chunk-GTKILM6F.js.map → chunk-QZ7LT3XE.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{chunk-L3VKY6R6.js.map → chunk-RA5AIAMP.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{chunk-BJS27ALI.js.map → chunk-RGXD5JJR.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{chunk-TSEPW2P6.js.map → chunk-RMF3IOYQ.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{chunk-TGGTXC52.js.map → chunk-TH7U4KLY.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{chunk-LP4UATP6.js.map → chunk-TWLDBKQU.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{chunk-UK222BHQ.js.map → chunk-TZRTLMWM.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{chunk-6E6S2X6S.js.map → chunk-UB2QYSTO.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{chunk-S6CXUSYC.js.map → chunk-UGTVWL3E.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{chunk-BNS6QHTZ.js.map → chunk-UJ4HJYWL.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{chunk-BYVOEJPQ.js.map → chunk-UKUIIBDW.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{chunk-SGDBVR7X.js.map → chunk-UVBA6F5A.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{chunk-DZRZMBBF.js.map → chunk-VJTAEIPC.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{chunk-74PWVJON.js.map → chunk-W6HZ55JO.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{chunk-P7IFURWH.js.map → chunk-WPAWZW7S.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{chunk-36LEOWSX.js.map → chunk-WQUEHPZB.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{chunk-FCKJF7G2.js.map → chunk-WRKB56FC.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{chunk-KR5EHAN4.js.map → chunk-X3GYR4P2.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{chunk-OWW2KXOV.js.map → chunk-YQYG2V23.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{chunk-G2SCT7BC.js.map → chunk-YVKE5ZDM.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{chunk-QHIN4UTF.js.map → chunk-ZAYYDNB3.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{comments-7D5VPBZI.js.map → chunk-ZHBI2AP7.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{chunk-GNVBUNJQ.js.map → chunk-ZTRBSABY.js.map} +0 -0
  447. /package/dist/cli-bundle/chunks/{chunk-PY32KGQU.js.map → chunk-ZUKSZVBW.js.map} +0 -0
  448. /package/dist/cli-bundle/chunks/{copy-VFHECFBV.js.map → close-LZECOMHO.js.map} +0 -0
  449. /package/dist/cli-bundle/chunks/{copy-QJ6ZVWZV.js.map → close-RI4JQQHU.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{create-FGMTTYOI.js.map → close-many-LY2XJ52M.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{create-CE2X3SGF.js.map → close-many-ZHI6A5TN.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{delete-L2GMMMPR.js.map → comments-35M273DN.js.map} +0 -0
  453. /package/dist/cli-bundle/chunks/{delete-2JXQCHHT.js.map → comments-AJWRTFZ5.js.map} +0 -0
  454. /package/dist/cli-bundle/chunks/{deps-FPXNLO6C.js.map → copy-GMXYKBXT.js.map} +0 -0
  455. /package/dist/cli-bundle/chunks/{deps-KTFI4RWD.js.map → copy-NPYM7M7U.js.map} +0 -0
  456. /package/dist/cli-bundle/chunks/{docs-VNURA275.js.map → create-F53OBTOU.js.map} +0 -0
  457. /package/dist/cli-bundle/chunks/{docs-AMAR4OHU.js.map → create-HU4Q7RJX.js.map} +0 -0
  458. /package/dist/cli-bundle/chunks/{files-JFHN7DYM.js.map → delete-GSDZLTRC.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{files-UNFPZLTG.js.map → delete-ODRWJWAM.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{focus-MI2UHBP4.js.map → deps-U57I7EAK.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{focus-QFN2RRZ7.js.map → deps-WWB7P2GT.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{history-compact-SAHT5D46.js.map → docs-G7N4E2JO.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{history-compact-G34XMABV.js.map → docs-MQIY2ZQS.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{history-redact-VAHGBUHI.js.map → files-TBZD7V6H.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{history-redact-IFJDNKLZ.js.map → files-TTY6N2AV.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{history-repair-DDYQXR43.js.map → focus-U5TRVCRS.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{history-repair-NXLQTCVN.js.map → focus-XT6YVFFX.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{learnings-5CZKAMBS.js.map → history-compact-KKVUWB4V.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{learnings-VWJEKHEO.js.map → history-compact-M7GHYVFN.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{notes-POMK37UI.js.map → history-redact-3DVZOILD.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{notes-NGVJJJQO.js.map → history-redact-JIHZLHDP.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{plan-YBNYNT3A.js.map → history-repair-ITDUMK4N.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{plan-U6SQJUFI.js.map → history-repair-NAFCHLH7.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{profile-JNKSU6EQ.js.map → learnings-FGO3NSFW.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{profile-A2WPVG6I.js.map → learnings-SONGPSHI.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{restore-AX6ZMGHZ.js.map → notes-BSD53H2W.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{restore-IVS5XGYR.js.map → notes-NQ6RXVW6.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{schema-R3U2REY4.js.map → plan-2NNEO46V.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{schema-P2MF23JO.js.map → plan-AWLYGBNV.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{update-YBIQESMH.js.map → profile-AAQUU6T3.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{update-XYHF3YZF.js.map → profile-U725ATWZ.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{register-mutation-3OXYXBKH.js.map → register-mutation-4FMGJJF7.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{register-mutation-WK265BM7.js.map → register-mutation-UELYYOR7.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{register-setup-CCK7CJVR.js.map → register-setup-5XNGKJ22.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{register-setup-CPZBGSOJ.js.map → register-setup-ZTNY6S7R.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{update-many-5HKVHFUL.js.map → restore-66GLMHIX.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{update-many-F3CIV5SQ.js.map → restore-B3BAB6X2.js.map} +0 -0
@@ -5,14 +5,14 @@ import {
5
5
  deleteItem,
6
6
  readSettings,
7
7
  toItemRecord
8
- } from "./chunk-QXYKH56X.js";
8
+ } from "./chunk-T4BRCB6Z.js";
9
9
  import {
10
10
  EXIT_CODE,
11
11
  PmCliError,
12
12
  getSettingsPath,
13
13
  pathExists,
14
14
  resolvePmRoot
15
- } from "./chunk-XY3CC3EM.js";
15
+ } from "./chunk-AFWZRL7M.js";
16
16
 
17
17
  // dist/cli/commands/delete.js
18
18
  import path from "node:path";
@@ -52,4 +52,4 @@ async function runDelete(id, options, global2) {
52
52
  export {
53
53
  runDelete
54
54
  };
55
- //# sourceMappingURL=chunk-TGGTXC52.js.map
55
+ //# sourceMappingURL=chunk-TH7U4KLY.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  normalizeItemId
3
- } from "./chunk-QXYKH56X.js";
3
+ } from "./chunk-T4BRCB6Z.js";
4
4
  import {
5
5
  EXIT_CODE,
6
6
  PmCliError
7
- } from "./chunk-XY3CC3EM.js";
7
+ } from "./chunk-AFWZRL7M.js";
8
8
 
9
9
  // dist/core/item/parent-reference-policy.js
10
10
  !(function() {
@@ -107,4 +107,4 @@ export {
107
107
  normalizeSprintReleaseFormatPolicy,
108
108
  validateSprintOrReleaseValue
109
109
  };
110
- //# sourceMappingURL=chunk-LP4UATP6.js.map
110
+ //# sourceMappingURL=chunk-TWLDBKQU.js.map
@@ -1,12 +1,12 @@
1
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]="87c74fe9-9c49-5520-9658-60d42438cff2")}catch(e){}}();
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]="584aa37d-a8a7-5b1c-83cc-06948ba76568")}catch(e){}}();
3
3
  import {
4
4
  dedupeLinkedArtifacts,
5
5
  normalizeLinkedPath,
6
6
  renameArtifactsResultKey,
7
7
  runLinkedArtifacts,
8
8
  sortLinkedArtifacts
9
- } from "./chunk-FCVVMAEX.js";
9
+ } from "./chunk-P6MYFH6K.js";
10
10
  import {
11
11
  resolveAuthor
12
12
  } from "./chunk-CUFW7ITY.js";
@@ -16,7 +16,7 @@ import {
16
16
  mutateItem,
17
17
  readLocatedItem,
18
18
  readSettings
19
- } from "./chunk-TNGLCRKS.js";
19
+ } from "./chunk-GSEADLRH.js";
20
20
  import {
21
21
  EXIT_CODE,
22
22
  PmCliError,
@@ -24,12 +24,14 @@ import {
24
24
  isPathWithinDirectory,
25
25
  pathExists,
26
26
  resolveItemTypeRegistry,
27
- resolvePmRoot
28
- } from "./chunk-TGG7YGMC.js";
27
+ resolvePmRoot,
28
+ resolveWorkspaceRoot
29
+ } from "./chunk-GXXC7QSK.js";
29
30
 
30
- // dist/cli/commands/files.js
31
+ // dist/sdk/files.js
31
32
  import fs from "node:fs/promises";
32
33
  import path from "node:path";
34
+ var RELATIVE_REFERENCE_SCAN_MAX_CHARS = 32768;
33
35
  function normalizeCandidatePathForOutput(value) {
34
36
  return normalizeLinkedPath(path.normalize(value));
35
37
  }
@@ -83,10 +85,14 @@ function extractRawPathReferences(references) {
83
85
  const relativePattern = /(?:\.{1,2}[\\/])?(?:(?:[A-Za-z0-9_.@-]+[\\/])+[A-Za-z0-9_.@-]+|[A-Za-z0-9_.@-]+\.[A-Za-z0-9][A-Za-z0-9._-]*)/gu;
84
86
  for (const reference of references) {
85
87
  const seenInField = /* @__PURE__ */ new Set();
86
- for (const pattern of [absolutePattern, relativePattern]) {
88
+ const boundedRelativeValue = reference.value.slice(0, RELATIVE_REFERENCE_SCAN_MAX_CHARS);
89
+ for (const [pattern, input] of [
90
+ [absolutePattern, reference.value],
91
+ [relativePattern, boundedRelativeValue]
92
+ ]) {
87
93
  pattern.lastIndex = 0;
88
- for (const match of reference.value.matchAll(pattern)) {
89
- const token = cleanupPathToken(match[0] ?? "");
94
+ for (const match of input.matchAll(pattern)) {
95
+ const token = cleanupPathToken(match[0]);
90
96
  if (!token || seenInField.has(token)) {
91
97
  continue;
92
98
  }
@@ -97,8 +103,8 @@ function extractRawPathReferences(references) {
97
103
  }
98
104
  return rawReferences;
99
105
  }
100
- async function resolveDiscoveredFile(rawPath, projectRoot) {
101
- const absolutePath = path.isAbsolute(rawPath) ? path.resolve(rawPath) : path.resolve(projectRoot, rawPath);
106
+ async function resolveDiscoveredFile(rawPath, workspaceRoot, invocationRoot = workspaceRoot) {
107
+ const absolutePath = path.isAbsolute(rawPath) ? path.resolve(rawPath) : path.resolve(invocationRoot, rawPath);
102
108
  let stats;
103
109
  try {
104
110
  stats = await fs.stat(absolutePath);
@@ -109,7 +115,7 @@ async function resolveDiscoveredFile(rawPath, projectRoot) {
109
115
  return void 0;
110
116
  }
111
117
  const [canonicalProjectRoot, canonicalAbsolutePath] = await Promise.all([
112
- realpathForContainment(projectRoot),
118
+ realpathForContainment(workspaceRoot),
113
119
  realpathForContainment(absolutePath)
114
120
  ]);
115
121
  if (isPathWithinDirectory(canonicalProjectRoot, canonicalAbsolutePath)) {
@@ -127,16 +133,23 @@ async function resolveDiscoveredFile(rawPath, projectRoot) {
127
133
  scope: "global"
128
134
  };
129
135
  }
130
- async function discoverReferencedFiles(document, projectRoot) {
131
- const existingResolvedKeys = new Set((document.metadata.files ?? []).map((entry) => linkedFileResolvedKey(entry, projectRoot)));
136
+ async function discoverReferencedFiles(document, workspaceRoot, invocationRoot = workspaceRoot) {
137
+ const existingResolvedKeys = new Set((document.metadata.files ?? []).map((entry) => linkedFileResolvedKey(entry, workspaceRoot)));
132
138
  const grouped = /* @__PURE__ */ new Map();
133
139
  const rawReferences = extractRawPathReferences(collectItemTextReferences(document));
134
- for (const reference of rawReferences) {
135
- const resolved = await resolveDiscoveredFile(reference.value, projectRoot);
140
+ const resolvedByValue = /* @__PURE__ */ new Map();
141
+ await Promise.all([...new Set(rawReferences.map((reference) => reference.value))].map(async (value) => {
142
+ resolvedByValue.set(value, await resolveDiscoveredFile(value, workspaceRoot, invocationRoot));
143
+ }));
144
+ const resolvedReferences = rawReferences.map((reference) => ({
145
+ reference,
146
+ resolved: resolvedByValue.get(reference.value)
147
+ }));
148
+ for (const { reference, resolved } of resolvedReferences) {
136
149
  if (!resolved) {
137
150
  continue;
138
151
  }
139
- const key = linkedFileResolvedKey(resolved, projectRoot);
152
+ const key = linkedFileResolvedKey(resolved, workspaceRoot);
140
153
  const existing = grouped.get(key) ?? {
141
154
  path: resolved.path,
142
155
  scope: resolved.scope,
@@ -167,6 +180,7 @@ async function discoverReferencedFiles(document, projectRoot) {
167
180
  });
168
181
  }
169
182
  var _testOnly = {
183
+ relativeReferenceScanMaxChars: RELATIVE_REFERENCE_SCAN_MAX_CHARS,
170
184
  normalizeCandidatePathForOutput,
171
185
  realpathForContainment,
172
186
  linkedFileResolvedKey,
@@ -188,6 +202,7 @@ async function runFiles(id, options, global) {
188
202
  }
189
203
  async function runFilesDiscover(id, options, global) {
190
204
  const pmRoot = resolvePmRoot(process.cwd(), global.path);
205
+ const workspaceRoot = resolveWorkspaceRoot(pmRoot);
191
206
  if (!await pathExists(getSettingsPath(pmRoot))) {
192
207
  throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
193
208
  }
@@ -198,7 +213,7 @@ async function runFilesDiscover(id, options, global) {
198
213
  throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);
199
214
  }
200
215
  const loaded = await readLocatedItem(located, { schema: settings.schema });
201
- const candidates = await discoverReferencedFiles(loaded.document, process.cwd());
216
+ const candidates = await discoverReferencedFiles(loaded.document, workspaceRoot, process.cwd());
202
217
  const addableCandidates = candidates.filter((candidate) => candidate.status === "addable");
203
218
  const skippedExisting = candidates.filter((candidate) => candidate.status === "already_linked");
204
219
  const requestedApply = options.apply === true;
@@ -226,6 +241,8 @@ async function runFilesDiscover(id, options, global) {
226
241
  scope: candidate.scope,
227
242
  note
228
243
  }));
244
+ let appliedAdds = [];
245
+ const appliedCandidateIndices = /* @__PURE__ */ new Set();
229
246
  const result = await mutateItem({
230
247
  pmRoot,
231
248
  settings,
@@ -236,16 +253,18 @@ async function runFilesDiscover(id, options, global) {
236
253
  force: options.force,
237
254
  mutate(document) {
238
255
  const next = [...document.metadata.files ?? []];
239
- const existingResolvedKeys = new Set(next.map((entry) => linkedFileResolvedKey(entry, process.cwd())));
240
- const appliedAdds = [];
241
- for (const add of discoveredAdds) {
242
- const resolvedKey = linkedFileResolvedKey(add, process.cwd());
256
+ const existingResolvedKeys = new Set(next.map((entry) => linkedFileResolvedKey(entry, workspaceRoot)));
257
+ appliedAdds = [];
258
+ appliedCandidateIndices.clear();
259
+ for (const [index, add] of discoveredAdds.entries()) {
260
+ const resolvedKey = linkedFileResolvedKey(add, workspaceRoot);
243
261
  if (existingResolvedKeys.has(resolvedKey)) {
244
262
  continue;
245
263
  }
246
264
  next.push(add);
247
265
  existingResolvedKeys.add(resolvedKey);
248
266
  appliedAdds.push(add);
267
+ appliedCandidateIndices.add(index);
249
268
  }
250
269
  const deduped = dedupeLinkedArtifacts(next);
251
270
  const normalized = options.appendStable ? deduped : sortLinkedArtifacts(deduped);
@@ -265,8 +284,10 @@ async function runFilesDiscover(id, options, global) {
265
284
  }
266
285
  });
267
286
  const files = result.item.files ?? [];
268
- const addedResolvedKeys = new Set(discoveredAdds.map((entry) => linkedFileResolvedKey(entry, process.cwd())));
269
- const added = files.filter((entry) => addedResolvedKeys.has(linkedFileResolvedKey(entry, process.cwd())));
287
+ const addedResolvedKeys = new Set(appliedAdds.map((entry) => linkedFileResolvedKey(entry, workspaceRoot)));
288
+ const added = files.filter((entry) => addedResolvedKeys.has(linkedFileResolvedKey(entry, workspaceRoot)));
289
+ const skippedDuringApply = addableCandidates.filter((_candidate, index) => !appliedCandidateIndices.has(index));
290
+ const allSkippedExisting = [...skippedExisting, ...skippedDuringApply];
270
291
  return {
271
292
  id: result.item.id,
272
293
  files,
@@ -276,10 +297,10 @@ async function runFilesDiscover(id, options, global) {
276
297
  candidate_count: candidates.length,
277
298
  addable_count: addableCandidates.length,
278
299
  added_count: added.length,
279
- skipped_existing_count: skippedExisting.length,
300
+ skipped_existing_count: allSkippedExisting.length,
280
301
  candidates,
281
302
  added,
282
- skipped_existing: skippedExisting
303
+ skipped_existing: allSkippedExisting
283
304
  };
284
305
  }
285
306
 
@@ -288,6 +309,6 @@ export {
288
309
  runFiles,
289
310
  runFilesDiscover
290
311
  };
291
- //# sourceMappingURL=chunk-OTZ3C2NE.js.map
312
+ //# sourceMappingURL=chunk-TZ2PSLLT.js.map
292
313
 
293
- //# debugId=87c74fe9-9c49-5520-9658-60d42438cff2
314
+ //# debugId=584aa37d-a8a7-5b1c-83cc-06948ba76568
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../sdk/files.ts"],"sourcesContent":["/**\n * @module sdk/files\n *\n * Implements the pm files command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists } from \"../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../core/item/type-registry.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../core/shared/command-types.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport {\n locateItem,\n mutateItem,\n readLocatedItem,\n} from \"../core/store/item-store.js\";\nimport {\n getSettingsPath,\n resolvePmRoot,\n resolveWorkspaceRoot,\n} from \"../core/store/paths.js\";\nimport { readSettings } from \"../core/store/settings.js\";\nimport { resolveAuthor } from \"../core/shared/author.js\";\nimport { isPathWithinDirectory } from \"../core/fs/path-utils.js\";\nimport type { ItemDocument, LinkedFile, LinkScope } from \"../types/index.js\";\nimport {\n dedupeLinkedArtifacts,\n normalizeLinkedPath,\n renameArtifactsResultKey,\n runLinkedArtifacts,\n sortLinkedArtifacts,\n type LinkedArtifactResult,\n type LinkedPathValidation,\n} from \"./linked-artifacts.js\";\n\n/** Documents the files command options payload exchanged by command, SDK, and package integrations. */\nexport interface FilesCommandOptions {\n /** Value that configures or reports add for this contract. */\n add?: string[];\n /** Value that configures or reports add glob for this contract. */\n addGlob?: string[];\n /** Value that configures or reports remove for this contract. */\n remove?: string[];\n /** Value that configures or reports migrate for this contract. */\n migrate?: string[];\n /** GH-170 (pm-pfnx): standalone note applied to every --add/--add-glob link in this invocation. */\n note?: string;\n /** Value that configures or reports list for this contract. */\n list?: boolean;\n /** Value that configures or reports append stable for this contract. */\n appendStable?: boolean;\n /** Value that configures or reports validate paths for this contract. */\n validatePaths?: boolean;\n /** Value that configures or reports author for this contract. */\n author?: string;\n /** Human-readable explanation suitable for logs and agent-facing output. */\n message?: string;\n /** Value that configures or reports force for this contract. */\n force?: boolean;\n}\n\n/** Documents the files discover options payload exchanged by command, SDK, and package integrations. */\nexport interface FilesDiscoverOptions {\n /** Value that configures or reports apply for this contract. */\n apply?: boolean;\n /** Value that configures or reports append stable for this contract. */\n appendStable?: boolean;\n /** Value that configures or reports note for this contract. */\n note?: string;\n /** Value that configures or reports author for this contract. */\n author?: string;\n /** Human-readable explanation suitable for logs and agent-facing output. */\n message?: string;\n /** Value that configures or reports force for this contract. */\n force?: boolean;\n}\n\n/** Documents the files discovery candidate payload exchanged by command, SDK, and package integrations. */\nexport interface FilesDiscoveryCandidate {\n /** Filesystem path used for path resolution. */\n path: string;\n /** Value that configures or reports scope for this contract. */\n scope: LinkScope;\n /** Lifecycle state reported for status. */\n status: \"addable\" | \"already_linked\";\n /** Number of source entries represented by this result. */\n source_count: number;\n /** Value that configures or reports source fields for this contract. */\n source_fields: string[];\n /** Value that configures or reports original paths for this contract. */\n original_paths: string[];\n}\n\n/** Documents the files result payload exchanged by command, SDK, and package integrations. */\nexport interface FilesResult {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports files for this contract. */\n files: LinkedFile[];\n /** Value that configures or reports changed for this contract. */\n changed: boolean;\n /** Value that configures or reports count for this contract. */\n count: number;\n /** Value that configures or reports migrations applied for this contract. */\n migrations_applied?: number;\n /** Value that configures or reports validation for this contract. */\n validation?: LinkedPathValidation;\n}\n\n/** Documents the files discover result payload exchanged by command, SDK, and package integrations. */\nexport interface FilesDiscoverResult {\n /** Stable identifier used to reference this record across commands and storage. */\n id: string;\n /** Value that configures or reports files for this contract. */\n files: LinkedFile[];\n /** Value that configures or reports changed for this contract. */\n changed: boolean;\n /** Value that configures or reports apply for this contract. */\n apply: boolean;\n /** Value that configures or reports count for this contract. */\n count: number;\n /** Number of candidate entries represented by this result. */\n candidate_count: number;\n /** Number of addable entries represented by this result. */\n addable_count: number;\n /** Number of added entries represented by this result. */\n added_count: number;\n /** Number of skipped existing entries represented by this result. */\n skipped_existing_count: number;\n /** Value that configures or reports candidates for this contract. */\n candidates: FilesDiscoveryCandidate[];\n /** Value that configures or reports added for this contract. */\n added: LinkedFile[];\n /** Value that configures or reports skipped existing for this contract. */\n skipped_existing: FilesDiscoveryCandidate[];\n}\n\ninterface TextReference {\n field: string;\n value: string;\n}\n\ninterface RawPathReference {\n field: string;\n value: string;\n}\n\n/** Bounds fuzzy relative-path scanning while preserving full absolute-path discovery. */\nconst RELATIVE_REFERENCE_SCAN_MAX_CHARS = 32_768;\n\nfunction normalizeCandidatePathForOutput(value: string): string {\n return normalizeLinkedPath(path.normalize(value));\n}\n\nasync function realpathForContainment(inputPath: string): Promise<string> {\n try {\n return await fs.realpath(inputPath);\n } catch {\n return path.resolve(inputPath);\n }\n}\n\nfunction linkedFileResolvedKey(\n linkedFile: Pick<LinkedFile, \"path\" | \"scope\">,\n projectRoot: string,\n): string {\n const resolvedPath = path.isAbsolute(linkedFile.path)\n ? path.resolve(linkedFile.path)\n : path.resolve(projectRoot, linkedFile.path);\n return `${normalizeCandidatePathForOutput(resolvedPath)}::${linkedFile.scope}`;\n}\n\nfunction collectTextReferences(\n value: unknown,\n fieldPath: string,\n references: TextReference[],\n): void {\n if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (trimmed.length > 0) {\n references.push({ field: fieldPath, value: trimmed });\n }\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((entry, index) =>\n collectTextReferences(entry, `${fieldPath}[${index}]`, references),\n );\n return;\n }\n if (typeof value === \"object\" && value !== null) {\n for (const [key, nested] of Object.entries(value)) {\n /* c8 ignore next -- root-level object traversal always carries a non-empty field path in current callers. */\n collectTextReferences(\n nested,\n fieldPath ? `${fieldPath}.${key}` : key,\n references,\n );\n }\n }\n}\n\nfunction collectItemTextReferences(document: ItemDocument): TextReference[] {\n const references: TextReference[] = [];\n collectTextReferences(document.metadata, \"metadata\", references);\n collectTextReferences(document.body, \"body\", references);\n return references;\n}\n\nfunction cleanupPathToken(value: string): string {\n let next = value.trim();\n next = next.replace(/^[`\"'<([{]+/u, \"\");\n next = next.replace(/[`\"'>)\\]},;!?]+$/u, \"\");\n next = next.replace(/[.]+$/u, \"\");\n next = next.replace(/:(?:\\d+)(?::\\d+)?$/u, \"\");\n next = next.replace(/[.]+$/u, \"\");\n return next;\n}\n\nfunction extractRawPathReferences(\n references: TextReference[],\n): RawPathReference[] {\n const rawReferences: RawPathReference[] = [];\n const absolutePattern = /(?:[A-Za-z]:[\\\\/]|\\/)[^\\s\"'`<>()[\\]{},;]+/gu;\n const relativePattern =\n /(?:\\.{1,2}[\\\\/])?(?:(?:[A-Za-z0-9_.@-]+[\\\\/])+[A-Za-z0-9_.@-]+|[A-Za-z0-9_.@-]+\\.[A-Za-z0-9][A-Za-z0-9._-]*)/gu;\n for (const reference of references) {\n const seenInField = new Set<string>();\n const boundedRelativeValue = reference.value.slice(\n 0,\n RELATIVE_REFERENCE_SCAN_MAX_CHARS,\n );\n for (const [pattern, input] of [\n [absolutePattern, reference.value],\n [relativePattern, boundedRelativeValue],\n ] as const) {\n pattern.lastIndex = 0;\n for (const match of input.matchAll(pattern)) {\n const token = cleanupPathToken(match[0]);\n if (!token || seenInField.has(token)) {\n continue;\n }\n seenInField.add(token);\n rawReferences.push({ field: reference.field, value: token });\n }\n }\n }\n return rawReferences;\n}\n\nasync function resolveDiscoveredFile(\n rawPath: string,\n workspaceRoot: string,\n invocationRoot: string = workspaceRoot,\n): Promise<Pick<LinkedFile, \"path\" | \"scope\"> | undefined> {\n const absolutePath = path.isAbsolute(rawPath)\n ? path.resolve(rawPath)\n : path.resolve(invocationRoot, rawPath);\n let stats;\n try {\n stats = await fs.stat(absolutePath);\n } catch {\n return undefined;\n }\n if (!stats.isFile()) {\n return undefined;\n }\n const [canonicalProjectRoot, canonicalAbsolutePath] = await Promise.all([\n realpathForContainment(workspaceRoot),\n realpathForContainment(absolutePath),\n ]);\n if (isPathWithinDirectory(canonicalProjectRoot, canonicalAbsolutePath)) {\n const relativePath = path.relative(\n canonicalProjectRoot,\n canonicalAbsolutePath,\n );\n if (\n !relativePath ||\n relativePath.startsWith(\"..\") ||\n path.isAbsolute(relativePath)\n ) {\n return undefined;\n }\n return {\n path: normalizeCandidatePathForOutput(relativePath),\n scope: \"project\",\n };\n }\n return {\n path: normalizeCandidatePathForOutput(absolutePath),\n scope: \"global\",\n };\n}\n\nasync function discoverReferencedFiles(\n document: ItemDocument,\n workspaceRoot: string,\n invocationRoot: string = workspaceRoot,\n): Promise<FilesDiscoveryCandidate[]> {\n const existingResolvedKeys = new Set(\n (document.metadata.files ?? []).map((entry) =>\n linkedFileResolvedKey(entry, workspaceRoot),\n ),\n );\n const grouped = new Map<\n string,\n {\n path: string;\n scope: LinkScope;\n sourceFields: Set<string>;\n originalPaths: Set<string>;\n sourceCount: number;\n }\n >();\n const rawReferences = extractRawPathReferences(\n collectItemTextReferences(document),\n );\n const resolvedByValue = new Map<\n string,\n Pick<LinkedFile, \"path\" | \"scope\"> | undefined\n >();\n await Promise.all(\n [...new Set(rawReferences.map((reference) => reference.value))].map(\n async (value) => {\n resolvedByValue.set(\n value,\n await resolveDiscoveredFile(value, workspaceRoot, invocationRoot),\n );\n },\n ),\n );\n const resolvedReferences = rawReferences.map((reference) => ({\n reference,\n resolved: resolvedByValue.get(reference.value),\n }));\n for (const { reference, resolved } of resolvedReferences) {\n if (!resolved) {\n continue;\n }\n const key = linkedFileResolvedKey(resolved, workspaceRoot);\n const existing = grouped.get(key) ?? {\n path: resolved.path,\n scope: resolved.scope,\n sourceFields: new Set<string>(),\n originalPaths: new Set<string>(),\n sourceCount: 0,\n };\n existing.sourceFields.add(reference.field);\n existing.originalPaths.add(reference.value);\n existing.sourceCount += 1;\n grouped.set(key, existing);\n }\n return [...grouped.entries()]\n .map(([key, entry]) => ({\n path: entry.path,\n scope: entry.scope,\n status: existingResolvedKeys.has(key)\n ? (\"already_linked\" as const)\n : (\"addable\" as const),\n source_count: entry.sourceCount,\n source_fields: [...entry.sourceFields].sort((left, right) =>\n left.localeCompare(right),\n ),\n original_paths: [...entry.originalPaths].sort((left, right) =>\n left.localeCompare(right),\n ),\n }))\n .sort((left, right) => {\n const byStatus = left.status.localeCompare(right.status);\n if (byStatus !== 0) return byStatus;\n const byPath = left.path.localeCompare(right.path);\n if (byPath !== 0) return byPath;\n /* c8 ignore next -- path+status collisions are uncommon in deterministic fixtures. */\n return left.scope.localeCompare(right.scope);\n });\n}\n\n/** Public contract for test only, shared by SDK and presentation-layer consumers. */\nexport const _testOnly = {\n relativeReferenceScanMaxChars: RELATIVE_REFERENCE_SCAN_MAX_CHARS,\n normalizeCandidatePathForOutput,\n realpathForContainment,\n linkedFileResolvedKey,\n collectTextReferences,\n collectItemTextReferences,\n cleanupPathToken,\n extractRawPathReferences,\n resolveDiscoveredFile,\n discoverReferencedFiles,\n};\n\n/** Implements run files for the public runtime surface of this module. */\nexport async function runFiles(\n id: string,\n options: FilesCommandOptions,\n global: GlobalOptions,\n): Promise<FilesResult> {\n const result: LinkedArtifactResult = await runLinkedArtifacts(\n id,\n options,\n global,\n {\n metadataKey: \"files\",\n op: \"files_add\",\n bareNoun: \"file\",\n supportsAppendStable: true,\n },\n );\n return renameArtifactsResultKey(result, \"files\");\n}\n\n/** Implements run files discover for the public runtime surface of this module. */\nexport async function runFilesDiscover(\n id: string,\n options: FilesDiscoverOptions,\n global: GlobalOptions,\n): Promise<FilesDiscoverResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const workspaceRoot = resolveWorkspaceRoot(pmRoot);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(\n settings,\n getActiveExtensionRegistrations(),\n );\n const located = await locateItem(\n pmRoot,\n id,\n settings.id_prefix,\n settings.item_format,\n typeRegistry.type_to_folder,\n );\n /* c8 ignore next -- not-found behavior is validated by CLI integration coverage. */\n if (!located) {\n throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);\n }\n const loaded = await readLocatedItem(located, { schema: settings.schema });\n const candidates = await discoverReferencedFiles(\n loaded.document,\n workspaceRoot,\n process.cwd(),\n );\n const addableCandidates = candidates.filter(\n (candidate) => candidate.status === \"addable\",\n );\n const skippedExisting = candidates.filter(\n (candidate) => candidate.status === \"already_linked\",\n );\n const requestedApply = options.apply === true;\n const note = options.note?.trim() || \"discovered from item text\";\n\n if (!requestedApply || addableCandidates.length === 0) {\n const files = loaded.document.metadata.files ?? [];\n return {\n id: located.id,\n files,\n changed: false,\n apply: requestedApply,\n count: files.length,\n candidate_count: candidates.length,\n addable_count: addableCandidates.length,\n added_count: 0,\n skipped_existing_count: skippedExisting.length,\n candidates,\n added: [],\n skipped_existing: skippedExisting,\n };\n }\n\n const author = resolveAuthor(options.author, settings.author_default);\n const discoveredAdds: LinkedFile[] = addableCandidates.map((candidate) => ({\n path: candidate.path,\n scope: candidate.scope,\n note,\n }));\n let appliedAdds: LinkedFile[] = [];\n const appliedCandidateIndices = new Set<number>();\n const result = await mutateItem({\n pmRoot,\n settings,\n id,\n op: \"files_discover\",\n author,\n message: options.message ?? \"Discover referenced file links\",\n force: options.force,\n mutate(document) {\n const next = [...(document.metadata.files ?? [])];\n const existingResolvedKeys = new Set(\n next.map((entry) => linkedFileResolvedKey(entry, workspaceRoot)),\n );\n appliedAdds = [];\n appliedCandidateIndices.clear();\n for (const [index, add] of discoveredAdds.entries()) {\n const resolvedKey = linkedFileResolvedKey(add, workspaceRoot);\n /* c8 ignore next -- duplicate-key race paths are exercised in broader CLI race tests. */\n if (existingResolvedKeys.has(resolvedKey)) {\n continue;\n }\n next.push(add);\n existingResolvedKeys.add(resolvedKey);\n appliedAdds.push(add);\n appliedCandidateIndices.add(index);\n }\n const deduped = dedupeLinkedArtifacts(next);\n /* c8 ignore next -- appendStable branch is covered through runFiles command contract tests. */\n const normalized = options.appendStable\n ? deduped\n : sortLinkedArtifacts(deduped);\n if (normalized.length > 0) {\n document.metadata.files = normalized;\n } else {\n delete document.metadata.files;\n }\n return {\n /* c8 ignore next -- no-op mutation responses may emit empty changedFields for skipped discover batches. */\n changedFields: appliedAdds.length > 0 ? [\"files\"] : [],\n /* c8 ignore next -- warning emission is exercised by race-aware integration tests. */\n warnings:\n appliedAdds.length !== discoveredAdds.length\n ? [\n `files_discover_skipped_existing:${discoveredAdds.length - appliedAdds.length}`,\n ]\n : [],\n };\n },\n });\n\n const files = result.item.files ?? [];\n const addedResolvedKeys = new Set(\n appliedAdds.map((entry) => linkedFileResolvedKey(entry, workspaceRoot)),\n );\n const added = files.filter((entry) =>\n addedResolvedKeys.has(linkedFileResolvedKey(entry, workspaceRoot)),\n );\n const skippedDuringApply = addableCandidates.filter(\n (_candidate, index) => !appliedCandidateIndices.has(index),\n );\n const allSkippedExisting = [...skippedExisting, ...skippedDuringApply];\n return {\n id: result.item.id,\n files,\n changed: added.length > 0,\n apply: true,\n count: files.length,\n candidate_count: candidates.length,\n addable_count: addableCandidates.length,\n added_count: added.length,\n skipped_existing_count: allSkippedExisting.length,\n candidates,\n added,\n skipped_existing: allSkippedExisting,\n };\n}\n"],"names":["files"],"mappings":"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","debugId":"584aa37d-a8a7-5b1c-83cc-06948ba76568"}
@@ -2,7 +2,7 @@
2
2
  !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="995076bc-3f7f-5d6c-ba7e-30c43a08674c")}catch(e){}}();
3
3
  import {
4
4
  collectBlockedByIds
5
- } from "./chunk-KR5EHAN4.js";
5
+ } from "./chunk-X3GYR4P2.js";
6
6
  import {
7
7
  buildItemNotFoundError,
8
8
  isTerminalStatus,
@@ -12,7 +12,7 @@ import {
12
12
  readLocatedItem,
13
13
  readSettings,
14
14
  toItemRecord
15
- } from "./chunk-TNGLCRKS.js";
15
+ } from "./chunk-GSEADLRH.js";
16
16
  import {
17
17
  EXIT_CODE,
18
18
  PmCliError,
@@ -21,7 +21,7 @@ import {
21
21
  resolveItemTypeRegistry,
22
22
  resolvePmRoot,
23
23
  resolveRuntimeStatusRegistry
24
- } from "./chunk-TGG7YGMC.js";
24
+ } from "./chunk-GXXC7QSK.js";
25
25
 
26
26
  // dist/cli/commands/close.js
27
27
  function toAuthor(candidate, defaultAuthor) {
@@ -458,6 +458,6 @@ export {
458
458
  _testOnlyCloseCommand,
459
459
  runClose
460
460
  };
461
- //# sourceMappingURL=chunk-UK222BHQ.js.map
461
+ //# sourceMappingURL=chunk-TZRTLMWM.js.map
462
462
 
463
463
  //# debugId=995076bc-3f7f-5d6c-ba7e-30c43a08674c
@@ -7,7 +7,7 @@ import {
7
7
  lintProjectProfile,
8
8
  resolveProfileCatalog,
9
9
  resolveProfileEntry
10
- } from "./chunk-CJVQ4XIG.js";
10
+ } from "./chunk-HAMLIWAF.js";
11
11
  import {
12
12
  parseNestedSettingValue,
13
13
  readNestedSettingValue,
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-DJAGYYCQ.js";
17
17
  import {
18
18
  ensureTypeFolderScaffold
19
- } from "./chunk-S6CXUSYC.js";
19
+ } from "./chunk-UGTVWL3E.js";
20
20
  import {
21
21
  normalizeAddFieldInput,
22
22
  normalizeAddStatusInput,
@@ -26,16 +26,16 @@ import {
26
26
  serializeStatusDefsFile,
27
27
  upsertField,
28
28
  upsertStatusDef
29
- } from "./chunk-AHA4POA6.js";
29
+ } from "./chunk-ABRCOSDC.js";
30
30
  import {
31
31
  CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS
32
- } from "./chunk-GQ2CQNGI.js";
32
+ } from "./chunk-N3CMP4NI.js";
33
33
  import {
34
34
  normalizeAddTypeInput,
35
35
  parseItemTypesFile,
36
36
  serializeItemTypesFile,
37
37
  upsertItemType
38
- } from "./chunk-3P3RFJIQ.js";
38
+ } from "./chunk-3TL7WOEF.js";
39
39
  import {
40
40
  acquireLock,
41
41
  getActiveExtensionRegistrations,
@@ -44,7 +44,7 @@ import {
44
44
  resolveGovernanceKnobs,
45
45
  runActiveOnWriteHooks,
46
46
  writeSettings
47
- } from "./chunk-TNGLCRKS.js";
47
+ } from "./chunk-GSEADLRH.js";
48
48
  import {
49
49
  DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,
50
50
  EXIT_CODE,
@@ -56,7 +56,7 @@ import {
56
56
  readFileIfExists,
57
57
  resolvePmRoot,
58
58
  writeFileAtomic
59
- } from "./chunk-TGG7YGMC.js";
59
+ } from "./chunk-GXXC7QSK.js";
60
60
 
61
61
  // dist/cli/commands/profile.js
62
62
  import path2 from "node:path";
@@ -832,6 +832,6 @@ export {
832
832
  formatProfileLintHuman,
833
833
  formatProfileApplyHuman
834
834
  };
835
- //# sourceMappingURL=chunk-6E6S2X6S.js.map
835
+ //# sourceMappingURL=chunk-UB2QYSTO.js.map
836
836
 
837
837
  //# debugId=a881d2f4-ed91-55ba-b881-706e0f472cd0
@@ -18,7 +18,7 @@ import {
18
18
  serializeStatusDefsFile,
19
19
  upsertField,
20
20
  upsertStatusDef
21
- } from "./chunk-AHA4POA6.js";
21
+ } from "./chunk-ABRCOSDC.js";
22
22
  import {
23
23
  assertAliasesAvailable,
24
24
  assertTypeFolderAvailable,
@@ -29,7 +29,7 @@ import {
29
29
  removeItemType,
30
30
  serializeItemTypesFile,
31
31
  upsertItemType
32
- } from "./chunk-3P3RFJIQ.js";
32
+ } from "./chunk-3TL7WOEF.js";
33
33
  import {
34
34
  acquireLock,
35
35
  getActiveExtensionRegistrations,
@@ -38,7 +38,7 @@ import {
38
38
  readSettings,
39
39
  resolveGovernanceKnobs,
40
40
  runActiveOnWriteHooks
41
- } from "./chunk-TNGLCRKS.js";
41
+ } from "./chunk-GSEADLRH.js";
42
42
  import {
43
43
  DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,
44
44
  EXIT_CODE,
@@ -54,7 +54,7 @@ import {
54
54
  resolveRuntimeStatusRegistry,
55
55
  toDefaultFolder,
56
56
  writeFileAtomic
57
- } from "./chunk-TGG7YGMC.js";
57
+ } from "./chunk-GXXC7QSK.js";
58
58
 
59
59
  // dist/cli/commands/schema.js
60
60
  import path from "node:path";
@@ -1234,6 +1234,6 @@ export {
1234
1234
  formatSchemaInferTypesHuman,
1235
1235
  _testOnlySchemaCommand
1236
1236
  };
1237
- //# sourceMappingURL=chunk-S6CXUSYC.js.map
1237
+ //# sourceMappingURL=chunk-UGTVWL3E.js.map
1238
1238
 
1239
1239
  //# debugId=46e1dd18-6b92-508e-98ca-4914b8c2edc5
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  isTerminalStatus,
3
3
  normalizeStatusForRegistry
4
- } from "./chunk-QXYKH56X.js";
4
+ } from "./chunk-T4BRCB6Z.js";
5
5
 
6
6
  // dist/core/item/actionability.js
7
7
  !(function() {
@@ -129,4 +129,4 @@ export {
129
129
  collectBlockedByIds,
130
130
  computeActionabilityReport
131
131
  };
132
- //# sourceMappingURL=chunk-BNS6QHTZ.js.map
132
+ //# sourceMappingURL=chunk-UJ4HJYWL.js.map
@@ -9,15 +9,15 @@ import {
9
9
  TYPE_PRESET_DEFINITIONS,
10
10
  normalizeAddFieldInput,
11
11
  normalizeAddStatusInput
12
- } from "./chunk-2QNOWOIB.js";
12
+ } from "./chunk-DO5RGJXT.js";
13
13
  import {
14
14
  normalizeAddTypeInput
15
- } from "./chunk-KQJVTQVK.js";
15
+ } from "./chunk-ANSJHDOZ.js";
16
16
  import {
17
17
  BUILTIN_ITEM_TYPE_VALUES,
18
18
  DEFAULT_RUNTIME_STATUS_DEFINITIONS,
19
19
  toErrorMessage
20
- } from "./chunk-XY3CC3EM.js";
20
+ } from "./chunk-AFWZRL7M.js";
21
21
 
22
22
  // dist/core/profile/profile-presets.js
23
23
  !(function() {
@@ -680,4 +680,4 @@ export {
680
680
  PROFILE_LINT_CODES,
681
681
  lintProjectProfile
682
682
  };
683
- //# sourceMappingURL=chunk-BYVOEJPQ.js.map
683
+ //# sourceMappingURL=chunk-UKUIIBDW.js.map
@@ -4,7 +4,7 @@ import {
4
4
  parseAnnotationTextInput,
5
5
  resolveAnnotationInput,
6
6
  runAnnotationCommand
7
- } from "./chunk-BVCF4ULV.js";
7
+ } from "./chunk-4RXTMU57.js";
8
8
 
9
9
  // dist/cli/commands/learnings.js
10
10
  async function runLearnings(id, options, global) {
@@ -30,6 +30,6 @@ async function runLearnings(id, options, global) {
30
30
  export {
31
31
  runLearnings
32
32
  };
33
- //# sourceMappingURL=chunk-SGDBVR7X.js.map
33
+ //# sourceMappingURL=chunk-UVBA6F5A.js.map
34
34
 
35
35
  //# debugId=1bec9be5-4967-5914-933d-cf3ebd310ca5
@@ -3,11 +3,11 @@ import {
3
3
  } from "./chunk-YRYYFGV3.js";
4
4
  import {
5
5
  parseLimit
6
- } from "./chunk-OWW2KXOV.js";
6
+ } from "./chunk-YQYG2V23.js";
7
7
  import {
8
8
  createStdinTokenResolver,
9
9
  parseCsvKv
10
- } from "./chunk-HR2MQAO5.js";
10
+ } from "./chunk-WD6MSYMP.js";
11
11
  import {
12
12
  getActiveExtensionRegistrations,
13
13
  locateItem,
@@ -15,7 +15,7 @@ import {
15
15
  nowIso,
16
16
  readLocatedItem,
17
17
  readSettings
18
- } from "./chunk-QXYKH56X.js";
18
+ } from "./chunk-T4BRCB6Z.js";
19
19
  import {
20
20
  EXIT_CODE,
21
21
  PmCliError,
@@ -23,7 +23,7 @@ import {
23
23
  pathExists,
24
24
  resolveItemTypeRegistry,
25
25
  resolvePmRoot
26
- } from "./chunk-XY3CC3EM.js";
26
+ } from "./chunk-AFWZRL7M.js";
27
27
 
28
28
  // dist/sdk/annotations.js
29
29
  import { readFile } from "node:fs/promises";
@@ -313,4 +313,4 @@ export {
313
313
  runAnnotationCommand,
314
314
  resolveAnnotationIndex
315
315
  };
316
- //# sourceMappingURL=chunk-DZRZMBBF.js.map
316
+ //# sourceMappingURL=chunk-VJTAEIPC.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  toNonEmptyStringOrUndefined
3
- } from "./chunk-XY3CC3EM.js";
3
+ } from "./chunk-AFWZRL7M.js";
4
4
 
5
5
  // dist/core/governance/metadata-coverage.js
6
6
  !(function() {
@@ -262,4 +262,4 @@ export {
262
262
  computeMetadataCoverage,
263
263
  groupItemsByDimension
264
264
  };
265
- //# sourceMappingURL=chunk-74PWVJON.js.map
265
+ //# sourceMappingURL=chunk-W6HZ55JO.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  EXIT_CODE,
3
3
  PmCliError
4
- } from "./chunk-XY3CC3EM.js";
4
+ } from "./chunk-AFWZRL7M.js";
5
5
 
6
6
  // dist/core/item/parse.js
7
7
  !(function() {
8
8
  try {
9
9
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
10
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "8763cf00-d6d8-5e91-94d2-f65fb3321909");
10
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "fb39edac-1965-5a52-9c0c-c4330fe3a8c7");
11
11
  } catch (e2) {
12
12
  }
13
13
  })();
@@ -345,6 +345,14 @@ function parseOptionalNumber(raw, optionName) {
345
345
  }
346
346
  return value;
347
347
  }
348
+ function parseOptionalNonNegativeInteger(raw, optionName) {
349
+ const trimmed = raw.trim();
350
+ const value = Number(trimmed);
351
+ if (trimmed === "" || !Number.isInteger(value) || value < 0) {
352
+ throw new PmCliError(`Invalid ${optionName} value "${raw}". Expected a non-negative integer.`, EXIT_CODE.USAGE);
353
+ }
354
+ return value;
355
+ }
348
356
 
349
357
  export {
350
358
  parseTags,
@@ -354,6 +362,7 @@ export {
354
362
  looksLikeGenericKeyValueEntry,
355
363
  assertNoUnknownCsvKeys,
356
364
  createStdinTokenResolver,
357
- parseOptionalNumber
365
+ parseOptionalNumber,
366
+ parseOptionalNonNegativeInteger
358
367
  };
359
- //# sourceMappingURL=chunk-HR2MQAO5.js.map
368
+ //# sourceMappingURL=chunk-WD6MSYMP.js.map