@unbrained/pm-cli 2026.7.5 → 2026.7.7

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 (597) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/cli/commands/annotation-command.d.ts +1 -0
  3. package/dist/cli/commands/annotation-command.js +29 -2
  4. package/dist/cli/commands/annotation-command.js.map +1 -1
  5. package/dist/cli/commands/comments.js +3 -4
  6. package/dist/cli/commands/comments.js.map +1 -1
  7. package/dist/cli/commands/extension/bundled-catalog.d.ts +3 -0
  8. package/dist/cli/commands/extension/bundled-catalog.js +38 -28
  9. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  10. package/dist/cli/commands/extension/install-sources.js +81 -18
  11. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  12. package/dist/cli/commands/health.js +9 -5
  13. package/dist/cli/commands/health.js.map +1 -1
  14. package/dist/cli/commands/learnings.js +5 -3
  15. package/dist/cli/commands/learnings.js.map +1 -1
  16. package/dist/cli/commands/notes.js +5 -3
  17. package/dist/cli/commands/notes.js.map +1 -1
  18. package/dist/cli/commands/reindex.js +4 -3
  19. package/dist/cli/commands/reindex.js.map +1 -1
  20. package/dist/cli/commands/search.js +3 -3
  21. package/dist/cli/commands/search.js.map +1 -1
  22. package/dist/cli/commands/test.d.ts +9 -0
  23. package/dist/cli/commands/test.js +144 -105
  24. package/dist/cli/commands/test.js.map +1 -1
  25. package/dist/cli/extension-command-help.js +10 -2
  26. package/dist/cli/extension-command-help.js.map +1 -1
  27. package/dist/cli/register-list-query.d.ts +1 -1
  28. package/dist/cli/register-list-query.js +18 -27
  29. package/dist/cli/register-list-query.js.map +1 -1
  30. package/dist/cli/register-operations.d.ts +0 -8
  31. package/dist/cli/register-operations.js +41 -46
  32. package/dist/cli/register-operations.js.map +1 -1
  33. package/dist/cli/register-setup.js +113 -13
  34. package/dist/cli/register-setup.js.map +1 -1
  35. package/dist/cli/registration-helpers.d.ts +5 -1
  36. package/dist/cli/registration-helpers.js +14 -2
  37. package/dist/cli/registration-helpers.js.map +1 -1
  38. package/dist/cli-bundle/chunks/append-F7WPGIQL.js +11 -0
  39. package/dist/cli-bundle/chunks/{contracts-OJEXMKVW.js → append-PVCTBVJG.js} +8 -9
  40. package/dist/cli-bundle/chunks/{chunk-PPE4YUQM.js → chunk-2APXX4TZ.js} +17 -28
  41. package/dist/cli-bundle/chunks/chunk-2APXX4TZ.js.map +1 -0
  42. package/dist/cli-bundle/chunks/{docs-S6UTOTO5.js → chunk-2LEJGRQ7.js} +3 -12
  43. package/dist/cli-bundle/chunks/{docs-S6UTOTO5.js.map → chunk-2LEJGRQ7.js.map} +1 -1
  44. package/dist/cli-bundle/chunks/{chunk-T3ABIMGW.js → chunk-2TILG6F2.js} +3 -3
  45. package/dist/cli-bundle/chunks/{chunk-S5AYOUT5.js → chunk-3G6UMXT3.js} +6 -8
  46. package/dist/cli-bundle/chunks/{chunk-S5AYOUT5.js.map → chunk-3G6UMXT3.js.map} +1 -1
  47. package/dist/cli-bundle/chunks/{chunk-RCT3YJOK.js → chunk-3TYOW6RR.js} +8 -8
  48. package/dist/cli-bundle/chunks/{chunk-3JZNEQBA.js → chunk-3X542TEY.js} +7 -7
  49. package/dist/cli-bundle/chunks/{history-repair-EVTO6LIH.js → chunk-42LXP4VO.js} +14 -21
  50. package/dist/cli-bundle/chunks/{history-repair-EVTO6LIH.js.map → chunk-42LXP4VO.js.map} +1 -1
  51. package/dist/cli-bundle/chunks/{chunk-5J2XPTAD.js → chunk-43SIHQND.js} +36 -15
  52. package/dist/cli-bundle/chunks/chunk-43SIHQND.js.map +7 -0
  53. package/dist/cli-bundle/chunks/{history-repair-4N6SDVHK.js → chunk-43UQN754.js} +12 -19
  54. package/dist/cli-bundle/chunks/{history-repair-4N6SDVHK.js.map → chunk-43UQN754.js.map} +1 -1
  55. package/dist/cli-bundle/chunks/{chunk-OWTIRHX4.js → chunk-43YSKY75.js} +4 -6
  56. package/dist/cli-bundle/chunks/{chunk-OWTIRHX4.js.map → chunk-43YSKY75.js.map} +1 -1
  57. package/dist/cli-bundle/chunks/{notes-72YXN5JX.js → chunk-4BKDAEDF.js} +6 -13
  58. package/dist/cli-bundle/chunks/{notes-72YXN5JX.js.map → chunk-4BKDAEDF.js.map} +2 -2
  59. package/dist/cli-bundle/chunks/{close-many-AP4MWU36.js → chunk-4IQKDKGE.js} +18 -32
  60. package/dist/cli-bundle/chunks/{close-many-AP4MWU36.js.map → chunk-4IQKDKGE.js.map} +1 -1
  61. package/dist/cli-bundle/chunks/{chunk-ZCJAA3JK.js → chunk-4MZOKTI2.js} +6 -8
  62. package/dist/cli-bundle/chunks/{chunk-ZCJAA3JK.js.map → chunk-4MZOKTI2.js.map} +1 -1
  63. package/dist/cli-bundle/chunks/{chunk-IJ6CO3JV.js → chunk-52NS7JDP.js} +14 -20
  64. package/dist/cli-bundle/chunks/{chunk-IJ6CO3JV.js.map → chunk-52NS7JDP.js.map} +1 -1
  65. package/dist/cli-bundle/chunks/{chunk-T3F4DF23.js → chunk-565WYS5W.js} +12 -16
  66. package/dist/cli-bundle/chunks/{chunk-T3F4DF23.js.map → chunk-565WYS5W.js.map} +1 -1
  67. package/dist/cli-bundle/chunks/{copy-OTJOWFL6.js → chunk-5FIQ4EX3.js} +13 -19
  68. package/dist/cli-bundle/chunks/{copy-OTJOWFL6.js.map → chunk-5FIQ4EX3.js.map} +1 -1
  69. package/dist/cli-bundle/chunks/{config-V57QD47V.js → chunk-6G6O3OPQ.js} +259 -41
  70. package/dist/cli-bundle/chunks/chunk-6G6O3OPQ.js.map +1 -0
  71. package/dist/cli-bundle/chunks/{chunk-K3AGVXSF.js → chunk-6LCJRGPD.js} +9 -13
  72. package/dist/cli-bundle/chunks/{chunk-K3AGVXSF.js.map → chunk-6LCJRGPD.js.map} +1 -1
  73. package/dist/cli-bundle/chunks/{chunk-7MDXZAZS.js → chunk-6UQCNWFV.js} +6 -8
  74. package/dist/cli-bundle/chunks/{chunk-7MDXZAZS.js.map → chunk-6UQCNWFV.js.map} +1 -1
  75. package/dist/cli-bundle/chunks/{chunk-LEKT4K7I.js → chunk-6XTSYPPO.js} +1216 -387
  76. package/dist/cli-bundle/chunks/chunk-6XTSYPPO.js.map +7 -0
  77. package/dist/cli-bundle/chunks/chunk-7ML7JONU.js +5434 -0
  78. package/dist/cli-bundle/chunks/chunk-7ML7JONU.js.map +1 -0
  79. package/dist/cli-bundle/chunks/{chunk-TSPKZRRW.js → chunk-7PNQA24K.js} +30 -36
  80. package/dist/cli-bundle/chunks/{chunk-TSPKZRRW.js.map → chunk-7PNQA24K.js.map} +1 -1
  81. package/dist/cli-bundle/chunks/{chunk-YOF5VPKM.js → chunk-7VQ3JJN5.js} +2 -2
  82. package/dist/cli-bundle/chunks/{chunk-BFVHCAOO.js → chunk-7Y5N34HX.js} +8 -12
  83. package/dist/cli-bundle/chunks/{chunk-BFVHCAOO.js.map → chunk-7Y5N34HX.js.map} +1 -1
  84. package/dist/cli-bundle/chunks/{chunk-P5TFTLWW.js → chunk-AGAVEDIE.js} +7 -7
  85. package/dist/cli-bundle/chunks/{chunk-YFIE7YK6.js → chunk-AJUON7E6.js} +3 -3
  86. package/dist/cli-bundle/chunks/{close-many-OMZIGZB4.js → chunk-ARKHKYYS.js} +16 -30
  87. package/dist/cli-bundle/chunks/{close-many-OMZIGZB4.js.map → chunk-ARKHKYYS.js.map} +1 -1
  88. package/dist/cli-bundle/chunks/{chunk-7EQNAZX2.js → chunk-C5ACVMOI.js} +99 -51
  89. package/dist/cli-bundle/chunks/chunk-C5ACVMOI.js.map +7 -0
  90. package/dist/cli-bundle/chunks/{chunk-PJ3A56YF.js → chunk-CJQM7O7R.js} +16 -20
  91. package/dist/cli-bundle/chunks/{chunk-PJ3A56YF.js.map → chunk-CJQM7O7R.js.map} +1 -1
  92. package/dist/cli-bundle/chunks/{chunk-WISPVC2E.js → chunk-D2DCTFTL.js} +7 -9
  93. package/dist/cli-bundle/chunks/{chunk-WISPVC2E.js.map → chunk-D2DCTFTL.js.map} +1 -1
  94. package/dist/cli-bundle/chunks/{append-CZGUZ45Q.js → chunk-DDDWVPID.js} +7 -11
  95. package/dist/cli-bundle/chunks/{append-CZGUZ45Q.js.map → chunk-DDDWVPID.js.map} +1 -1
  96. package/dist/cli-bundle/chunks/{learnings-2HTPZNGZ.js → chunk-DG6BSXZ7.js} +6 -13
  97. package/dist/cli-bundle/chunks/{learnings-2HTPZNGZ.js.map → chunk-DG6BSXZ7.js.map} +2 -2
  98. package/dist/cli-bundle/chunks/{chunk-7WYXBPYQ.js → chunk-DR2V5OIV.js} +3 -3
  99. package/dist/cli-bundle/chunks/{chunk-YQMMMONE.js → chunk-E3LWJUGF.js} +4 -6
  100. package/dist/cli-bundle/chunks/{chunk-YQMMMONE.js.map → chunk-E3LWJUGF.js.map} +1 -1
  101. package/dist/cli-bundle/chunks/{chunk-D3UCE7RW.js → chunk-E3YQFSFE.js} +6 -10
  102. package/dist/cli-bundle/chunks/{chunk-D3UCE7RW.js.map → chunk-E3YQFSFE.js.map} +1 -1
  103. package/dist/cli-bundle/chunks/{chunk-PDXT6Q55.js → chunk-EDO7VXSO.js} +2 -2
  104. package/dist/cli-bundle/chunks/{chunk-FDBARR33.js → chunk-EIUBK2LT.js} +12 -18
  105. package/dist/cli-bundle/chunks/{chunk-FDBARR33.js.map → chunk-EIUBK2LT.js.map} +1 -1
  106. package/dist/cli-bundle/chunks/{chunk-HBYZDSK5.js → chunk-EMXPI36L.js} +14 -20
  107. package/dist/cli-bundle/chunks/{chunk-HBYZDSK5.js.map → chunk-EMXPI36L.js.map} +1 -1
  108. package/dist/cli-bundle/chunks/{chunk-4OFLJHX6.js → chunk-EOUVR7JN.js} +13 -8
  109. package/dist/cli-bundle/chunks/chunk-EOUVR7JN.js.map +1 -0
  110. package/dist/cli-bundle/chunks/{chunk-FUM6UMY4.js → chunk-EVEPHNXJ.js} +4 -4
  111. package/dist/cli-bundle/chunks/{deps-L2FPIAD3.js → chunk-F6MT7KKE.js} +6 -10
  112. package/dist/cli-bundle/chunks/{deps-L2FPIAD3.js.map → chunk-F6MT7KKE.js.map} +1 -1
  113. package/dist/cli-bundle/chunks/{chunk-FGQKEDE4.js → chunk-F6YC2A6X.js} +7 -11
  114. package/dist/cli-bundle/chunks/{chunk-FGQKEDE4.js.map → chunk-F6YC2A6X.js.map} +1 -1
  115. package/dist/cli-bundle/chunks/chunk-FILL6BB2.js +5514 -0
  116. package/dist/cli-bundle/chunks/chunk-FILL6BB2.js.map +7 -0
  117. package/dist/cli-bundle/chunks/{chunk-RX3HQSYG.js → chunk-FN6SB4HU.js} +2 -2
  118. package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js +5359 -0
  119. package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-JLA7EVYV.js → chunk-GLS6VMWI.js} +37 -16
  121. package/dist/cli-bundle/chunks/chunk-GLS6VMWI.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{files-JPU3FNJ7.js → chunk-GPIDUMMN.js} +10 -17
  123. package/dist/cli-bundle/chunks/{files-JPU3FNJ7.js.map → chunk-GPIDUMMN.js.map} +1 -1
  124. package/dist/cli-bundle/chunks/{history-compact-3F6VELO7.js → chunk-GTM5HQL4.js} +15 -21
  125. package/dist/cli-bundle/chunks/{history-compact-3F6VELO7.js.map → chunk-GTM5HQL4.js.map} +1 -1
  126. package/dist/cli-bundle/chunks/{chunk-DLQ4ZTCU.js → chunk-H2SMKL2N.js} +8 -8
  127. package/dist/cli-bundle/chunks/{chunk-S4APD35C.js → chunk-HHEWQXPD.js} +6 -6
  128. package/dist/cli-bundle/chunks/chunk-HHEWQXPD.js.map +7 -0
  129. package/dist/cli-bundle/chunks/{chunk-C3PMDWGX.js → chunk-HX6QXV5P.js} +2 -2
  130. package/dist/cli-bundle/chunks/{copy-LEE6P6EM.js → chunk-I74FMIWA.js} +11 -17
  131. package/dist/cli-bundle/chunks/{copy-LEE6P6EM.js.map → chunk-I74FMIWA.js.map} +1 -1
  132. package/dist/cli-bundle/chunks/chunk-IDIBF4E2.js +804 -0
  133. package/dist/cli-bundle/chunks/chunk-IDIBF4E2.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{comments-SAG5LSKL.js → chunk-II7R6KD4.js} +9 -13
  135. package/dist/cli-bundle/chunks/{comments-SAG5LSKL.js.map → chunk-II7R6KD4.js.map} +1 -1
  136. package/dist/cli-bundle/chunks/chunk-J2VGADNG.js +10320 -0
  137. package/dist/cli-bundle/chunks/chunk-J2VGADNG.js.map +1 -0
  138. package/dist/cli-bundle/chunks/{chunk-Y76TWC45.js → chunk-J7BOLHAV.js} +5 -7
  139. package/dist/cli-bundle/chunks/{chunk-Y76TWC45.js.map → chunk-J7BOLHAV.js.map} +1 -1
  140. package/dist/cli-bundle/chunks/{chunk-QHZO65XW.js → chunk-KTGJ2CBU.js} +4 -6
  141. package/dist/cli-bundle/chunks/{chunk-QHZO65XW.js.map → chunk-KTGJ2CBU.js.map} +1 -1
  142. package/dist/cli-bundle/chunks/{chunk-5VVUKE3U.js → chunk-LCFJ7XAM.js} +32 -2
  143. package/dist/cli-bundle/chunks/{chunk-5VVUKE3U.js.map → chunk-LCFJ7XAM.js.map} +3 -3
  144. package/dist/cli-bundle/chunks/{chunk-YMABYTNG.js → chunk-LZQU6XJG.js} +28 -34
  145. package/dist/cli-bundle/chunks/{chunk-YMABYTNG.js.map → chunk-LZQU6XJG.js.map} +1 -1
  146. package/dist/cli-bundle/chunks/{chunk-3Y4OESPP.js → chunk-M62RO3XK.js} +10 -14
  147. package/dist/cli-bundle/chunks/{chunk-3Y4OESPP.js.map → chunk-M62RO3XK.js.map} +1 -1
  148. package/dist/cli-bundle/chunks/{chunk-YPPVU5GX.js → chunk-MCEUKJKW.js} +9 -11
  149. package/dist/cli-bundle/chunks/{chunk-YPPVU5GX.js.map → chunk-MCEUKJKW.js.map} +1 -1
  150. package/dist/cli-bundle/chunks/{chunk-T5Y3QSNF.js → chunk-MHNMCDWR.js} +1447 -86
  151. package/dist/cli-bundle/chunks/chunk-MHNMCDWR.js.map +1 -0
  152. package/dist/cli-bundle/chunks/{chunk-HJE4JTKQ.js → chunk-MRFWUSVA.js} +4 -6
  153. package/dist/cli-bundle/chunks/{chunk-HJE4JTKQ.js.map → chunk-MRFWUSVA.js.map} +1 -1
  154. package/dist/cli-bundle/chunks/{chunk-P3VRG72Q.js → chunk-N6ZHDLUY.js} +6 -8
  155. package/dist/cli-bundle/chunks/{chunk-P3VRG72Q.js.map → chunk-N6ZHDLUY.js.map} +1 -1
  156. package/dist/cli-bundle/chunks/{delete-HQKGRNRZ.js → chunk-NWWL22C7.js} +8 -12
  157. package/dist/cli-bundle/chunks/{delete-HQKGRNRZ.js.map → chunk-NWWL22C7.js.map} +1 -1
  158. package/dist/cli-bundle/chunks/{chunk-N6DNM2FA.js → chunk-P3MJJW7P.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-5JE6SMYS.js → chunk-PDXJXEZJ.js} +2 -2
  160. package/dist/cli-bundle/chunks/{append-NSQBCXZJ.js → chunk-Q64AYQYW.js} +9 -13
  161. package/dist/cli-bundle/chunks/{append-NSQBCXZJ.js.map → chunk-Q64AYQYW.js.map} +1 -1
  162. package/dist/cli-bundle/chunks/{update-many-SLLAMHT7.js → chunk-QDABF2RB.js} +26 -47
  163. package/dist/cli-bundle/chunks/{update-many-SLLAMHT7.js.map → chunk-QDABF2RB.js.map} +1 -1
  164. package/dist/cli-bundle/chunks/{chunk-NBFCNJ7Q.js → chunk-QFBSP3NI.js} +529 -46
  165. package/dist/cli-bundle/chunks/chunk-QFBSP3NI.js.map +1 -0
  166. package/dist/cli-bundle/chunks/{focus-LFZ6IDBR.js → chunk-RB3KLPAH.js} +11 -16
  167. package/dist/cli-bundle/chunks/{focus-LFZ6IDBR.js.map → chunk-RB3KLPAH.js.map} +1 -1
  168. package/dist/cli-bundle/chunks/{chunk-YSAH5FY5.js → chunk-RY7PTTUB.js} +94 -53
  169. package/dist/cli-bundle/chunks/chunk-RY7PTTUB.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-WVSGSZ6J.js → chunk-S547WBYG.js} +1477 -86
  171. package/dist/cli-bundle/chunks/chunk-S547WBYG.js.map +7 -0
  172. package/dist/cli-bundle/chunks/{update-many-DC7X3EWM.js → chunk-S5BNGFN5.js} +24 -45
  173. package/dist/cli-bundle/chunks/{update-many-DC7X3EWM.js.map → chunk-S5BNGFN5.js.map} +1 -1
  174. package/dist/cli-bundle/chunks/{focus-WNMYCVYA.js → chunk-S6VC2A2K.js} +9 -14
  175. package/dist/cli-bundle/chunks/{focus-WNMYCVYA.js.map → chunk-S6VC2A2K.js.map} +1 -1
  176. package/dist/cli-bundle/chunks/{learnings-YBIHY3D6.js → chunk-SIM5JDON.js} +7 -14
  177. package/dist/cli-bundle/chunks/{learnings-YBIHY3D6.js.map → chunk-SIM5JDON.js.map} +1 -1
  178. package/dist/cli-bundle/chunks/{chunk-ZD34OFFQ.js → chunk-SY75LYXR.js} +12 -7
  179. package/dist/cli-bundle/chunks/chunk-SY75LYXR.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-TT42JUMF.js → chunk-TEISGNSH.js} +7 -7
  181. package/dist/cli-bundle/chunks/chunk-TEISGNSH.js.map +1 -0
  182. package/dist/cli-bundle/chunks/{chunk-AAEQMOC6.js → chunk-TEKZOS7M.js} +2 -2
  183. package/dist/cli-bundle/chunks/{chunk-4QQ6PM7M.js → chunk-TGUK6XN6.js} +14 -18
  184. package/dist/cli-bundle/chunks/{chunk-4QQ6PM7M.js.map → chunk-TGUK6XN6.js.map} +1 -1
  185. package/dist/cli-bundle/chunks/{plan-R4NDQ27E.js → chunk-TNC6MZUD.js} +10 -21
  186. package/dist/cli-bundle/chunks/{plan-R4NDQ27E.js.map → chunk-TNC6MZUD.js.map} +1 -1
  187. package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js +10498 -0
  188. package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js.map +7 -0
  189. package/dist/cli-bundle/chunks/{chunk-YD5FML7K.js → chunk-UO7XAZK6.js} +27 -4
  190. package/dist/cli-bundle/chunks/chunk-UO7XAZK6.js.map +1 -0
  191. package/dist/cli-bundle/chunks/{docs-6CRCSVKK.js → chunk-V5ZWKJNY.js} +5 -14
  192. package/dist/cli-bundle/chunks/{docs-6CRCSVKK.js.map → chunk-V5ZWKJNY.js.map} +1 -1
  193. package/dist/cli-bundle/chunks/{notes-NJ7IQJX4.js → chunk-VGO73OCK.js} +7 -14
  194. package/dist/cli-bundle/chunks/{notes-NJ7IQJX4.js.map → chunk-VGO73OCK.js.map} +1 -1
  195. package/dist/cli-bundle/chunks/{chunk-NER3KUUS.js → chunk-VLEA2UTQ.js} +2 -2
  196. package/dist/cli-bundle/chunks/{files-6P57MRKL.js → chunk-W5HXHC7C.js} +8 -15
  197. package/dist/cli-bundle/chunks/{files-6P57MRKL.js.map → chunk-W5HXHC7C.js.map} +1 -1
  198. package/dist/cli-bundle/chunks/{chunk-ZMD35NYG.js → chunk-WCWVEXGA.js} +2 -2
  199. package/dist/cli-bundle/chunks/chunk-X47MKQXU.js +6690 -0
  200. package/dist/cli-bundle/chunks/chunk-X47MKQXU.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{delete-62JQTYT4.js → chunk-XBX5CBRQ.js} +6 -10
  202. package/dist/cli-bundle/chunks/{delete-62JQTYT4.js.map → chunk-XBX5CBRQ.js.map} +1 -1
  203. package/dist/cli-bundle/chunks/{chunk-MTTXDAK4.js → chunk-XC3X7BQR.js} +541 -44
  204. package/dist/cli-bundle/chunks/chunk-XC3X7BQR.js.map +7 -0
  205. package/dist/cli-bundle/chunks/{history-compact-656Y2TN4.js → chunk-XHCVAZGM.js} +17 -23
  206. package/dist/cli-bundle/chunks/{history-compact-656Y2TN4.js.map → chunk-XHCVAZGM.js.map} +1 -1
  207. package/dist/cli-bundle/chunks/{chunk-ZAHXPXVY.js → chunk-XPMXPR7K.js} +7 -9
  208. package/dist/cli-bundle/chunks/{chunk-ZAHXPXVY.js.map → chunk-XPMXPR7K.js.map} +1 -1
  209. package/dist/cli-bundle/chunks/{deps-55FTG6Z5.js → chunk-XS2TMNXR.js} +8 -12
  210. package/dist/cli-bundle/chunks/{deps-55FTG6Z5.js.map → chunk-XS2TMNXR.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{plan-XWY5T67S.js → chunk-XXIYUTLK.js} +12 -23
  212. package/dist/cli-bundle/chunks/{plan-XWY5T67S.js.map → chunk-XXIYUTLK.js.map} +1 -1
  213. package/dist/cli-bundle/chunks/{chunk-7QH7DHUB.js → chunk-XZWL7VNE.js} +1220 -398
  214. package/dist/cli-bundle/chunks/chunk-XZWL7VNE.js.map +1 -0
  215. package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js +6624 -0
  216. package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js.map +1 -0
  217. package/dist/cli-bundle/chunks/{chunk-ABRA3BHY.js → chunk-Y7KYVCZM.js} +12 -18
  218. package/dist/cli-bundle/chunks/{chunk-ABRA3BHY.js.map → chunk-Y7KYVCZM.js.map} +1 -1
  219. package/dist/cli-bundle/chunks/{chunk-UI5BJ6DO.js → chunk-YCVWWIKY.js} +17 -28
  220. package/dist/cli-bundle/chunks/chunk-YCVWWIKY.js.map +7 -0
  221. package/dist/cli-bundle/chunks/chunk-YH5NBDFA.js +780 -0
  222. package/dist/cli-bundle/chunks/chunk-YH5NBDFA.js.map +1 -0
  223. package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js +5509 -0
  224. package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js.map +7 -0
  225. package/dist/cli-bundle/chunks/{comments-MIW5MZOX.js → chunk-YPD7SQ5P.js} +8 -12
  226. package/dist/cli-bundle/chunks/{comments-MIW5MZOX.js.map → chunk-YPD7SQ5P.js.map} +2 -2
  227. package/dist/cli-bundle/chunks/{chunk-T35XLYZF.js → chunk-YPMZMKN7.js} +2 -2
  228. package/dist/cli-bundle/chunks/{chunk-R3ZBLGTC.js → chunk-YTD5GICJ.js} +4 -4
  229. package/dist/cli-bundle/chunks/{config-DJJKZB5R.js → chunk-ZNEG2UDO.js} +264 -39
  230. package/dist/cli-bundle/chunks/{config-DJJKZB5R.js.map → chunk-ZNEG2UDO.js.map} +4 -4
  231. package/dist/cli-bundle/chunks/{chunk-EEY54JMF.js → chunk-ZO7CLOY2.js} +3 -3
  232. package/dist/cli-bundle/chunks/{close-3YRR3XY6.js → close-3YYQ5OG2.js} +5 -9
  233. package/dist/cli-bundle/chunks/close-Z3Q4U7TS.js +12 -0
  234. package/dist/cli-bundle/chunks/close-many-3L2RXH3M.js +22 -0
  235. package/dist/cli-bundle/chunks/close-many-D366FTIG.js +26 -0
  236. package/dist/cli-bundle/chunks/comments-54XDJNFE.js +17 -0
  237. package/dist/cli-bundle/chunks/comments-HGHC2PN6.js +13 -0
  238. package/dist/cli-bundle/chunks/copy-44RT5GDW.js +13 -0
  239. package/dist/cli-bundle/chunks/copy-UGMUGHZA.js +9 -0
  240. package/dist/cli-bundle/chunks/{create-XWWQFQ6S.js → create-4GWJWPXG.js} +9 -14
  241. package/dist/cli-bundle/chunks/create-AZXCUYKP.js +25 -0
  242. package/dist/cli-bundle/chunks/delete-Y6SXIQ4X.js +10 -0
  243. package/dist/cli-bundle/chunks/delete-YQ2VPXNF.js +14 -0
  244. package/dist/cli-bundle/chunks/deps-BU5EBJDU.js +17 -0
  245. package/dist/cli-bundle/chunks/deps-FMANWFRP.js +13 -0
  246. package/dist/cli-bundle/chunks/docs-OQBSJNIA.js +18 -0
  247. package/dist/cli-bundle/chunks/docs-VNPBZXEL.js +14 -0
  248. package/dist/cli-bundle/chunks/files-72HZEBOE.js +18 -0
  249. package/dist/cli-bundle/chunks/{activity-YKAKZTZ4.js → files-HTSB2KJG.js} +13 -13
  250. package/dist/cli-bundle/chunks/focus-FOG4ALC2.js +14 -0
  251. package/dist/cli-bundle/chunks/focus-SUTMKXGX.js +10 -0
  252. package/dist/cli-bundle/chunks/history-compact-M6IFAMBP.js +25 -0
  253. package/dist/cli-bundle/chunks/history-compact-NEXRPP2O.js +21 -0
  254. package/dist/cli-bundle/chunks/{history-redact-54ICFKXM.js → history-redact-NQX3OGZP.js} +7 -11
  255. package/dist/cli-bundle/chunks/history-redact-WQJBZ3PX.js +17 -0
  256. package/dist/cli-bundle/chunks/history-repair-CBHMHAJO.js +19 -0
  257. package/dist/cli-bundle/chunks/history-repair-NHOJG7WO.js +23 -0
  258. package/dist/cli-bundle/chunks/learnings-M64NTSOR.js +13 -0
  259. package/dist/cli-bundle/chunks/learnings-T63JGKKN.js +17 -0
  260. package/dist/cli-bundle/chunks/notes-73WE2UV2.js +13 -0
  261. package/dist/cli-bundle/chunks/notes-U7L6HQQ2.js +17 -0
  262. package/dist/cli-bundle/chunks/plan-OSCNYFGC.js +24 -0
  263. package/dist/cli-bundle/chunks/plan-OSCNYFGC.js.map +7 -0
  264. package/dist/cli-bundle/chunks/plan-TN537L24.js +28 -0
  265. package/dist/cli-bundle/chunks/plan-TN537L24.js.map +1 -0
  266. package/dist/cli-bundle/chunks/profile-MHAMXMHQ.js +37 -0
  267. package/dist/cli-bundle/chunks/profile-MHAMXMHQ.js.map +1 -0
  268. package/dist/cli-bundle/chunks/profile-TIGLAKJ7.js +33 -0
  269. package/dist/cli-bundle/chunks/profile-TIGLAKJ7.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{register-list-query-5H66WFYF.js → register-list-query-OHXD7G5N.js} +41 -33
  271. package/dist/cli-bundle/chunks/register-list-query-OHXD7G5N.js.map +7 -0
  272. package/dist/cli-bundle/chunks/{register-list-query-FB3FNDLZ.js → register-list-query-ZCRABAPN.js} +42 -34
  273. package/dist/cli-bundle/chunks/register-list-query-ZCRABAPN.js.map +1 -0
  274. package/dist/cli-bundle/chunks/{register-mutation-UJO23C7R.js → register-mutation-P3G4XP6Q.js} +36 -41
  275. package/dist/cli-bundle/chunks/{register-mutation-UJO23C7R.js.map → register-mutation-P3G4XP6Q.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{register-mutation-Z2ETYHKS.js → register-mutation-XX4H56PE.js} +34 -39
  277. package/dist/cli-bundle/chunks/{register-mutation-Z2ETYHKS.js.map → register-mutation-XX4H56PE.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{register-operations-A3XAM5J7.js → register-operations-V6PIYEDU.js} +80 -52
  279. package/dist/cli-bundle/chunks/register-operations-V6PIYEDU.js.map +1 -0
  280. package/dist/cli-bundle/chunks/{register-operations-SG7HBSUP.js → register-operations-V6VKTG54.js} +79 -51
  281. package/dist/cli-bundle/chunks/register-operations-V6VKTG54.js.map +7 -0
  282. package/dist/cli-bundle/chunks/{register-setup-K6U3NVY5.js → register-setup-6RVAWT6W.js} +129 -31
  283. package/dist/cli-bundle/chunks/register-setup-6RVAWT6W.js.map +7 -0
  284. package/dist/cli-bundle/chunks/{register-setup-I45OGJUV.js → register-setup-6YVUSQYD.js} +130 -32
  285. package/dist/cli-bundle/chunks/register-setup-6YVUSQYD.js.map +1 -0
  286. package/dist/cli-bundle/chunks/{restore-YJ2ET6AT.js → restore-HC3YSWF7.js} +7 -11
  287. package/dist/cli-bundle/chunks/restore-HC3YSWF7.js.map +1 -0
  288. package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js +15 -0
  289. package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js.map +7 -0
  290. package/dist/cli-bundle/chunks/{schema-2PUXCZ25.js → schema-DAGSYO6E.js} +6 -10
  291. package/dist/cli-bundle/chunks/schema-DAGSYO6E.js.map +7 -0
  292. package/dist/cli-bundle/chunks/{schema-Y6DXXK2F.js → schema-UBXJCQAC.js} +6 -10
  293. package/dist/cli-bundle/chunks/schema-UBXJCQAC.js.map +1 -0
  294. package/dist/cli-bundle/chunks/update-CJGG5WMV.js +21 -0
  295. package/dist/cli-bundle/chunks/update-CJGG5WMV.js.map +7 -0
  296. package/dist/cli-bundle/chunks/update-LKD64AFP.js +25 -0
  297. package/dist/cli-bundle/chunks/update-LKD64AFP.js.map +1 -0
  298. package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js +31 -0
  299. package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js.map +7 -0
  300. package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js +35 -0
  301. package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js.map +1 -0
  302. package/dist/cli-bundle/main.js +29 -31
  303. package/dist/cli-bundle/main.js.map +2 -2
  304. package/dist/cli-bundle/sdk-runtime.js +136 -54
  305. package/dist/cli-bundle/sdk-testing.js +7 -8
  306. package/dist/cli-bundle/sdk.js +132 -84
  307. package/dist/cli-bundle/sdk.js.map +2 -2
  308. package/dist/core/history/drift-scan.js +3 -8
  309. package/dist/core/history/drift-scan.js.map +1 -1
  310. package/dist/core/output/mutation-projection.js +11 -5
  311. package/dist/core/output/mutation-projection.js.map +1 -1
  312. package/dist/core/search/cache.js +3 -3
  313. package/dist/core/search/cache.js.map +1 -1
  314. package/dist/core/search/semantic-defaults.d.ts +2 -0
  315. package/dist/core/search/semantic-defaults.js +11 -4
  316. package/dist/core/search/semantic-defaults.js.map +1 -1
  317. package/dist/core/search/vector-stores.d.ts +1 -1
  318. package/dist/core/search/vector-stores.js +33 -7
  319. package/dist/core/search/vector-stores.js.map +1 -1
  320. package/dist/mcp/server.d.ts +22 -50
  321. package/dist/mcp/server.js +62 -916
  322. package/dist/mcp/server.js.map +1 -1
  323. package/dist/sdk/cli-contracts/flag-contracts.js +7 -7
  324. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  325. package/dist/sdk/cli-contracts/tool-schema.js +9 -7
  326. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  327. package/dist/sdk/index.d.ts +4 -2
  328. package/dist/sdk/index.js +4 -4
  329. package/dist/sdk/index.js.map +1 -1
  330. package/dist/sdk/runtime.d.ts +312 -5
  331. package/dist/sdk/runtime.js +1391 -26
  332. package/dist/sdk/runtime.js.map +1 -1
  333. package/dist/sdk/start-task-status.d.ts +13 -0
  334. package/dist/sdk/start-task-status.js +19 -0
  335. package/dist/sdk/start-task-status.js.map +1 -0
  336. package/dist/sdk/workspace-contracts-cache.d.ts +17 -0
  337. package/dist/sdk/workspace-contracts-cache.js +36 -0
  338. package/dist/sdk/workspace-contracts-cache.js.map +1 -0
  339. package/docs/COMMANDS.md +10 -1
  340. package/docs/RELEASING.md +3 -1
  341. package/docs/SDK.md +81 -0
  342. package/docs/TESTING.md +3 -0
  343. package/docs/examples/sdk-app-embedding/run-embedded-pm.mjs +16 -2
  344. package/docs/examples/sdk-contract-consumer/inspect-contracts.mjs +16 -1
  345. package/package.json +1 -1
  346. package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +0 -18
  347. package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js +0 -375
  348. package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js.map +0 -7
  349. package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js +0 -372
  350. package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js.map +0 -1
  351. package/dist/cli-bundle/chunks/chunk-37E72CNS.js +0 -217
  352. package/dist/cli-bundle/chunks/chunk-37E72CNS.js.map +0 -1
  353. package/dist/cli-bundle/chunks/chunk-3PL6LEKP.js +0 -1961
  354. package/dist/cli-bundle/chunks/chunk-3PL6LEKP.js.map +0 -1
  355. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js +0 -1749
  356. package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +0 -7
  357. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +0 -87
  358. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +0 -7
  359. package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js +0 -822
  360. package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js.map +0 -7
  361. package/dist/cli-bundle/chunks/chunk-4OFLJHX6.js.map +0 -1
  362. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js +0 -2181
  363. package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +0 -1
  364. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js +0 -1704
  365. package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +0 -1
  366. package/dist/cli-bundle/chunks/chunk-5B3X4Y22.js +0 -2330
  367. package/dist/cli-bundle/chunks/chunk-5B3X4Y22.js.map +0 -7
  368. package/dist/cli-bundle/chunks/chunk-5J2XPTAD.js.map +0 -7
  369. package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js +0 -995
  370. package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js.map +0 -1
  371. package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js +0 -819
  372. package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js.map +0 -1
  373. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +0 -23
  374. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +0 -7
  375. package/dist/cli-bundle/chunks/chunk-7EQNAZX2.js.map +0 -7
  376. package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +0 -1
  377. package/dist/cli-bundle/chunks/chunk-BVEUCSH2.js +0 -530
  378. package/dist/cli-bundle/chunks/chunk-BVEUCSH2.js.map +0 -7
  379. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +0 -275
  380. package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +0 -7
  381. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js +0 -231
  382. package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +0 -7
  383. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js +0 -2184
  384. package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +0 -7
  385. package/dist/cli-bundle/chunks/chunk-EZFKWSC7.js +0 -1615
  386. package/dist/cli-bundle/chunks/chunk-EZFKWSC7.js.map +0 -7
  387. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js +0 -228
  388. package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +0 -1
  389. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js +0 -3237
  390. package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js +0 -1570
  392. package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js +0 -3206
  394. package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +0 -1
  395. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js +0 -371
  396. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +0 -7
  397. package/dist/cli-bundle/chunks/chunk-JLA7EVYV.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +0 -76
  399. package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +0 -1
  400. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +0 -79
  401. package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +0 -7
  402. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +0 -915
  403. package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +0 -1
  404. package/dist/cli-bundle/chunks/chunk-KLG4ZULO.js +0 -218
  405. package/dist/cli-bundle/chunks/chunk-KLG4ZULO.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +0 -7
  407. package/dist/cli-bundle/chunks/chunk-MNZ7DRNC.js +0 -1858
  408. package/dist/cli-bundle/chunks/chunk-MNZ7DRNC.js.map +0 -1
  409. package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +0 -7
  410. package/dist/cli-bundle/chunks/chunk-MZ7VNEVY.js +0 -520
  411. package/dist/cli-bundle/chunks/chunk-MZ7VNEVY.js.map +0 -1
  412. package/dist/cli-bundle/chunks/chunk-N7X4WP6L.js +0 -1041
  413. package/dist/cli-bundle/chunks/chunk-N7X4WP6L.js.map +0 -7
  414. package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +0 -1
  415. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +0 -20
  416. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +0 -1
  417. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +0 -918
  418. package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +0 -7
  419. package/dist/cli-bundle/chunks/chunk-OESSOFJ4.js +0 -1985
  420. package/dist/cli-bundle/chunks/chunk-OESSOFJ4.js.map +0 -7
  421. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +0 -238
  422. package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +0 -1
  423. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +0 -1977
  424. package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +0 -7
  425. package/dist/cli-bundle/chunks/chunk-PPAJG4GB.js +0 -1031
  426. package/dist/cli-bundle/chunks/chunk-PPAJG4GB.js.map +0 -1
  427. package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +0 -1
  428. package/dist/cli-bundle/chunks/chunk-QZ342C63.js +0 -220
  429. package/dist/cli-bundle/chunks/chunk-QZ342C63.js.map +0 -7
  430. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js +0 -368
  431. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +0 -1
  432. package/dist/cli-bundle/chunks/chunk-S4APD35C.js.map +0 -7
  433. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js +0 -1149
  434. package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +0 -1
  435. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +0 -272
  436. package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +0 -1
  437. package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +0 -1
  438. package/dist/cli-bundle/chunks/chunk-TT42JUMF.js.map +0 -1
  439. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +0 -165
  440. package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +0 -1
  441. package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +0 -7
  442. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +0 -1932
  443. package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +0 -1
  444. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +0 -175
  445. package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +0 -7
  446. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +0 -84
  447. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +0 -1
  448. package/dist/cli-bundle/chunks/chunk-VZIYHZDX.js +0 -1868
  449. package/dist/cli-bundle/chunks/chunk-VZIYHZDX.js.map +0 -7
  450. package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +0 -7
  451. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js +0 -1152
  452. package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +0 -7
  453. package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +0 -1
  454. package/dist/cli-bundle/chunks/chunk-YSAH5FY5.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js +0 -1005
  456. package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js.map +0 -7
  457. package/dist/cli-bundle/chunks/chunk-Z2CRRZYF.js +0 -215
  458. package/dist/cli-bundle/chunks/chunk-Z2CRRZYF.js.map +0 -1
  459. package/dist/cli-bundle/chunks/chunk-ZD34OFFQ.js.map +0 -7
  460. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js +0 -2306
  461. package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +0 -1
  462. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +0 -241
  463. package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +0 -7
  464. package/dist/cli-bundle/chunks/claim-4DROPSIS.js +0 -144
  465. package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +0 -1
  466. package/dist/cli-bundle/chunks/claim-VX54TV5U.js +0 -147
  467. package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +0 -7
  468. package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +0 -16
  469. package/dist/cli-bundle/chunks/config-V57QD47V.js.map +0 -1
  470. package/dist/cli-bundle/chunks/context-4OQGIPSO.js +0 -45
  471. package/dist/cli-bundle/chunks/context-WLA6IAWE.js +0 -49
  472. package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +0 -12
  473. package/dist/cli-bundle/chunks/create-WKOZKPQR.js +0 -30
  474. package/dist/cli-bundle/chunks/eval-N6UHFWVO.js +0 -288
  475. package/dist/cli-bundle/chunks/eval-N6UHFWVO.js.map +0 -7
  476. package/dist/cli-bundle/chunks/eval-PHOTWYHI.js +0 -278
  477. package/dist/cli-bundle/chunks/eval-PHOTWYHI.js.map +0 -1
  478. package/dist/cli-bundle/chunks/extension-NBAH62ML.js +0 -40
  479. package/dist/cli-bundle/chunks/extension-ZF6ZZPOU.js +0 -44
  480. package/dist/cli-bundle/chunks/gc-AETFKZ44.js +0 -398
  481. package/dist/cli-bundle/chunks/gc-AETFKZ44.js.map +0 -7
  482. package/dist/cli-bundle/chunks/gc-RLBP4QVN.js +0 -388
  483. package/dist/cli-bundle/chunks/gc-RLBP4QVN.js.map +0 -1
  484. package/dist/cli-bundle/chunks/get-NH2MPBCI.js +0 -283
  485. package/dist/cli-bundle/chunks/get-NH2MPBCI.js.map +0 -1
  486. package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js +0 -286
  487. package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js.map +0 -7
  488. package/dist/cli-bundle/chunks/health-3GVPMQBL.js +0 -1612
  489. package/dist/cli-bundle/chunks/health-3GVPMQBL.js.map +0 -1
  490. package/dist/cli-bundle/chunks/health-DNTM72GJ.js +0 -1615
  491. package/dist/cli-bundle/chunks/health-DNTM72GJ.js.map +0 -7
  492. package/dist/cli-bundle/chunks/history-RYKLC72X.js +0 -20
  493. package/dist/cli-bundle/chunks/history-SGPYRAFT.js +0 -24
  494. package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +0 -21
  495. package/dist/cli-bundle/chunks/init-RPIPQUNV.js +0 -32
  496. package/dist/cli-bundle/chunks/init-SKQAESQS.js +0 -28
  497. package/dist/cli-bundle/chunks/list-64LHZ3HM.js +0 -32
  498. package/dist/cli-bundle/chunks/list-7LXBTEKI.js +0 -36
  499. package/dist/cli-bundle/chunks/next-7ODPAQ4U.js +0 -306
  500. package/dist/cli-bundle/chunks/next-7ODPAQ4U.js.map +0 -7
  501. package/dist/cli-bundle/chunks/next-ODJUM4ZM.js +0 -303
  502. package/dist/cli-bundle/chunks/next-ODJUM4ZM.js.map +0 -1
  503. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +0 -397
  504. package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +0 -1
  505. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +0 -400
  506. package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +0 -7
  507. package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js.map +0 -7
  508. package/dist/cli-bundle/chunks/register-list-query-FB3FNDLZ.js.map +0 -1
  509. package/dist/cli-bundle/chunks/register-operations-A3XAM5J7.js.map +0 -1
  510. package/dist/cli-bundle/chunks/register-operations-SG7HBSUP.js.map +0 -7
  511. package/dist/cli-bundle/chunks/register-setup-I45OGJUV.js.map +0 -1
  512. package/dist/cli-bundle/chunks/register-setup-K6U3NVY5.js.map +0 -7
  513. package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +0 -19
  514. package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js +0 -91
  515. package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js.map +0 -7
  516. package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js +0 -88
  517. package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js.map +0 -1
  518. package/dist/cli-bundle/chunks/search-3S72CTD6.js +0 -38
  519. package/dist/cli-bundle/chunks/search-WNUNBQXO.js +0 -34
  520. package/dist/cli-bundle/chunks/stats-IJYTRQGV.js +0 -250
  521. package/dist/cli-bundle/chunks/stats-IJYTRQGV.js.map +0 -7
  522. package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js +0 -240
  523. package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js.map +0 -1
  524. package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js +0 -309
  525. package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js.map +0 -7
  526. package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js +0 -306
  527. package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js.map +0 -1
  528. package/dist/cli-bundle/chunks/test-DQ2QFJ7W.js +0 -45
  529. package/dist/cli-bundle/chunks/test-W7QBLVJS.js +0 -41
  530. package/dist/cli-bundle/chunks/test-all-636NTRTT.js +0 -434
  531. package/dist/cli-bundle/chunks/test-all-636NTRTT.js.map +0 -1
  532. package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js +0 -437
  533. package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js.map +0 -7
  534. package/dist/cli-bundle/chunks/test-runs-245OINZR.js +0 -28
  535. package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +0 -24
  536. package/dist/cli-bundle/chunks/update-SFLZPJXX.js +0 -30
  537. package/dist/cli-bundle/chunks/update-SJZ6S77U.js +0 -26
  538. package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js +0 -290
  539. package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js.map +0 -7
  540. package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js +0 -287
  541. package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js.map +0 -1
  542. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js +0 -2143
  543. package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +0 -7
  544. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js +0 -2105
  545. package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +0 -1
  546. /package/dist/cli-bundle/chunks/{activity-4XQIDNM5.js.map → append-F7WPGIQL.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{activity-YKAKZTZ4.js.map → append-PVCTBVJG.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-T3ABIMGW.js.map → chunk-2TILG6F2.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-RCT3YJOK.js.map → chunk-3TYOW6RR.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-3JZNEQBA.js.map → chunk-3X542TEY.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-YOF5VPKM.js.map → chunk-7VQ3JJN5.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-P5TFTLWW.js.map → chunk-AGAVEDIE.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-YFIE7YK6.js.map → chunk-AJUON7E6.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-7WYXBPYQ.js.map → chunk-DR2V5OIV.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-PDXT6Q55.js.map → chunk-EDO7VXSO.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-FUM6UMY4.js.map → chunk-EVEPHNXJ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-RX3HQSYG.js.map → chunk-FN6SB4HU.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-DLQ4ZTCU.js.map → chunk-H2SMKL2N.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-C3PMDWGX.js.map → chunk-HX6QXV5P.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-N6DNM2FA.js.map → chunk-P3MJJW7P.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-5JE6SMYS.js.map → chunk-PDXJXEZJ.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-AAEQMOC6.js.map → chunk-TEKZOS7M.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-NER3KUUS.js.map → chunk-VLEA2UTQ.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-ZMD35NYG.js.map → chunk-WCWVEXGA.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-T35XLYZF.js.map → chunk-YPMZMKN7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-R3ZBLGTC.js.map → chunk-YTD5GICJ.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-EEY54JMF.js.map → chunk-ZO7CLOY2.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{close-3YRR3XY6.js.map → close-3YYQ5OG2.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{close-OB2Y4QP5.js.map → close-Z3Q4U7TS.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{context-4OQGIPSO.js.map → close-many-3L2RXH3M.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{context-WLA6IAWE.js.map → close-many-D366FTIG.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{contracts-OJEXMKVW.js.map → comments-54XDJNFE.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{contracts-HXJLKCRI.js.map → comments-HGHC2PN6.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{create-XWWQFQ6S.js.map → copy-44RT5GDW.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{create-WKOZKPQR.js.map → copy-UGMUGHZA.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{extension-ZF6ZZPOU.js.map → create-4GWJWPXG.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{extension-NBAH62ML.js.map → create-AZXCUYKP.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{history-RYKLC72X.js.map → delete-Y6SXIQ4X.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{history-SGPYRAFT.js.map → delete-YQ2VPXNF.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{history-redact-54ICFKXM.js.map → deps-BU5EBJDU.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{history-redact-4H3FCKF3.js.map → deps-FMANWFRP.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{init-RPIPQUNV.js.map → docs-OQBSJNIA.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{init-SKQAESQS.js.map → docs-VNPBZXEL.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{list-64LHZ3HM.js.map → files-72HZEBOE.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{list-7LXBTEKI.js.map → files-HTSB2KJG.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{restore-YJ2ET6AT.js.map → focus-FOG4ALC2.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{restore-PXOFL6AM.js.map → focus-SUTMKXGX.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{schema-Y6DXXK2F.js.map → history-compact-M6IFAMBP.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{schema-2PUXCZ25.js.map → history-compact-NEXRPP2O.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{search-3S72CTD6.js.map → history-redact-NQX3OGZP.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{search-WNUNBQXO.js.map → history-redact-WQJBZ3PX.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{test-W7QBLVJS.js.map → history-repair-CBHMHAJO.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{test-DQ2QFJ7W.js.map → history-repair-NHOJG7WO.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{test-runs-ZRD4GCTT.js.map → learnings-M64NTSOR.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{test-runs-245OINZR.js.map → learnings-T63JGKKN.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{update-SJZ6S77U.js.map → notes-73WE2UV2.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{update-SFLZPJXX.js.map → notes-U7L6HQQ2.js.map} +0 -0
@@ -1,400 +0,0 @@
1
- import {
2
- resolveAuthor
3
- } from "./chunk-WW4E2DC3.js";
4
- import {
5
- describeProfileComposition,
6
- describeProjectProfile,
7
- planProfileApplication
8
- } from "./chunk-UZRDBL6W.js";
9
- import {
10
- runTemplatesSave
11
- } from "./chunk-DC3QJQWI.js";
12
- import {
13
- lintProjectProfile,
14
- resolveProfileCatalog,
15
- resolveProfileEntry
16
- } from "./chunk-DLQ4ZTCU.js";
17
- import "./chunk-CZVISY5A.js";
18
- import "./chunk-UI5BJ6DO.js";
19
- import {
20
- ensureTypeFolderScaffold
21
- } from "./chunk-4QQ6PM7M.js";
22
- import {
23
- acquireLock
24
- } from "./chunk-3U3VEWK6.js";
25
- import {
26
- serializeFieldsFile,
27
- serializeStatusDefsFile
28
- } from "./chunk-Y76TWC45.js";
29
- import {
30
- resolveNestedSettingDescriptor,
31
- writeNestedSettingValue
32
- } from "./chunk-VUHVWI4C.js";
33
- import "./chunk-EZFKWSC7.js";
34
- import {
35
- nowIso
36
- } from "./chunk-DRBV5UC2.js";
37
- import {
38
- PmCliError,
39
- getActiveExtensionRegistrations,
40
- readSettings,
41
- resolveGovernanceKnobs,
42
- runActiveOnWriteHooks,
43
- writeSettings
44
- } from "./chunk-P5YORJRH.js";
45
- import {
46
- normalizeAddTypeInput,
47
- serializeItemTypesFile
48
- } from "./chunk-T35XLYZF.js";
49
- import "./chunk-7C2O74AE.js";
50
- import {
51
- DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,
52
- EXIT_CODE,
53
- filePathForSchemaSection,
54
- getSettingsPath,
55
- normalizeRuntimeSchemaSettings,
56
- pathExists,
57
- readFileIfExists,
58
- resolvePmRoot,
59
- writeFileAtomic
60
- } from "./chunk-5VVUKE3U.js";
61
-
62
- // dist/cli/commands/profile.js
63
- import path from "node:path";
64
- !(function() {
65
- try {
66
- var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
67
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "530a50d9-2afd-5b74-99f5-9eb95ed54c26");
68
- } catch (e2) {
69
- }
70
- })();
71
- var PROFILE_SUBCOMMANDS = ["list", "show", "apply", "lint"];
72
- var PROFILE_TYPES_LOCK_ID = "schema-types";
73
- var PROFILE_STATUSES_LOCK_ID = "schema-statuses";
74
- var PROFILE_FIELDS_LOCK_ID = "schema-fields";
75
- function collectExtensionProfileContributions() {
76
- const registrations = getActiveExtensionRegistrations();
77
- if (registrations === null) {
78
- return [];
79
- }
80
- return registrations.profiles.map((entry) => ({ name: entry.name, profile: entry.profile }));
81
- }
82
- function runProfileList() {
83
- const { profiles, warnings } = resolveProfileCatalog(collectExtensionProfileContributions());
84
- return {
85
- action: "list",
86
- profiles: profiles.map((resolved) => ({
87
- name: resolved.definition.name,
88
- title: resolved.definition.title,
89
- summary: resolved.definition.summary,
90
- source: resolved.source,
91
- ...resolved.package !== void 0 ? { package: resolved.package } : {},
92
- composition: describeProfileComposition(resolved.definition)
93
- })),
94
- warnings,
95
- generated_at: nowIso()
96
- };
97
- }
98
- function runProfileShow(name) {
99
- let entry;
100
- try {
101
- entry = resolveProfileEntry(name, collectExtensionProfileContributions());
102
- } catch (error) {
103
- throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);
104
- }
105
- const { resolved } = entry;
106
- return {
107
- action: "show",
108
- ...describeProjectProfile(resolved.definition),
109
- source: resolved.source,
110
- ...resolved.package !== void 0 ? { package: resolved.package } : {},
111
- warnings: entry.warnings,
112
- generated_at: nowIso()
113
- };
114
- }
115
- function runProfileLint(name) {
116
- let entry;
117
- try {
118
- entry = resolveProfileEntry(name, collectExtensionProfileContributions());
119
- } catch (error) {
120
- throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);
121
- }
122
- const { resolved } = entry;
123
- const report = lintProjectProfile(resolved.definition);
124
- return {
125
- action: "lint",
126
- name: resolved.definition.name,
127
- title: resolved.definition.title,
128
- source: resolved.source,
129
- ...resolved.package !== void 0 ? { package: resolved.package } : {},
130
- ok: report.ok,
131
- error_count: report.errorCount,
132
- warning_count: report.warningCount,
133
- findings: report.findings,
134
- warnings: entry.warnings,
135
- generated_at: nowIso()
136
- };
137
- }
138
- function templateFilePath(pmRoot, name) {
139
- return path.join(pmRoot, "templates", `${name}.json`);
140
- }
141
- async function readStoredTemplateOptions(pmRoot, name) {
142
- const raw = await readFileIfExists(templateFilePath(pmRoot, name));
143
- if (raw === null) {
144
- return void 0;
145
- }
146
- try {
147
- const parsed = JSON.parse(raw);
148
- if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
149
- const options = parsed.options;
150
- if (options !== null && typeof options === "object" && !Array.isArray(options)) {
151
- return options;
152
- }
153
- }
154
- } catch {
155
- }
156
- return void 0;
157
- }
158
- async function loadProfileCurrentState(pmRoot, schema, settings, profile) {
159
- const templates = /* @__PURE__ */ new Map();
160
- for (const template of profile.templates) {
161
- const stored = await readStoredTemplateOptions(pmRoot, template.name);
162
- if (stored !== void 0) {
163
- templates.set(template.name, stored);
164
- }
165
- }
166
- return {
167
- typesRaw: await readFileIfExists(filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types)),
168
- statusesRaw: await readFileIfExists(filePathForSchemaSection(pmRoot, schema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses)),
169
- fieldsRaw: await readFileIfExists(filePathForSchemaSection(pmRoot, schema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields)),
170
- workflows: settings.schema.type_workflows ?? [],
171
- settings,
172
- templates,
173
- // Package recommendations are advisory: apply never installs and never
174
- // inspects install state, so every recommendation surfaces as "recommended".
175
- // The planner still supports an install-state set for SDK consumers that want
176
- // richer reporting.
177
- installedPackages: /* @__PURE__ */ new Set()
178
- };
179
- }
180
- function dimensionFrom(changes) {
181
- const added = [];
182
- const updated = [];
183
- const unchanged = [];
184
- for (const change of changes) {
185
- (change.status === "add" ? added : change.status === "update" ? updated : unchanged).push(change.key);
186
- }
187
- return { added, updated, unchanged };
188
- }
189
- function buildApplyResult(profile, plan, applied, dryRun, warnings) {
190
- return {
191
- action: "apply",
192
- name: profile.name,
193
- title: profile.title,
194
- applied,
195
- dry_run: dryRun,
196
- changed: plan.changed,
197
- types: dimensionFrom(plan.types.changes),
198
- statuses: dimensionFrom(plan.statuses.changes),
199
- fields: dimensionFrom(plan.fields.changes),
200
- workflows: dimensionFrom(plan.workflows.changes.map((change) => ({ key: change.type, status: change.status }))),
201
- config: dimensionFrom(plan.config.changes),
202
- templates: dimensionFrom(plan.templates.changes.map((change) => ({ key: change.name, status: change.status }))),
203
- packages: plan.packages,
204
- warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),
205
- generated_at: nowIso()
206
- };
207
- }
208
- async function assertProfileTrackerInitialized(pmRoot) {
209
- if (!await pathExists(getSettingsPath(pmRoot))) {
210
- throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
211
- }
212
- }
213
- function resolveProfileForCommand(name) {
214
- try {
215
- const entry = resolveProfileEntry(name, collectExtensionProfileContributions());
216
- return {
217
- profile: entry.resolved.definition,
218
- warnings: entry.warnings
219
- };
220
- } catch (error) {
221
- throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);
222
- }
223
- }
224
- async function runProfileApply(name, options, global2) {
225
- const pmRoot = resolvePmRoot(process.cwd(), global2.path);
226
- await assertProfileTrackerInitialized(pmRoot);
227
- const resolvedProfile = resolveProfileForCommand(name);
228
- const profile = resolvedProfile.profile;
229
- const mergeWarnings = resolvedProfile.warnings;
230
- const dryRun = options.dryRun === true;
231
- const settings = await readSettings(pmRoot);
232
- const schema = normalizeRuntimeSchemaSettings(settings.schema);
233
- if (dryRun) {
234
- const state = await loadProfileCurrentState(pmRoot, schema, settings, profile);
235
- const plan2 = planProfile(profile, state);
236
- return buildApplyResult(profile, plan2, false, true, [...mergeWarnings]);
237
- }
238
- const author = resolveAuthor(options.author, settings.author_default);
239
- const governance = resolveGovernanceKnobs(settings);
240
- const force = Boolean(options.force);
241
- const warnings = [...mergeWarnings];
242
- const releasers = [];
243
- const acquire = async (lockId) => {
244
- releasers.push(await acquireLock(pmRoot, lockId, settings.locks.ttl_seconds, author, force, governance.force_required_for_stale_lock, settings.locks.wait_ms));
245
- };
246
- let plan;
247
- try {
248
- await acquire(PROFILE_TYPES_LOCK_ID);
249
- await acquire(PROFILE_STATUSES_LOCK_ID);
250
- await acquire(PROFILE_FIELDS_LOCK_ID);
251
- const state = await loadProfileCurrentState(pmRoot, schema, settings, profile);
252
- plan = planProfile(profile, state);
253
- if (plan.types.changed) {
254
- const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);
255
- await writeFileAtomic(typesPath, serializeItemTypesFile(plan.types.file));
256
- const stagedNames = new Set(profile.types.map((type) => normalizeAddTypeInput(type).name));
257
- const stagedDefinitions = plan.types.file.definitions.filter((definition) => stagedNames.has(definition.name));
258
- await ensureTypeFolderScaffold(pmRoot, stagedDefinitions, warnings, "profile:apply-type-folder");
259
- warnings.push(...await runActiveOnWriteHooks({ path: typesPath, scope: "project", op: "profile:apply-types" }));
260
- }
261
- if (plan.statuses.changed) {
262
- const statusesPath = filePathForSchemaSection(pmRoot, schema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses);
263
- await writeFileAtomic(statusesPath, serializeStatusDefsFile(plan.statuses.file));
264
- warnings.push(...await runActiveOnWriteHooks({ path: statusesPath, scope: "project", op: "profile:apply-statuses" }));
265
- }
266
- if (plan.fields.changed) {
267
- const fieldsPath = filePathForSchemaSection(pmRoot, schema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields);
268
- await writeFileAtomic(fieldsPath, serializeFieldsFile(plan.fields.file));
269
- warnings.push(...await runActiveOnWriteHooks({ path: fieldsPath, scope: "project", op: "profile:apply-fields" }));
270
- }
271
- if (plan.config.changed || plan.workflows.changed) {
272
- for (const change of plan.config.changes) {
273
- if (change.status === "unchanged") {
274
- continue;
275
- }
276
- const descriptor = resolveNestedSettingDescriptor(change.key);
277
- if (descriptor !== void 0) {
278
- writeNestedSettingValue(settings, descriptor, change.value);
279
- }
280
- }
281
- settings.schema.type_workflows = plan.workflows.result;
282
- await writeSettings(pmRoot, settings, "profile:apply-config");
283
- }
284
- for (const change of plan.templates.changes) {
285
- if (change.status === "unchanged") {
286
- continue;
287
- }
288
- await runTemplatesSave(change.name, { ...change.options }, global2);
289
- }
290
- } finally {
291
- for (const release of releasers.reverse()) {
292
- try {
293
- await release();
294
- } catch {
295
- }
296
- }
297
- }
298
- return buildApplyResult(profile, plan, plan.changed, false, warnings);
299
- }
300
- function planProfile(profile, state) {
301
- try {
302
- return planProfileApplication(profile, state);
303
- } catch (error) {
304
- throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);
305
- }
306
- }
307
- function formatDimensionLine(label, dimension) {
308
- const segments = [];
309
- if (dimension.added.length > 0) {
310
- segments.push(`+${dimension.added.join(", ")}`);
311
- }
312
- if (dimension.updated.length > 0) {
313
- segments.push(`~${dimension.updated.join(", ")}`);
314
- }
315
- if (segments.length === 0) {
316
- return void 0;
317
- }
318
- return ` ${label}: ${segments.join(" ")}`;
319
- }
320
- function formatProfileListHuman(result) {
321
- const lines = ["Project profiles:"];
322
- for (const profile of result.profiles) {
323
- const origin = profile.source === "extension" ? ` [${profile.package ?? "extension"}]` : "";
324
- lines.push(` ${profile.name} \u2014 ${profile.title}: ${profile.summary}${origin}`);
325
- }
326
- for (const warning of result.warnings) {
327
- lines.push(` warning: ${warning}`);
328
- }
329
- return lines.join("\n");
330
- }
331
- function formatProfileShowHuman(result) {
332
- const origin = result.source === "extension" ? ` [${result.package ?? "extension"}]` : "";
333
- const lines = [`${result.name} \u2014 ${result.title}${origin}`, result.summary, ""];
334
- lines.push(`types: ${result.types.join(", ") || "(none)"}`);
335
- lines.push(`statuses: ${result.statuses.join(", ") || "(none)"}`);
336
- lines.push(`fields: ${result.fields.join(", ") || "(none)"}`);
337
- lines.push(`workflows: ${result.workflows.join(", ") || "(none)"}`);
338
- lines.push(`config: ${result.config.join(", ") || "(none)"}`);
339
- lines.push(`templates: ${result.templates.join(", ") || "(none)"}`);
340
- lines.push(`packages: ${result.packages.map((pkg) => pkg.spec).join(", ") || "(none)"}`);
341
- for (const warning of result.warnings) {
342
- lines.push(`warning: ${warning}`);
343
- }
344
- return lines.join("\n");
345
- }
346
- function formatProfileLintHuman(result) {
347
- const origin = result.source === "extension" ? ` [${result.package ?? "extension"}]` : "";
348
- const totalWarningCount = result.warning_count + result.warnings.length;
349
- const verdict = result.ok ? `Profile ${result.name}${origin}: ok (${totalWarningCount} warning${totalWarningCount === 1 ? "" : "s"})` : `Profile ${result.name}${origin}: ${result.error_count} error${result.error_count === 1 ? "" : "s"}, ${totalWarningCount} warning${totalWarningCount === 1 ? "" : "s"}`;
350
- const lines = [verdict];
351
- for (const finding of result.findings) {
352
- const target = finding.target !== void 0 ? ` (${finding.target})` : "";
353
- lines.push(` ${finding.severity} [${finding.code}] ${finding.dimension}${target}: ${finding.message}`);
354
- }
355
- for (const warning of result.warnings) {
356
- lines.push(` warning: ${warning}`);
357
- }
358
- return lines.join("\n");
359
- }
360
- function formatProfileApplyHuman(result) {
361
- const mode = result.dry_run ? "dry-run" : result.applied ? "applied" : "no changes";
362
- const lines = [`Profile ${result.name} (${mode})`];
363
- if (!result.changed) {
364
- lines.push(" already up to date");
365
- } else {
366
- for (const [label, dimension] of [
367
- ["types", result.types],
368
- ["statuses", result.statuses],
369
- ["fields", result.fields],
370
- ["workflows", result.workflows],
371
- ["config", result.config],
372
- ["templates", result.templates]
373
- ]) {
374
- const line = formatDimensionLine(label, dimension);
375
- if (line !== void 0) {
376
- lines.push(line);
377
- }
378
- }
379
- }
380
- const recommended = result.packages.filter((pkg) => pkg.status === "recommended");
381
- if (recommended.length > 0) {
382
- lines.push(` recommended packages: ${recommended.map((pkg) => pkg.spec).join(", ")}`);
383
- }
384
- for (const warning of result.warnings) {
385
- lines.push(` warning: ${warning}`);
386
- }
387
- return lines.join("\n");
388
- }
389
- export {
390
- PROFILE_SUBCOMMANDS,
391
- formatProfileApplyHuman,
392
- formatProfileLintHuman,
393
- formatProfileListHuman,
394
- formatProfileShowHuman,
395
- runProfileApply,
396
- runProfileLint,
397
- runProfileList,
398
- runProfileShow
399
- };
400
- //# sourceMappingURL=profile-YRDHLMRO.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../../cli/commands/profile.ts"],
4
- "sourcesContent": ["/**\n * @module cli/commands/profile\n *\n * Implements the `pm profile` command surface: listing the built-in project\n * archetypes, showing a profile's full composition, and applying a profile to an\n * initialized tracker. Apply stages item types, custom statuses, custom fields,\n * per-type workflows, config knobs, and create templates idempotently, and\n * surfaces advisory package recommendations. The pure diff lives in\n * {@link module:core/profile/profile-plan}; this module is the I/O orchestration\n * and human formatting around it.\n */\nimport path from \"node:path\";\nimport { pathExists, readFileIfExists, writeFileAtomic } from \"../../core/fs/fs-utils.js\";\nimport { acquireLock } from \"../../core/lock/lock.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, resolveGovernanceKnobs, writeSettings } from \"../../core/store/settings.js\";\nimport {\n DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,\n filePathForSchemaSection,\n normalizeRuntimeSchemaSettings,\n} from \"../../core/schema/runtime-schema.js\";\nimport { normalizeAddTypeInput, serializeItemTypesFile } from \"../../core/schema/item-types-file.js\";\nimport { serializeStatusDefsFile } from \"../../core/schema/status-defs-file.js\";\nimport { serializeFieldsFile } from \"../../core/schema/fields-file.js\";\nimport {\n resolveNestedSettingDescriptor,\n writeNestedSettingValue,\n} from \"../../core/config/nested-settings.js\";\nimport { getActiveExtensionRegistrations, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport {\n resolveProfileCatalog,\n resolveProfileEntry,\n type ExtensionProfileContribution,\n type ProfileSourceKind,\n type ProfileTemplateOptions,\n type ProjectProfileDefinition,\n type ResolveProfileEntryResult,\n} from \"../../core/profile/profile-presets.js\";\nimport {\n describeProfileComposition,\n describeProjectProfile,\n type ProjectProfileComposition,\n} from \"../../core/profile/profile-describe.js\";\nimport {\n lintProjectProfile,\n type ProjectProfileLintFinding,\n} from \"../../core/profile/profile-lint.js\";\nimport {\n planProfileApplication,\n type ProfileApplicationPlan,\n type ProfileChangeStatus,\n type ProfileCurrentState,\n} from \"../../core/profile/profile-plan.js\";\nimport { ensureTypeFolderScaffold } from \"./schema.js\";\nimport { runTemplatesSave } from \"./templates.js\";\n\n/** Ordered `pm profile` subcommands. */\nexport const PROFILE_SUBCOMMANDS = [\"list\", \"show\", \"apply\", \"lint\"] as const;\n/**\n * Restricts profile subcommand values accepted by command, SDK, and storage contracts.\n */\nexport type ProfileSubcommand = (typeof PROFILE_SUBCOMMANDS)[number];\n\nconst PROFILE_TYPES_LOCK_ID = \"schema-types\";\nconst PROFILE_STATUSES_LOCK_ID = \"schema-statuses\";\nconst PROFILE_FIELDS_LOCK_ID = \"schema-fields\";\n\n/**\n * Per-dimension counts summarizing how much a profile stages. Aliases the shared\n * {@link ProjectProfileComposition} so the CLI result shape and the core describe\n * primitive never drift.\n */\nexport type ProfileComposition = ProjectProfileComposition;\n\n/** A single profile entry in the `pm profile list` payload. */\nexport interface ProfileListEntry {\n /** Profile name. */\n name: string;\n /** Display title. */\n title: string;\n /** One-line archetype summary. */\n summary: string;\n /** Whether the profile is core-baked or contributed by an active extension. */\n source: ProfileSourceKind;\n /** Owning package/extension name for an extension profile; omitted for builtins. */\n package?: string;\n /** Per-dimension counts. */\n composition: ProfileComposition;\n}\n\n/** Result of `pm profile list`. */\nexport interface ProfileListResult {\n /** Discriminant for the profile result union. */\n action: \"list\";\n /** Built-in profiles in canonical order followed by active extension profiles. */\n profiles: ProfileListEntry[];\n /** Non-fatal merge warnings (built-in shadowing attempts, duplicate names). */\n warnings: string[];\n /** ISO timestamp the result was produced. */\n generated_at: string;\n}\n\n/** Result of `pm profile show <name>`. */\nexport interface ProfileShowResult {\n /** Discriminant for the profile result union. */\n action: \"show\";\n /** Profile name. */\n name: string;\n /** Display title. */\n title: string;\n /** One-line archetype summary. */\n summary: string;\n /** Whether the profile is core-baked or contributed by an active extension. */\n source: ProfileSourceKind;\n /** Owning package/extension name for an extension profile; omitted for builtins. */\n package?: string;\n /** Per-dimension counts. */\n composition: ProfileComposition;\n /** Item type names the profile registers. */\n types: string[];\n /** Custom status ids. */\n statuses: string[];\n /** Custom field keys. */\n fields: string[];\n /** Item types governed by a staged workflow. */\n workflows: string[];\n /** Config knobs as `key=value` pairs. */\n config: string[];\n /** Template names the profile stages. */\n templates: string[];\n /** Recommended package specs with rationale. */\n packages: Array<{ spec: string; reason: string }>;\n /** Non-fatal merge warnings (built-in shadowing attempts, duplicate names). */\n warnings: string[];\n /** ISO timestamp the result was produced. */\n generated_at: string;\n}\n\n/** Per-dimension change summary in an apply result. */\nexport interface ProfileApplyDimension {\n /** Entry keys that were newly created. */\n added: string[];\n /** Entry keys whose stored value was overwritten. */\n updated: string[];\n /** Entry keys already current (no write). */\n unchanged: string[];\n}\n\n/** Result of `pm profile apply <name>`. */\nexport interface ProfileApplyResult {\n /** Discriminant for the profile result union. */\n action: \"apply\";\n /** Applied profile name. */\n name: string;\n /** Display title. */\n title: string;\n /** True when changes were persisted; false for `--dry-run` or a no-op. */\n applied: boolean;\n /** True when `--dry-run` previewed without writing. */\n dry_run: boolean;\n /** True when at least one dimension stages an add/update. */\n changed: boolean;\n /** Item-type change summary. */\n types: ProfileApplyDimension;\n /** Status change summary. */\n statuses: ProfileApplyDimension;\n /** Field change summary. */\n fields: ProfileApplyDimension;\n /** Workflow change summary. */\n workflows: ProfileApplyDimension;\n /** Config-knob change summary. */\n config: ProfileApplyDimension;\n /** Template change summary. */\n templates: ProfileApplyDimension;\n /** Advisory package recommendations with install status. */\n packages: Array<{ spec: string; reason: string; status: \"installed\" | \"recommended\" }>;\n /** Deduped on-write hook + advisory warnings. */\n warnings: string[];\n /** ISO timestamp the result was produced. */\n generated_at: string;\n}\n\n/** Result of `pm profile lint [name]`. */\nexport interface ProfileLintResult {\n /** Discriminant for the profile result union. */\n action: \"lint\";\n /** Linted profile name. */\n name: string;\n /** Display title. */\n title: string;\n /** Whether the profile is core-baked or contributed by an active extension. */\n source: ProfileSourceKind;\n /** Owning package/extension name for an extension profile; omitted for builtins. */\n package?: string;\n /** True when the profile produced no error-severity findings. */\n ok: boolean;\n /** Count of error-severity findings. */\n error_count: number;\n /** Count of warning-severity findings. */\n warning_count: number;\n /** Every graded consistency finding in dimension order. */\n findings: ProjectProfileLintFinding[];\n /** Non-fatal catalog merge warnings (built-in shadowing attempts, duplicate names). */\n warnings: string[];\n /** ISO timestamp the result was produced. */\n generated_at: string;\n}\n\n/** Discriminated union of every `pm profile` result shape. */\nexport type ProfileResult = ProfileListResult | ProfileShowResult | ProfileApplyResult | ProfileLintResult;\n\n/* c8 ignore start -- profile command I/O orchestration and formatting is covered by profile integration workflows; the idempotent diff is unit-tested in core/profile/profile-plan. */\n\n/**\n * Collects the profiles contributed by active extensions, mapping the live\n * registration registry onto the resolver's contribution shape. Returns an empty\n * list when extensions are disabled or none registered a profile.\n */\nfunction collectExtensionProfileContributions(): ExtensionProfileContribution[] {\n const registrations = getActiveExtensionRegistrations();\n if (registrations === null) {\n return [];\n }\n return registrations.profiles.map((entry) => ({ name: entry.name, profile: entry.profile }));\n}\n\n/**\n * Lists every available profile — the built-in archetypes followed by profiles\n * contributed by active extensions — with per-dimension composition counts and\n * the source each came from. Surfaces any non-fatal merge collisions as warnings.\n */\nexport function runProfileList(): ProfileListResult {\n const { profiles, warnings } = resolveProfileCatalog(collectExtensionProfileContributions());\n return {\n action: \"list\",\n profiles: profiles.map((resolved) => ({\n name: resolved.definition.name,\n title: resolved.definition.title,\n summary: resolved.definition.summary,\n source: resolved.source,\n ...(resolved.package !== undefined ? { package: resolved.package } : {}),\n composition: describeProfileComposition(resolved.definition),\n })),\n warnings,\n generated_at: nowIso(),\n };\n}\n\n/**\n * Shows the full composition of a single profile, resolved across built-in and\n * extension-contributed archetypes. Throws a USAGE error for a missing or unknown\n * profile name.\n */\nexport function runProfileShow(name: string | undefined): ProfileShowResult {\n let entry: ResolveProfileEntryResult;\n try {\n entry = resolveProfileEntry(name, collectExtensionProfileContributions());\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n const { resolved } = entry;\n return {\n action: \"show\",\n ...describeProjectProfile(resolved.definition),\n source: resolved.source,\n ...(resolved.package !== undefined ? { package: resolved.package } : {}),\n warnings: entry.warnings,\n generated_at: nowIso(),\n };\n}\n\n/**\n * Lints a single profile, resolved across built-in and extension-contributed\n * archetypes, returning every graded consistency finding plus any catalog merge\n * warnings. Throws a USAGE error for a missing or unknown profile name. This is\n * the read-only author-time validation surface; it never writes to the tracker.\n */\nexport function runProfileLint(name: string | undefined): ProfileLintResult {\n let entry: ResolveProfileEntryResult;\n try {\n entry = resolveProfileEntry(name, collectExtensionProfileContributions());\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n const { resolved } = entry;\n const report = lintProjectProfile(resolved.definition);\n return {\n action: \"lint\",\n name: resolved.definition.name,\n title: resolved.definition.title,\n source: resolved.source,\n ...(resolved.package !== undefined ? { package: resolved.package } : {}),\n ok: report.ok,\n error_count: report.errorCount,\n warning_count: report.warningCount,\n findings: report.findings,\n warnings: entry.warnings,\n generated_at: nowIso(),\n };\n}\n\n/** Options accepted by {@link runProfileApply}. */\nexport interface ProfileApplyCommandOptions {\n /** Preview the diff without writing any files. */\n dryRun?: boolean;\n /** Mutation author override. */\n author?: string;\n /** Force ownership/lock override. */\n force?: boolean;\n}\n\nfunction templateFilePath(pmRoot: string, name: string): string {\n return path.join(pmRoot, \"templates\", `${name}.json`);\n}\n\nasync function readStoredTemplateOptions(pmRoot: string, name: string): Promise<ProfileTemplateOptions | undefined> {\n const raw = await readFileIfExists(templateFilePath(pmRoot, name));\n if (raw === null) {\n return undefined;\n }\n try {\n const parsed = JSON.parse(raw) as unknown;\n if (parsed !== null && typeof parsed === \"object\" && !Array.isArray(parsed)) {\n const options = (parsed as { options?: unknown }).options;\n if (options !== null && typeof options === \"object\" && !Array.isArray(options)) {\n return options as ProfileTemplateOptions;\n }\n }\n } catch {\n // A malformed template file is treated as absent so apply re-stages it.\n }\n return undefined;\n}\n\nasync function loadProfileCurrentState(\n pmRoot: string,\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>,\n settings: Awaited<ReturnType<typeof readSettings>>,\n profile: ProjectProfileDefinition,\n): Promise<ProfileCurrentState> {\n const templates = new Map<string, ProfileTemplateOptions>();\n for (const template of profile.templates) {\n const stored = await readStoredTemplateOptions(pmRoot, template.name);\n if (stored !== undefined) {\n templates.set(template.name, stored);\n }\n }\n return {\n typesRaw: await readFileIfExists(filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types)),\n statusesRaw: await readFileIfExists(\n filePathForSchemaSection(pmRoot, schema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses),\n ),\n fieldsRaw: await readFileIfExists(\n filePathForSchemaSection(pmRoot, schema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields),\n ),\n workflows: settings.schema.type_workflows ?? [],\n settings,\n templates,\n // Package recommendations are advisory: apply never installs and never\n // inspects install state, so every recommendation surfaces as \"recommended\".\n // The planner still supports an install-state set for SDK consumers that want\n // richer reporting.\n installedPackages: new Set<string>(),\n };\n}\n\nfunction dimensionFrom(changes: ReadonlyArray<{ key: string; status: ProfileChangeStatus }>): ProfileApplyDimension {\n const added: string[] = [];\n const updated: string[] = [];\n const unchanged: string[] = [];\n for (const change of changes) {\n (change.status === \"add\" ? added : change.status === \"update\" ? updated : unchanged).push(change.key);\n }\n return { added, updated, unchanged };\n}\n\nfunction buildApplyResult(\n profile: ProjectProfileDefinition,\n plan: ProfileApplicationPlan,\n applied: boolean,\n dryRun: boolean,\n warnings: string[],\n): ProfileApplyResult {\n return {\n action: \"apply\",\n name: profile.name,\n title: profile.title,\n applied,\n dry_run: dryRun,\n changed: plan.changed,\n types: dimensionFrom(plan.types.changes),\n statuses: dimensionFrom(plan.statuses.changes),\n fields: dimensionFrom(plan.fields.changes),\n workflows: dimensionFrom(plan.workflows.changes.map((change) => ({ key: change.type, status: change.status }))),\n config: dimensionFrom(plan.config.changes),\n templates: dimensionFrom(plan.templates.changes.map((change) => ({ key: change.name, status: change.status }))),\n packages: plan.packages,\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nasync function assertProfileTrackerInitialized(pmRoot: string): Promise<void> {\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n}\n\nfunction resolveProfileForCommand(name: string | undefined): { profile: ProjectProfileDefinition; warnings: string[] } {\n try {\n const entry = resolveProfileEntry(name, collectExtensionProfileContributions());\n return {\n profile: entry.resolved.definition,\n warnings: entry.warnings,\n };\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n}\n\n/**\n * Applies a profile to the initialized tracker, or previews the idempotent diff\n * when `dryRun` is set. Schema files are written under their respective locks;\n * config and workflows are persisted to settings; templates are staged via the\n * shared template writer. Re-applying an already-applied profile performs zero\n * writes. Throws a USAGE error for an unknown profile or an invalid config knob,\n * and a NOT_FOUND error when the tracker is not initialized.\n */\nexport async function runProfileApply(\n name: string | undefined,\n options: ProfileApplyCommandOptions,\n global: GlobalOptions,\n): Promise<ProfileApplyResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await assertProfileTrackerInitialized(pmRoot);\n\n // Catalog-level merge warnings (e.g. an extension profile shadowed by a\n // built-in) seed the result so `apply` surfaces them the same way `list`\n // does, rather than silently swallowing them.\n const resolvedProfile = resolveProfileForCommand(name);\n const profile = resolvedProfile.profile;\n const mergeWarnings = resolvedProfile.warnings;\n\n const dryRun = options.dryRun === true;\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n\n if (dryRun) {\n const state = await loadProfileCurrentState(pmRoot, schema, settings, profile);\n const plan = planProfile(profile, state);\n return buildApplyResult(profile, plan, false, true, [...mergeWarnings]);\n }\n\n const author = resolveAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n const force = Boolean(options.force);\n const warnings: string[] = [...mergeWarnings];\n\n // Acquire all three schema locks inside the try so a later acquisition that\n // throws (held/stale lock without --force) still releases the earlier ones in\n // finally rather than stranding them until TTL expiry.\n const releasers: Array<() => Promise<void>> = [];\n const acquire = async (lockId: string): Promise<void> => {\n releasers.push(\n await acquireLock(\n pmRoot,\n lockId,\n settings.locks.ttl_seconds,\n author,\n force,\n governance.force_required_for_stale_lock,\n settings.locks.wait_ms,\n ),\n );\n };\n let plan: ProfileApplicationPlan;\n try {\n await acquire(PROFILE_TYPES_LOCK_ID);\n await acquire(PROFILE_STATUSES_LOCK_ID);\n await acquire(PROFILE_FIELDS_LOCK_ID);\n const state = await loadProfileCurrentState(pmRoot, schema, settings, profile);\n plan = planProfile(profile, state);\n\n if (plan.types.changed) {\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n await writeFileAtomic(typesPath, serializeItemTypesFile(plan.types.file));\n const stagedNames = new Set(profile.types.map((type) => normalizeAddTypeInput(type).name));\n const stagedDefinitions = plan.types.file.definitions.filter((definition) => stagedNames.has(definition.name));\n await ensureTypeFolderScaffold(pmRoot, stagedDefinitions, warnings, \"profile:apply-type-folder\");\n warnings.push(...(await runActiveOnWriteHooks({ path: typesPath, scope: \"project\", op: \"profile:apply-types\" })));\n }\n if (plan.statuses.changed) {\n const statusesPath = filePathForSchemaSection(pmRoot, schema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses);\n await writeFileAtomic(statusesPath, serializeStatusDefsFile(plan.statuses.file));\n warnings.push(...(await runActiveOnWriteHooks({ path: statusesPath, scope: \"project\", op: \"profile:apply-statuses\" })));\n }\n if (plan.fields.changed) {\n const fieldsPath = filePathForSchemaSection(pmRoot, schema.files.fields, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.fields);\n await writeFileAtomic(fieldsPath, serializeFieldsFile(plan.fields.file));\n warnings.push(...(await runActiveOnWriteHooks({ path: fieldsPath, scope: \"project\", op: \"profile:apply-fields\" })));\n }\n if (plan.config.changed || plan.workflows.changed) {\n for (const change of plan.config.changes) {\n if (change.status === \"unchanged\") {\n continue;\n }\n const descriptor = resolveNestedSettingDescriptor(change.key);\n if (descriptor !== undefined) {\n writeNestedSettingValue(settings as unknown as Record<string, unknown>, descriptor, change.value);\n }\n }\n settings.schema.type_workflows = plan.workflows.result;\n await writeSettings(pmRoot, settings, \"profile:apply-config\");\n }\n for (const change of plan.templates.changes) {\n if (change.status === \"unchanged\") {\n continue;\n }\n await runTemplatesSave(change.name, { ...change.options }, global);\n }\n } finally {\n // Release in reverse acquisition order; only locks actually acquired are\n // present. Each release is best-effort so one rejecting release never strands\n // the remaining locks (a failed release falls back to TTL expiry).\n for (const release of releasers.reverse()) {\n try {\n await release();\n } catch {\n // Ignore: a failed lock release is non-fatal and self-heals at TTL.\n }\n }\n }\n\n return buildApplyResult(profile, plan, plan.changed, false, warnings);\n}\n\n// planProfileApplication can throw a plain Error for an invalid config knob; map\n// it to a USAGE exit code consistently across the dry-run and apply paths.\nfunction planProfile(profile: ProjectProfileDefinition, state: ProfileCurrentState): ProfileApplicationPlan {\n try {\n return planProfileApplication(profile, state);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n}\n\nfunction formatDimensionLine(label: string, dimension: ProfileApplyDimension): string | undefined {\n const segments: string[] = [];\n if (dimension.added.length > 0) {\n segments.push(`+${dimension.added.join(\", \")}`);\n }\n if (dimension.updated.length > 0) {\n segments.push(`~${dimension.updated.join(\", \")}`);\n }\n if (segments.length === 0) {\n return undefined;\n }\n return ` ${label}: ${segments.join(\" \")}`;\n}\n\n/**\n * Renders the `pm profile list` result as human-readable text.\n */\nexport function formatProfileListHuman(result: ProfileListResult): string {\n const lines = [\"Project profiles:\"];\n for (const profile of result.profiles) {\n const origin = profile.source === \"extension\" ? ` [${profile.package ?? \"extension\"}]` : \"\";\n lines.push(` ${profile.name} — ${profile.title}: ${profile.summary}${origin}`);\n }\n for (const warning of result.warnings) {\n lines.push(` warning: ${warning}`);\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Renders the `pm profile show` result as human-readable text.\n */\nexport function formatProfileShowHuman(result: ProfileShowResult): string {\n const origin = result.source === \"extension\" ? ` [${result.package ?? \"extension\"}]` : \"\";\n const lines = [`${result.name} — ${result.title}${origin}`, result.summary, \"\"];\n lines.push(`types: ${result.types.join(\", \") || \"(none)\"}`);\n lines.push(`statuses: ${result.statuses.join(\", \") || \"(none)\"}`);\n lines.push(`fields: ${result.fields.join(\", \") || \"(none)\"}`);\n lines.push(`workflows: ${result.workflows.join(\", \") || \"(none)\"}`);\n lines.push(`config: ${result.config.join(\", \") || \"(none)\"}`);\n lines.push(`templates: ${result.templates.join(\", \") || \"(none)\"}`);\n lines.push(`packages: ${result.packages.map((pkg) => pkg.spec).join(\", \") || \"(none)\"}`);\n for (const warning of result.warnings) {\n lines.push(`warning: ${warning}`);\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Renders the `pm profile lint` result as human-readable text: a one-line verdict\n * followed by each finding prefixed with its severity, code, and dimension.\n */\nexport function formatProfileLintHuman(result: ProfileLintResult): string {\n const origin = result.source === \"extension\" ? ` [${result.package ?? \"extension\"}]` : \"\";\n // Catalog merge warnings are rendered below alongside lint-finding warnings, so\n // fold them into the headline count to avoid an \"ok (0 warnings)\" verdict that\n // is immediately followed by `warning:` lines.\n const totalWarningCount = result.warning_count + result.warnings.length;\n const verdict = result.ok\n ? `Profile ${result.name}${origin}: ok (${totalWarningCount} warning${totalWarningCount === 1 ? \"\" : \"s\"})`\n : `Profile ${result.name}${origin}: ${result.error_count} error${result.error_count === 1 ? \"\" : \"s\"}, ${totalWarningCount} warning${totalWarningCount === 1 ? \"\" : \"s\"}`;\n const lines = [verdict];\n for (const finding of result.findings) {\n const target = finding.target !== undefined ? ` (${finding.target})` : \"\";\n lines.push(` ${finding.severity} [${finding.code}] ${finding.dimension}${target}: ${finding.message}`);\n }\n for (const warning of result.warnings) {\n lines.push(` warning: ${warning}`);\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Renders the `pm profile apply` result as human-readable text, including the\n * staged diff and any package recommendations.\n */\nexport function formatProfileApplyHuman(result: ProfileApplyResult): string {\n const mode = result.dry_run ? \"dry-run\" : result.applied ? \"applied\" : \"no changes\";\n const lines = [`Profile ${result.name} (${mode})`];\n if (!result.changed) {\n lines.push(\" already up to date\");\n } else {\n for (const [label, dimension] of [\n [\"types\", result.types],\n [\"statuses\", result.statuses],\n [\"fields\", result.fields],\n [\"workflows\", result.workflows],\n [\"config\", result.config],\n [\"templates\", result.templates],\n ] as const) {\n const line = formatDimensionLine(label, dimension);\n if (line !== undefined) {\n lines.push(line);\n }\n }\n }\n const recommended = result.packages.filter((pkg) => pkg.status === \"recommended\");\n if (recommended.length > 0) {\n lines.push(` recommended packages: ${recommended.map((pkg) => pkg.spec).join(\", \")}`);\n }\n for (const warning of result.warnings) {\n lines.push(` warning: ${warning}`);\n }\n return lines.join(\"\\n\");\n}\n\n/* c8 ignore stop */\n"],
5
- "mappings": "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",
6
- "names": ["global", "plan"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../../cli/register-list-query.ts", "../../../../../../../../core/output/tabular.ts"],
4
- "sourcesContent": ["/**\n * @module cli/register-list-query\n *\n * Provides CLI runtime support for Register List Query.\n */\nimport { Option, type Command } from \"commander\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { renderRowsAsCsv, renderRowsAsTable } from \"../core/output/tabular.js\";\nimport type { ItemStatus } from \"../types/index.js\";\nimport {\n getGlobalOptions,\n normalizeAggregateOptions,\n normalizeActivityOptions,\n normalizeContextOptions,\n normalizeListOptions,\n normalizeNextOptions,\n normalizeSearchKeywordsInput,\n normalizeSearchOptions,\n printActivityJsonStream,\n printError,\n printListJsonStream,\n printResult,\n resolveActivityStreamMode,\n writeStdout,\n} from \"./registration-helpers.js\";\n\n\n\n/**\n * Documents the register list query commands options payload exchanged by command, SDK, and package integrations.\n */\nexport interface RegisterListQueryCommandsOptions {\n commandFilter?: Set<string>;\n}\n\nfunction shouldRegisterListQueryCommand(commandName: string, commandFilter?: Set<string>): boolean {\n if (!commandFilter || commandFilter.size === 0) {\n return true;\n }\n if (commandName === \"context\") {\n return commandFilter.has(\"context\") || commandFilter.has(\"ctx\");\n }\n return commandFilter.has(commandName);\n}\n\ntype ReadCommandOutputFormat = \"json\" | \"toon\";\n\ntype ListOutputFormat = \"csv\" | \"table\" | \"json\" | \"toon\";\n\n/**\n * Parses the `pm list --format` value into a supported render mode. csv/table\n * are human export modes; json/toon override the machine output format. Returns\n * undefined when no `--format` was supplied so the global output format applies.\n */\nfunction parseListFormat(rawFormat: unknown): ListOutputFormat | undefined {\n if (rawFormat === undefined) {\n return undefined;\n }\n if (typeof rawFormat !== \"string\") {\n throw new PmCliError(\"List --format must be one of csv|table|json|toon\", EXIT_CODE.USAGE);\n }\n const normalized = rawFormat.trim().toLowerCase();\n if (normalized === \"csv\" || normalized === \"table\" || normalized === \"json\" || normalized === \"toon\") {\n return normalized;\n }\n throw new PmCliError(\"List --format must be one of csv|table|json|toon\", EXIT_CODE.USAGE);\n}\n\nfunction resolveReadCommandOutputFormat(\n commandLabel: string,\n rawFormat: unknown,\n globalOptions: ReturnType<typeof getGlobalOptions>,\n): ReturnType<typeof getGlobalOptions> {\n if (rawFormat === undefined) {\n return globalOptions;\n }\n if (typeof rawFormat !== \"string\") {\n throw new PmCliError(`${commandLabel} --format must be one of json|toon`, EXIT_CODE.USAGE);\n }\n const normalized = rawFormat.trim().toLowerCase() as ReadCommandOutputFormat;\n if (normalized !== \"json\" && normalized !== \"toon\") {\n throw new PmCliError(`${commandLabel} --format must be one of json|toon`, EXIT_CODE.USAGE);\n }\n if (globalOptions.json === true && normalized === \"toon\") {\n throw new PmCliError(`${commandLabel} cannot combine --json with --format toon`, EXIT_CODE.USAGE);\n }\n return {\n ...globalOptions,\n json: normalized === \"json\",\n };\n}\n\nfunction applyDefaultBriefListMode(\n listOptions: ReturnType<typeof normalizeListOptions>,\n defaultBrief: boolean | undefined,\n): void {\n if (\n defaultBrief === true &&\n listOptions.includeBody !== true &&\n listOptions.compact !== true &&\n listOptions.brief !== true &&\n listOptions.full !== true &&\n listOptions.fields === undefined\n ) {\n listOptions.brief = true;\n }\n}\n\nfunction addHiddenOption(command: Command, flags: string, description: string): void {\n command.addOption(new Option(flags, description).hideHelp());\n}\n\nfunction registerContentAndGovernanceFilters(command: Command): void {\n command\n .option(\"--has-notes\", \"Show only items that have notes\")\n .option(\"--has-learnings\", \"Show only items that have learnings\")\n .option(\"--has-files\", \"Show only items that have linked files\")\n .option(\"--has-docs\", \"Show only items that have linked docs\")\n .option(\"--has-tests\", \"Show only items that have linked tests\")\n .option(\"--has-comments\", \"Show only items that have comments\")\n .option(\"--has-deps\", \"Show only items that have dependencies\")\n .option(\"--has-body\", \"Show only items that have a non-empty body\")\n .option(\"--has-linked-command\", \"Show only items whose linked tests carry a runnable command\")\n .option(\"--no-notes\", \"Show only items that have no notes\")\n .option(\"--no-learnings\", \"Show only items that have no learnings\")\n .option(\"--no-files\", \"Show only items that have no linked files\")\n .option(\"--filter-files-missing\", \"Alias for --no-files\")\n .option(\"--no-docs\", \"Show only items that have no linked docs\")\n .option(\"--filter-docs-missing\", \"Alias for --no-docs\")\n .option(\"--no-tests\", \"Show only items that have no linked tests\")\n .option(\"--no-comments\", \"Show only items that have no comments\")\n .option(\"--no-deps\", \"Show only items that have no dependencies\")\n .option(\"--empty-body\", \"Show only items with an empty body\")\n .option(\"--no-linked-command\", \"Show only items whose linked tests carry no runnable command\")\n .option(\"--filter-reviewer-missing\", \"Show only items missing reviewer\")\n .option(\"--filter-risk-missing\", \"Show only items missing risk\")\n .option(\"--filter-confidence-missing\", \"Show only items missing confidence\")\n .option(\"--filter-sprint-missing\", \"Show only items missing sprint\")\n .option(\"--filter-release-missing\", \"Show only items missing release\");\n}\n\nasync function runRegisteredListCommand(params: {\n name: string;\n status?: ItemStatus;\n excludeTerminal?: boolean;\n defaultBrief?: boolean;\n options: Record<string, unknown>;\n actionCommand: Command;\n}): Promise<void> {\n const globalOptions = getGlobalOptions(params.actionCommand);\n const startedAt = Date.now();\n const listOptions = normalizeListOptions(params.options);\n applyDefaultBriefListMode(listOptions, params.defaultBrief);\n if (params.excludeTerminal) listOptions.excludeTerminal = true;\n const { runList } = await import(\"./commands/list.js\");\n const result = await runList(params.status, listOptions, globalOptions);\n const streamMode = params.options.stream === true;\n const listFormat = parseListFormat(params.options.format);\n const tabular = listFormat === \"csv\" || listFormat === \"table\";\n const effectiveGlobal =\n listFormat === \"json\" || listFormat === \"toon\"\n ? resolveReadCommandOutputFormat(\"List\", params.options.format, globalOptions)\n : globalOptions;\n if (streamMode && !effectiveGlobal.json) {\n throw new PmCliError(\"--stream requires --json output mode.\", EXIT_CODE.USAGE);\n }\n if (tabular && streamMode) {\n throw new PmCliError(\"--format csv|table cannot be combined with --stream (line-delimited JSON).\", EXIT_CODE.USAGE);\n }\n if (tabular) {\n const rows = result.items as Array<Record<string, unknown>>;\n const rendered = listFormat === \"csv\" ? renderRowsAsCsv(rows) : renderRowsAsTable(rows);\n if (!effectiveGlobal.quiet && rendered.length > 0) {\n writeStdout(`${rendered}\\n`);\n }\n } else if (streamMode) {\n printListJsonStream(params.name, result, effectiveGlobal);\n } else {\n printResult(result, effectiveGlobal);\n }\n if (globalOptions.profile) {\n printError(`profile:command=${params.name} took_ms=${Date.now() - startedAt}`);\n }\n}\n\ninterface ListCommandDescriptor {\n name: string;\n description: string;\n status?: ItemStatus;\n excludeTerminal?: boolean;\n allowStatusFilter?: boolean;\n defaultBrief?: boolean;\n}\n\nfunction registerListCommand(program: Command, descriptor: ListCommandDescriptor): void {\n const { name, description, status, excludeTerminal, allowStatusFilter, defaultBrief } = descriptor;\n const command = program.command(name).description(description);\n if (allowStatusFilter) {\n command.option(\"--status <value>\", \"Filter by status (use all for no status restriction)\");\n }\n command\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--deadline-before <value>\", \"Filter by deadline upper bound (ISO/date string or relative)\")\n .option(\"--deadline-after <value>\", \"Filter by deadline lower bound (ISO/date string or relative)\")\n .option(\"--updated-after <value>\", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. \"-2h\"/\"-7d\" for the past). \"Changed since my last window\" → --updated-after <ISO>')\n .option(\"--updated-before <value>\", \"Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-after <value>\", \"Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-before <value>\", \"Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--ids <value>\", \"Filter by explicit item IDs (comma-separated or repeatable)\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned\")\n .option(\"--parent <value>\", \"Filter by parent item ID\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\")\n .option(\"--filter-ac-missing\", \"Show only items missing acceptance_criteria\")\n .option(\"--filter-estimates-missing\", \"Show only items missing estimated_minutes\")\n .option(\"--filter-resolution-missing\", \"Show only terminal items missing resolution\")\n .option(\"--filter-metadata-missing\", \"Show only items missing any tracked metadata (AC, estimate, or resolution)\")\n .option(\"--limit <n>\", \"Limit returned item count\")\n .option(\"--offset <n>\", \"Skip the first n matching rows before limit is applied\")\n .option(\"--no-truncate\", \"Return every matched row, overriding any --limit (alias: --all)\")\n .option(\"--include-body\", \"Include item body in each returned list row\")\n .option(\"--compact\", \"Render compact list projection fields (mutually exclusive with --brief/--full/--fields)\")\n .option(\"--brief\", \"Ultra-compact output: id, status, type, title only (agent-optimized, mutually exclusive with --compact/--full/--fields)\")\n .option(\"--full\", \"Render full list projection fields (mutually exclusive with --compact/--brief/--fields)\")\n .option(\n \"--fields <value>\",\n \"Render custom comma-separated list fields (mutually exclusive with --compact/--brief/--full; valid: --fields id,title)\",\n )\n .option(\"--sort <value>\", \"Sort field: priority|deadline|updated_at|created_at|title|parent (aliases: updated, created)\")\n .option(\"--order <value>\", \"Sort order: asc|desc (requires --sort)\")\n .option(\"--tree\", \"Render rows in parent/child tree order\")\n .option(\"--tree-depth <n>\", \"Maximum recursion depth with --tree (0 keeps root rows only)\")\n .option(\"--format <value>\", \"Output render mode: csv|table (human export) or json|toon (machine output override)\")\n .option(\"--stream\", \"Emit line-delimited JSON rows (requires --json)\");\n registerContentAndGovernanceFilters(command);\n command.action(async (options: Record<string, unknown>, actionCommand) => {\n await runRegisteredListCommand({ name, status, excludeTerminal, defaultBrief, options, actionCommand });\n });\n // Positive alias for --no-truncate (Commander stores the negation as truncate=false).\n addHiddenOption(command, \"--all\", \"Alias for --no-truncate\");\n // Hidden pure snake_case underscore-duplicate alias (kept parse-functional).\n addHiddenOption(command, \"--tags <value>\", \"Alias for --tag\");\n addHiddenOption(command, \"--assignee_filter <value>\", \"Alias for --assignee-filter\");\n addHiddenOption(command, \"--tree_depth <n>\", \"Alias for --tree-depth\");\n // Singular alias so `--filter-estimate-missing` works (matches update-many spelling).\n addHiddenOption(command, \"--filter-estimate-missing\", \"Alias for --filter-estimates-missing\");\n}\n\nasync function runAggregateAction(options: Record<string, unknown>, command: Command): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runAggregate } = await import(\"./commands/aggregate.js\");\n const result = await runAggregate(normalizeAggregateOptions(options), globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=aggregate took_ms=${Date.now() - startedAt}`);\n }\n}\n\nasync function runContextAction(options: Record<string, unknown>, actionCommand: Command): Promise<void> {\n const globalOptions = getGlobalOptions(actionCommand);\n const startedAt = Date.now();\n const normalized = normalizeContextOptions(options);\n const commands = await import(\"./commands/context.js\");\n const result = await commands.runContext(normalized, globalOptions);\n const outputFormat = commands.resolveContextOutputFormat(normalized, globalOptions);\n if (outputFormat === \"markdown\") {\n if (!globalOptions.quiet) {\n writeStdout(`${commands.renderContextMarkdown(result)}\\n`);\n }\n } else {\n printResult(result, {\n ...globalOptions,\n json: outputFormat === \"json\",\n });\n }\n if (globalOptions.profile) {\n printError(`profile:command=context took_ms=${Date.now() - startedAt}`);\n }\n}\n\nasync function runNextAction(options: Record<string, unknown>, actionCommand: Command): Promise<void> {\n const globalOptions = getGlobalOptions(actionCommand);\n const startedAt = Date.now();\n const commands = await import(\"./commands/next.js\");\n const nextOptions = normalizeNextOptions(options);\n const result = await commands.runNext(nextOptions, globalOptions);\n const outputFormat = commands.resolveNextOutputFormat(nextOptions, globalOptions);\n if (outputFormat === \"markdown\") {\n if (!globalOptions.quiet) {\n writeStdout(`${commands.renderNextMarkdown(result)}\\n`);\n }\n } else {\n printResult(result, { ...globalOptions, json: outputFormat === \"json\" });\n }\n if (globalOptions.profile) {\n printError(`profile:command=next took_ms=${Date.now() - startedAt}`);\n }\n}\n\nasync function runSearchAction(keywords: string[], options: Record<string, unknown>, command: Command): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runSearch } = await import(\"./commands/search.js\");\n const searchOptions = normalizeSearchOptions(options);\n const result = await runSearch(\n normalizeSearchKeywordsInput(keywords),\n {\n ...searchOptions,\n mode:\n typeof searchOptions.mode === \"string\" && searchOptions.mode.trim().length > 0\n ? searchOptions.mode\n : \"keyword\",\n },\n globalOptions,\n );\n printResult(result, resolveReadCommandOutputFormat(\"Search\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=search took_ms=${Date.now() - startedAt}`);\n }\n}\n\nasync function runEvalAction(options: Record<string, unknown>, command: Command): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runEval } = await import(\"./commands/eval.js\");\n const result = await runEval(\n {\n mode: typeof options.mode === \"string\" ? options.mode : undefined,\n k: typeof options.k === \"string\" ? options.k : undefined,\n failUnder: typeof options.failUnder === \"string\" ? options.failUnder : undefined,\n queries: typeof options.queries === \"string\" ? options.queries : undefined,\n format: typeof options.format === \"string\" ? options.format : undefined,\n },\n globalOptions,\n );\n printResult(result, resolveReadCommandOutputFormat(\"Eval\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=eval took_ms=${Date.now() - startedAt}`);\n }\n if (!result.passed) {\n throw new PmCliError(\n `Eval gate failed: aggregate nDCG@${result.k} ${result.aggregate.ndcg} is below --fail-under ${result.fail_under}`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n}\n\nasync function runGetAction(id: string, options: Record<string, unknown>, command: Command): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runGet } = await import(\"./commands/get.js\");\n const result = await runGet(\n id,\n globalOptions,\n {\n depth: typeof options.depth === \"string\" ? options.depth : undefined,\n fields: typeof options.fields === \"string\" ? options.fields : undefined,\n full: Boolean(options.full),\n tree: options.tree === true,\n treeDepth:\n typeof options.treeDepth === \"string\"\n ? options.treeDepth\n : typeof options.tree_depth === \"string\"\n ? options.tree_depth\n : undefined,\n },\n );\n printResult(result, resolveReadCommandOutputFormat(\"Get\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=get took_ms=${Date.now() - startedAt}`);\n }\n}\n\nasync function runHistoryAction(id: string, options: Record<string, unknown>, command: Command): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n if (options.compact === true && options.full === true) {\n throw new PmCliError(\"History projection options are mutually exclusive. Use either --compact or --full.\", EXIT_CODE.USAGE);\n }\n const field = typeof options.field === \"string\" ? options.field : undefined;\n const { runHistory } = await import(\"./commands/history.js\");\n const result = await runHistory(\n id,\n {\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n compact: options.full === true ? false : true,\n diff: Boolean(options.diff) || field !== undefined,\n field,\n verify: Boolean(options.verify),\n },\n globalOptions,\n );\n printResult(result, resolveReadCommandOutputFormat(\"History\", options.format, globalOptions));\n if (globalOptions.profile) {\n printError(`profile:command=history took_ms=${Date.now() - startedAt}`);\n }\n}\n\nasync function runActivityAction(options: Record<string, unknown>, command: Command): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n if (options.compact === true && options.full === true) {\n throw new PmCliError(\"Activity projection options are mutually exclusive. Use either --compact or --full.\", EXIT_CODE.USAGE);\n }\n const normalized = normalizeActivityOptions(options);\n const { runActivity } = await import(\"./commands/activity.js\");\n const result = await runActivity(normalized, globalOptions);\n const streamMode = resolveActivityStreamMode(options.stream);\n if (streamMode && !globalOptions.json) {\n throw new PmCliError(\"--stream requires --json output mode.\", EXIT_CODE.USAGE);\n }\n if (streamMode) {\n printActivityJsonStream(result, normalized, globalOptions);\n } else {\n printResult(result, globalOptions);\n }\n if (globalOptions.profile) {\n printError(`profile:command=activity took_ms=${Date.now() - startedAt}`);\n }\n}\n\n/**\n * Implements register list query commands for the public runtime surface of this module.\n */\nexport function registerListQueryCommands(program: Command, options?: RegisterListQueryCommandsOptions): void {\n const commandFilter = options?.commandFilter;\n const shouldRegister = (commandName: string): boolean => shouldRegisterListQueryCommand(commandName, commandFilter);\n const listCommandDescriptors: ListCommandDescriptor[] = [\n { name: \"list\", description: \"List active items with optional filters.\", excludeTerminal: true, allowStatusFilter: true, defaultBrief: true },\n { name: \"list-all\", description: \"List all items with optional filters.\", excludeTerminal: false, allowStatusFilter: true },\n { name: \"list-draft\", description: \"List draft items with optional filters.\", status: \"draft\" },\n { name: \"list-open\", description: \"List open items with optional filters.\", status: \"open\", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },\n { name: \"list-in-progress\", description: \"List in-progress items with optional filters.\", status: \"in_progress\", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },\n { name: \"list-blocked\", description: \"List blocked items with optional filters.\", status: \"blocked\", excludeTerminal: false, allowStatusFilter: false, defaultBrief: true },\n { name: \"list-closed\", description: \"List closed items with optional filters.\", status: \"closed\" },\n { name: \"list-canceled\", description: \"List canceled items with optional filters.\", status: \"canceled\" },\n ];\n for (const descriptor of listCommandDescriptors) {\n if (shouldRegister(descriptor.name)) {\n registerListCommand(program, descriptor);\n }\n }\n\n if (shouldRegister(\"aggregate\")) {\n const aggregateCommand = program\n .command(\"aggregate\")\n .description(\"Aggregate grouped item counts for governance queries.\")\n .option(\n \"--group-by <value>\",\n \"Comma-separated group-by fields (supported: parent,type,priority,status,assignee,tags,sprint,release)\",\n )\n .option(\"--count\", \"Return grouped counts (default behavior)\")\n .option(\"--completion\", \"Add open/in_progress/closed/other counts and completion_pct per group\")\n .option(\"--sum <field>\", \"Sum a numeric field per group\")\n .option(\"--avg <field>\", \"Average a numeric field per group\")\n .option(\"--include-unparented\", \"Include unparented rows when grouping by parent\")\n .option(\"--status <value>\", \"Filter by item status\")\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--deadline-before <value>\", \"Filter by deadline upper bound (ISO/date string or relative)\")\n .option(\"--deadline-after <value>\", \"Filter by deadline lower bound (ISO/date string or relative)\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned\")\n .option(\"--parent <value>\", \"Filter by parent item ID\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\");\n // Hidden pure snake_case underscore-duplicate aliases (kept parse-functional).\n addHiddenOption(aggregateCommand, \"--include_unparented\", \"Alias for --include-unparented\");\n addHiddenOption(aggregateCommand, \"--assignee_filter <value>\", \"Alias for --assignee-filter\");\n aggregateCommand.action(runAggregateAction);\n }\n\n if (shouldRegister(\"context\")) {\n const contextCommand = program\n .command(\"context\")\n .alias(\"ctx\")\n .description(\"Show a token-efficient project context snapshot for next-work decisions.\")\n .option(\"--date <value>\", \"Anchor date/time for agenda window calculations (ISO/date string or relative)\")\n .option(\"--from <value>\", \"Agenda lower bound (ISO/date string or relative)\")\n .option(\"--to <value>\", \"Agenda upper bound (ISO/date string or relative)\")\n .option(\"--past\", \"Include past agenda entries in bounded windows\")\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\")\n .option(\"--parent <id>\", \"Scope the snapshot to one item's subtree (the item plus all descendants)\")\n .option(\"--limit <n>\", \"Limit focus and agenda rows per section\")\n .option(\"--format <value>\", \"Context output format override: markdown|toon|json\")\n .option(\"--depth <value>\", \"Context depth: brief|standard|deep|full (full = every section, no per-section cap)\")\n .option(\"--section <value...>\", \"Include specific sections (repeatable; overrides --depth)\")\n .option(\"--fields <value>\", \"Project focus rows to a comma-separated field subset (e.g. id,title,priority)\")\n .option(\"--activity-limit <n>\", \"Limit recent activity entries (default: settings or 10)\")\n .option(\"--stale-threshold <value>\", \"Staleness cutoff in days (e.g. 7 or 7d; default: settings or 7)\");\n // Hidden pure snake_case underscore-duplicate alias (kept parse-functional).\n addHiddenOption(contextCommand, \"--assignee_filter <value>\", \"Alias for --assignee-filter\");\n contextCommand.action(runContextAction);\n }\n\n if (shouldRegister(\"next\")) {\n const nextCommand = program\n .command(\"next\")\n .description(\"Recommend the next actionable (unblocked, ready) work item with rationale + blocked companion.\")\n .option(\"--type <value>\", \"Filter candidate items by type\")\n .option(\"--tag <value>\", \"Filter candidate items by tag\")\n .option(\"--priority <value>\", \"Filter candidate items by priority\")\n .option(\"--assignee <value>\", \"Filter candidate items by assignee\")\n .option(\"--assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned\")\n .option(\"--sprint <value>\", \"Filter candidate items by sprint\")\n .option(\"--release <value>\", \"Filter candidate items by release\")\n .option(\"--parent <id>\", \"Scope to one item's subtree (the item plus all descendants)\")\n .option(\"--limit <n>\", \"Limit ready rows (default: 5; non-positive falls back to default)\")\n .option(\"--blocked-limit <n>\", \"Limit blocked rows (default: same as --limit)\")\n .option(\"--ready-only\", \"Omit the blocked companion list\")\n .option(\"--format <value>\", \"Next output format override: markdown|toon|json\");\n addHiddenOption(nextCommand, \"--assignee_filter <value>\", \"Alias for --assignee-filter\");\n addHiddenOption(nextCommand, \"--blocked_limit <n>\", \"Alias for --blocked-limit\");\n addHiddenOption(nextCommand, \"--ready_only\", \"Alias for --ready-only\");\n nextCommand.action(runNextAction);\n }\n\n if (shouldRegister(\"search\")) {\n const searchCommand = program\n .command(\"search\")\n .argument(\"<keywords...>\", \"Keyword query tokens\")\n .description(\n \"Search items with keyword, semantic, or hybrid retrieval. Inline field:value tokens \" +\n \"(tag:/status:/type:/priority:) in the query are parsed as filters, e.g. 'auth tag:area:search status:open'.\",\n )\n .option(\"--mode <value>\", \"Search mode: keyword|semantic|hybrid (default: keyword)\")\n .option(\"--semantic\", \"Shorthand for --mode semantic\")\n .option(\"--hybrid\", \"Shorthand for --mode hybrid\")\n .option(\n \"--match-mode <value>\",\n \"Token match mode: and|or|exact (default: or with all-terms ranking bonus; and = hard-require every token; exact = exact phrase)\",\n )\n .option(\n \"--min-score <value>\",\n \"Per-query minimum score threshold (finite number >= 0); overrides settings search.score_threshold for this query only\",\n )\n .option(\"--count\", \"Return only the count of matching items (post-filter/threshold, pre-limit); skips hit rows\")\n .option(\n \"--semantic-weight <value>\",\n \"Override hybrid semantic weight for this query (0..1); invalid values fall back to settings\",\n )\n .option(\"--include-linked\", \"Include linked files, docs, and tests in the searchable corpus\")\n .option(\"--title-exact\", \"Require exact normalized title match for the full query string\")\n .option(\"--phrase-exact\", \"Require exact normalized phrase match in searchable text\")\n .option(\"--highlight\", \"Emit per-field matched-text snippets (wrapped in «…») on each hit; off by default\")\n .option(\"--status <value>\", \"Filter by status before query (all, open/closed/canceled aliases, or configured status id; CSV)\")\n .option(\"--type <value>\", \"Filter by item type\")\n .option(\"--tag <value>\", \"Filter by tag\")\n .option(\"--priority <value>\", \"Filter by priority\")\n .option(\"--deadline-before <value>\", \"Filter by deadline upper bound (ISO/date string or relative)\")\n .option(\"--deadline-after <value>\", \"Filter by deadline lower bound (ISO/date string or relative)\")\n .option(\"--updated-after <value>\", 'Filter by updated_at lower bound: ISO timestamp or signed relative (e.g. \"-2h\"/\"-7d\" for the past)')\n .option(\"--updated-before <value>\", \"Filter by updated_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-after <value>\", \"Filter by created_at lower bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--created-before <value>\", \"Filter by created_at upper bound: ISO timestamp or signed relative (-2h/+1d)\")\n .option(\"--assignee <value>\", \"Filter by assignee\")\n .option(\"--sprint <value>\", \"Filter by sprint\")\n .option(\"--release <value>\", \"Filter by release\")\n .option(\"--parent <value>\", \"Filter by parent item ID\")\n .option(\"--compact\", \"Render compact search hits (default; mutually exclusive with --full/--fields)\")\n .option(\"--full\", \"Render full search hits with nested item payloads (mutually exclusive with --compact/--fields)\")\n .option(\n \"--fields <value>\",\n \"Render custom comma-separated search hit fields (mutually exclusive with --compact/--full; valid: --fields id,title,score; invalid: --full --fields id,title)\",\n )\n .option(\"--format <value>\", \"Search output format override: json|toon\")\n .option(\"--limit <n>\", \"Limit returned item count\");\n registerContentAndGovernanceFilters(searchCommand);\n searchCommand.action(runSearchAction);\n addHiddenOption(searchCommand, \"--tags <value>\", \"Alias for --tag\");\n }\n\n if (shouldRegister(\"eval\")) {\n program\n .command(\"eval\")\n .description(\n \"Evaluate search relevance against a curated golden-query set: reports nDCG@k, MRR@k, \" +\n \"precision@k, and recall@k per query plus the macro average. Use --fail-under as a CI gate.\",\n )\n .option(\"--mode <value>\", \"Default retrieval mode for queries without their own: keyword|semantic|hybrid (default: keyword)\")\n .option(\"--k <n>\", \"Metric cutoff @k (positive integer; default: 10)\")\n .option(\"--fail-under <value>\", \"Exit non-zero when aggregate nDCG@k falls below this threshold (0..1); CI gate\")\n .option(\"--queries <path>\", \"Path to the golden-query JSON file (default: <pmRoot>/search/eval-queries.json)\")\n .option(\"--format <value>\", \"Eval output format override: json|toon\")\n .action(runEvalAction);\n }\n\n if (shouldRegister(\"get\")) {\n const getCommand = program\n .command(\"get\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--depth <value>\", \"Detail depth: brief|standard|deep|full (full aliases deep; default: standard)\")\n .option(\"--full\", \"Explicit full item read; equivalent to --depth deep (mutually exclusive with --depth/--fields)\")\n .option(\"--fields <value>\", \"Render custom comma-separated item metadata fields (for example: --fields id,title,status,parent,type)\")\n .option(\"--tree\", \"Include descendants rooted at the requested item\")\n .option(\"--tree-depth <n>\", \"Maximum subtree depth for --tree descendants\")\n .option(\"--format <value>\", \"Get output format override: json|toon\")\n .description(\"Show item details by ID.\")\n .action(runGetAction);\n addHiddenOption(getCommand, \"--tree_depth <n>\", \"Alias for --tree-depth\");\n }\n\n if (shouldRegister(\"history\")) {\n program\n .command(\"history\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--limit <n>\", \"Return only the latest n history entries\")\n .option(\"--compact\", \"Condensed output: show entry index, timestamp, op, author, patch count, and changed fields\")\n .option(\"--full\", \"Show full history entries with JSON Patch payloads\")\n .option(\"--diff\", \"Include per-entry field-level before/after value diffs computed by replaying the history chain\")\n .option(\"--field <name>\", \"With --diff, show only entries that changed this field (implies --diff)\")\n .option(\"--verify\", \"Verify hash chain and replay integrity for the full history stream\")\n .option(\"--format <value>\", \"History output format override: json|toon\")\n .description(\"Show item history entries.\")\n .action(runHistoryAction);\n }\n\n if (shouldRegister(\"activity\")) {\n program\n .command(\"activity\")\n .option(\"--id <value>\", \"Filter by item ID\")\n .option(\"--op <value>\", \"Filter by history operation\")\n .option(\"--author <value>\", \"Filter by history author\")\n .option(\"--from <value>\", \"Lower timestamp bound (ISO/date string or relative)\")\n .option(\"--to <value>\", \"Upper timestamp bound (ISO/date string or relative)\")\n .option(\"--limit <n>\", \"Return only the latest n activity entries\")\n .option(\"--compact\", \"Condensed output: show only id, op, ts, author, msg per entry\")\n .option(\"--full\", \"Show full activity entries with JSON Patch payloads\")\n .option(\"--stream [mode]\", \"Emit line-delimited JSON rows (requires --json). Optional mode: rows|ndjson|jsonl\")\n .description(\"Show recent activity across items.\")\n .action(runActivityAction);\n }\n}\n\nexport const _testOnlyRegisterListQuery = {\n resolveReadCommandOutputFormat,\n parseListFormat,\n};\n", "/**\n * @module core/output/tabular\n *\n * Renders projected item rows as CSV or fixed-width text tables for human\n * export. These are presentation-only modes (GH-154): agents continue to read\n * the structured `--json`/TOON output, while humans piping `pm list` into a\n * spreadsheet or terminal get a directly consumable shape.\n */\n\n/** A projected row: a flat map of column name to scalar/collection cell value. */\nexport type TabularRow = Record<string, unknown>;\n\n/**\n * Collects the ordered union of column names across every row, preserving the\n * order in which each key is first encountered so the rendered columns mirror\n * the projection field order rather than an arbitrary object-key order.\n */\nfunction resolveColumns(rows: TabularRow[]): string[] {\n const columns: string[] = [];\n const seen = new Set<string>();\n for (const row of rows) {\n for (const key of Object.keys(row)) {\n if (!seen.has(key)) {\n seen.add(key);\n columns.push(key);\n }\n }\n }\n return columns;\n}\n\n/**\n * Converts a single cell value to its flat string form. Arrays join with `;`\n * (spreadsheet-friendly and unambiguous against the CSV `,` delimiter), objects\n * serialize to compact JSON, and null/undefined render as an empty cell.\n */\nfunction renderCell(value: unknown): string {\n if (value === null || value === undefined) {\n return \"\";\n }\n if (Array.isArray(value)) {\n return value.map((entry) => renderCell(entry)).join(\";\");\n }\n if (typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return String(value);\n}\n\n/**\n * Escapes a CSV field per RFC 4180: values containing the delimiter, a quote,\n * or a line break are wrapped in double quotes with embedded quotes doubled.\n */\nfunction escapeCsvField(value: string): string {\n if (/[\",\\r\\n]/.test(value)) {\n return `\"${value.replace(/\"/g, '\"\"')}\"`;\n }\n return value;\n}\n\n/**\n * Renders rows as RFC 4180 CSV with a header row of column names. Returns an\n * empty string when there are no rows so callers emit nothing rather than a\n * stray blank line.\n */\nexport function renderRowsAsCsv(rows: TabularRow[]): string {\n if (rows.length === 0) {\n return \"\";\n }\n const columns = resolveColumns(rows);\n const lines = [columns.map((column) => escapeCsvField(column)).join(\",\")];\n for (const row of rows) {\n lines.push(columns.map((column) => escapeCsvField(renderCell(row[column]))).join(\",\"));\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Renders rows as a fixed-width text table: a header row, a dashed separator,\n * and one padded row per item. Columns are widened to fit their widest cell so\n * the output stays aligned in a monospace terminal. Returns an empty string\n * when there are no rows.\n */\nexport function renderRowsAsTable(rows: TabularRow[]): string {\n if (rows.length === 0) {\n return \"\";\n }\n const columns = resolveColumns(rows);\n const cells = rows.map((row) => columns.map((column) => renderCell(row[column])));\n const widths = columns.map((column, index) =>\n Math.max(column.length, ...cells.map((rowCells) => rowCells[index].length)),\n );\n const pad = (value: string, index: number): string => value.padEnd(widths[index]);\n const lines = [columns.map((column, index) => pad(column, index)).join(\" | \")];\n lines.push(widths.map((width) => \"-\".repeat(width)).join(\"-+-\"));\n for (const rowCells of cells) {\n lines.push(rowCells.map((value, index) => pad(value, index)).join(\" | \"));\n }\n return lines.join(\"\\n\");\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }