@unbrained/pm-cli 2026.6.30 → 2026.7.2

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 (628) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +26 -0
  3. package/dist/cli/bootstrap-args.js +89 -79
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commander-usage.d.ts +2 -0
  6. package/dist/cli/commander-usage.js +58 -47
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/aggregate.js +102 -79
  9. package/dist/cli/commands/aggregate.js.map +1 -1
  10. package/dist/cli/commands/calendar.js +339 -303
  11. package/dist/cli/commands/calendar.js.map +1 -1
  12. package/dist/cli/commands/close-many.js +89 -68
  13. package/dist/cli/commands/close-many.js.map +1 -1
  14. package/dist/cli/commands/close.js +157 -129
  15. package/dist/cli/commands/close.js.map +1 -1
  16. package/dist/cli/commands/comments-audit.js +50 -42
  17. package/dist/cli/commands/comments-audit.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +443 -879
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/context.js +365 -287
  22. package/dist/cli/commands/context.js.map +1 -1
  23. package/dist/cli/commands/contracts.js +352 -238
  24. package/dist/cli/commands/contracts.js.map +1 -1
  25. package/dist/cli/commands/create.js +483 -434
  26. package/dist/cli/commands/create.js.map +1 -1
  27. package/dist/cli/commands/dedupe-audit.js +46 -39
  28. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  29. package/dist/cli/commands/dedupe-merge.js +88 -69
  30. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  31. package/dist/cli/commands/extension/bundled-catalog.js +59 -46
  32. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  33. package/dist/cli/commands/extension/doctor.js +129 -78
  34. package/dist/cli/commands/extension/doctor.js.map +1 -1
  35. package/dist/cli/commands/extension/managed-state.js +101 -57
  36. package/dist/cli/commands/extension/managed-state.js.map +1 -1
  37. package/dist/cli/commands/extension/scaffold.d.ts +7 -0
  38. package/dist/cli/commands/extension/scaffold.js +214 -186
  39. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  40. package/dist/cli/commands/extension.d.ts +6 -1
  41. package/dist/cli/commands/extension.js +1034 -902
  42. package/dist/cli/commands/extension.js.map +1 -1
  43. package/dist/cli/commands/get.js +114 -81
  44. package/dist/cli/commands/get.js.map +1 -1
  45. package/dist/cli/commands/health.d.ts +17 -0
  46. package/dist/cli/commands/health.js +446 -307
  47. package/dist/cli/commands/health.js.map +1 -1
  48. package/dist/cli/commands/history-compact.js +209 -140
  49. package/dist/cli/commands/history-compact.js.map +1 -1
  50. package/dist/cli/commands/history-redact.js +162 -119
  51. package/dist/cli/commands/history-redact.js.map +1 -1
  52. package/dist/cli/commands/history-repair.js +120 -85
  53. package/dist/cli/commands/history-repair.js.map +1 -1
  54. package/dist/cli/commands/init.d.ts +8 -2
  55. package/dist/cli/commands/init.js +263 -162
  56. package/dist/cli/commands/init.js.map +1 -1
  57. package/dist/cli/commands/list-filter-shared.js +55 -48
  58. package/dist/cli/commands/list-filter-shared.js.map +1 -1
  59. package/dist/cli/commands/list.js +152 -102
  60. package/dist/cli/commands/list.js.map +1 -1
  61. package/dist/cli/commands/next.js +49 -32
  62. package/dist/cli/commands/next.js.map +1 -1
  63. package/dist/cli/commands/plan.js +373 -298
  64. package/dist/cli/commands/plan.js.map +1 -1
  65. package/dist/cli/commands/recurrence-parsers.js +43 -25
  66. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  67. package/dist/cli/commands/reindex.d.ts +21 -5
  68. package/dist/cli/commands/reindex.js +345 -205
  69. package/dist/cli/commands/reindex.js.map +1 -1
  70. package/dist/cli/commands/restore.d.ts +8 -7
  71. package/dist/cli/commands/restore.js +105 -69
  72. package/dist/cli/commands/restore.js.map +1 -1
  73. package/dist/cli/commands/schema.js +33 -30
  74. package/dist/cli/commands/schema.js.map +1 -1
  75. package/dist/cli/commands/search.d.ts +10 -2
  76. package/dist/cli/commands/search.js +595 -536
  77. package/dist/cli/commands/search.js.map +1 -1
  78. package/dist/cli/commands/telemetry.js +98 -87
  79. package/dist/cli/commands/telemetry.js.map +1 -1
  80. package/dist/cli/commands/test-all.js +237 -168
  81. package/dist/cli/commands/test-all.js.map +1 -1
  82. package/dist/cli/commands/test.d.ts +6 -5
  83. package/dist/cli/commands/test.js +530 -464
  84. package/dist/cli/commands/test.js.map +1 -1
  85. package/dist/cli/commands/update-many.js +57 -42
  86. package/dist/cli/commands/update-many.js.map +1 -1
  87. package/dist/cli/commands/update.d.ts +1 -1
  88. package/dist/cli/commands/update.js +764 -747
  89. package/dist/cli/commands/update.js.map +1 -1
  90. package/dist/cli/commands/validate.d.ts +18 -1
  91. package/dist/cli/commands/validate.js +466 -343
  92. package/dist/cli/commands/validate.js.map +1 -1
  93. package/dist/cli/error-guidance.js +399 -357
  94. package/dist/cli/error-guidance.js.map +1 -1
  95. package/dist/cli/extension-command-options.js +48 -21
  96. package/dist/cli/extension-command-options.js.map +1 -1
  97. package/dist/cli/main.d.ts +47 -0
  98. package/dist/cli/main.js +428 -341
  99. package/dist/cli/main.js.map +1 -1
  100. package/dist/cli/migration-gates.js +22 -45
  101. package/dist/cli/migration-gates.js.map +1 -1
  102. package/dist/cli/register-list-query.js +94 -105
  103. package/dist/cli/register-list-query.js.map +1 -1
  104. package/dist/cli/register-mutation.js +400 -416
  105. package/dist/cli/register-mutation.js.map +1 -1
  106. package/dist/cli/register-operations.js +86 -66
  107. package/dist/cli/register-operations.js.map +1 -1
  108. package/dist/cli/register-setup.js +120 -101
  109. package/dist/cli/register-setup.js.map +1 -1
  110. package/dist/cli/registration-helpers.js +117 -122
  111. package/dist/cli/registration-helpers.js.map +1 -1
  112. package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-CUC4JY3U.js} +9 -9
  113. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  114. package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-DKUTRY6R.js} +109 -85
  115. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  116. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SW5PNGCS.js} +108 -84
  117. package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  118. package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-H32VOR2Y.js} +6 -6
  119. package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-UBM632FK.js} +6 -6
  120. package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-2227673O.js} +158 -114
  121. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-2ASNV4DH.js} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-2CHRYUXL.js} +2 -2
  124. package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-2KWL5NPW.js} +42 -27
  125. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-36UGKF4O.js} +21 -29
  127. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-3AZUFQK6.js} +1103 -963
  129. package/dist/cli-bundle/chunks/chunk-3AZUFQK6.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-3LCUASYG.js} +2 -2
  131. package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-3Q2HBMTI.js} +2 -2
  132. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
  133. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-4NUOWFBT.js} +109 -72
  135. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  136. package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-55XRYWEG.js} +6 -6
  137. package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-5GVTFFTC.js} +150 -224
  138. package/dist/cli-bundle/chunks/chunk-5GVTFFTC.js.map +1 -0
  139. package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-5PGBHRY3.js} +41 -26
  140. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  141. package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-66Z3X7ZG.js} +261 -161
  142. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  143. package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-6ITZLD4T.js} +738 -688
  144. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-6YCYF2AI.js} +262 -162
  146. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-6ZMBJRDJ.js} +580 -467
  148. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  149. package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-7MYWF4ZX.js} +110 -73
  150. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  151. package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-7NSPKJUS.js} +716 -606
  152. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  153. package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-7TH5NMVB.js} +95 -53
  154. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  155. package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-7W4H4K26.js} +739 -689
  156. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-A6VOGKBA.js} +6 -6
  158. package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-AIAIXG7I.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-AJEBCRIY.js} +128 -126
  160. package/dist/cli-bundle/chunks/chunk-AJEBCRIY.js.map +1 -0
  161. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  162. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  163. package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-BTX5MIQF.js} +2 -2
  164. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js +809 -0
  165. package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js.map +7 -0
  166. package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-CYBDUHNO.js} +3 -3
  167. package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-CZPVDLD2.js} +4 -4
  168. package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-EMPGXBUF.js} +22 -30
  169. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-EUKTMRN3.js} +2 -2
  171. package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-FFOQHGNH.js} +6 -6
  172. package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-GFMSLORL.js} +6 -6
  173. package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-GRRG3MCT.js} +198 -189
  174. package/dist/cli-bundle/chunks/chunk-GRRG3MCT.js.map +7 -0
  175. package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-H4GRLYJS.js} +3 -3
  176. package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-HQTPRV4D.js} +6 -6
  177. package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-I66WE2HE.js} +712 -602
  178. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  179. package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-IEEJQCZ4.js} +509 -363
  180. package/dist/cli-bundle/chunks/chunk-IEEJQCZ4.js.map +7 -0
  181. package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-IG5JYZGU.js} +488 -420
  182. package/dist/cli-bundle/chunks/chunk-IG5JYZGU.js.map +7 -0
  183. package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-JMK5GCK2.js} +2 -2
  184. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-JXAUVO6X.js} +258 -169
  185. package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-JXAUVO6X.js.map} +2 -2
  186. package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-K2VYLVX4.js} +2 -2
  187. package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-KCO2EAN5.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-KIYCOJ63.js} +198 -189
  189. package/dist/cli-bundle/chunks/chunk-KIYCOJ63.js.map +1 -0
  190. package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-KLXF7NCC.js} +2 -2
  191. package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-KN3URLKS.js} +510 -364
  192. package/dist/cli-bundle/chunks/chunk-KN3URLKS.js.map +1 -0
  193. package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-LRKMWUUV.js} +2 -2
  194. package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-LTRAF2D7.js} +3 -3
  195. package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-MNBPX5JS.js} +394 -354
  196. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  197. package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-MRD4T5LF.js} +2 -2
  198. package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-N2JSWVWG.js} +4 -4
  199. package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-N3QCJS4M.js} +1105 -965
  200. package/dist/cli-bundle/chunks/chunk-N3QCJS4M.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-NRZS637N.js} +258 -169
  202. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  203. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js +799 -0
  204. package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js.map +1 -0
  205. package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-Q6K2OACU.js} +153 -90
  206. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  207. package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-Q6NXOHS6.js} +489 -421
  208. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  209. package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-QH3FSKRJ.js} +2 -2
  210. package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-RM37OPYK.js} +394 -354
  211. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  212. package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-S62UANU7.js} +3 -3
  213. package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-SPM2XLWI.js} +37 -28
  214. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  215. package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-SYNKD3ZG.js} +127 -125
  216. package/dist/cli-bundle/chunks/chunk-SYNKD3ZG.js.map +7 -0
  217. package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-SYVUU7EK.js} +581 -468
  218. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-TPOFWBMY.js} +95 -53
  220. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-TTHCEV5Q.js} +92 -77
  222. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  223. package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-U2BEEM2X.js} +3 -3
  224. package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-UGLU6Q2I.js} +91 -76
  225. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-UT73HUPC.js} +3 -3
  227. package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-UTSH5GWX.js} +4 -4
  228. package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-UWKEJMZU.js} +157 -113
  229. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  230. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
  231. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
  232. package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-W47SML5B.js} +152 -89
  233. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  234. package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-WJAMWAHZ.js} +157 -118
  235. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  236. package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-XCHUVHKU.js} +685 -544
  237. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-XEWQKDYZ.js} +685 -544
  239. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  240. package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-XTHQWXVC.js} +158 -119
  241. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  242. package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-XWGEMNBR.js} +150 -224
  243. package/dist/cli-bundle/chunks/chunk-XWGEMNBR.js.map +7 -0
  244. package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-Y4NRKBFW.js} +3 -3
  245. package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-YLZZ6T54.js} +38 -29
  246. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  247. package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-YPKFV2JR.js} +6 -6
  248. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  249. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  250. package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-ZNHEYCDD.js} +2 -2
  251. package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-ZNT7KEWE.js} +2 -2
  252. package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-SENTPZBN.js} +8 -8
  253. package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-Z7MEQCBT.js} +8 -8
  254. package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-424MX4CU.js} +7 -7
  255. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  256. package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-2IV4J2TR.js} +103 -82
  257. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  258. package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-SWY34BII.js} +102 -81
  259. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  260. package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-4FGNTSNV.js} +8 -8
  261. package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-7YS5MY5X.js} +8 -8
  262. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  263. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  264. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  265. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-LHVKJSPJ.js} +12 -12
  267. package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-ZQY54JNS.js} +12 -12
  268. package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-CP2EZJC7.js} +320 -199
  269. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  270. package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-FIZLMP7O.js} +321 -200
  271. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  272. package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-GYNQQPW2.js} +5 -5
  273. package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-TLW7JTQT.js} +5 -5
  274. package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-VSKYSOCD.js} +12 -12
  275. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  276. package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-4W5JYCEG.js} +5 -5
  277. package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-ANTOTI2I.js} +5 -5
  278. package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-HPPE6MJN.js} +5 -5
  279. package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-ZQZN54EZ.js} +5 -5
  280. package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-RPOVFMP3.js} +7 -7
  281. package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-XJNYBJGE.js} +7 -7
  282. package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-DM6JBZTS.js} +10 -10
  283. package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-RFBI5FGS.js} +10 -10
  284. package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-B3YY4WY5.js} +11 -10
  285. package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-TTSEFQTS.js} +11 -10
  286. package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-5D65CHGE.js} +7 -7
  287. package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-GPIG77EN.js} +7 -7
  288. package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-C3PEJV2C.js} +6 -6
  289. package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-ZHN7WIGX.js} +6 -6
  290. package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-D4JQ6OWN.js} +3 -3
  291. package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-VZIXDL32.js} +3 -3
  292. package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-GIBRUUOP.js} +121 -81
  293. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  294. package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-IOVAN6RU.js} +120 -80
  295. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  296. package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-L2U3AFKV.js} +437 -264
  297. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  298. package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-MM7AWXYF.js} +436 -263
  299. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  300. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  301. package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-IL7XCEX2.js} +8 -8
  302. package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HALOTOU7.js} +214 -135
  303. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  304. package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-MV25P7DM.js} +213 -134
  305. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  306. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  307. package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-VYCWQFK7.js} +9 -9
  308. package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-44MODPQF.js} +124 -84
  309. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  310. package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-CPNAOCNF.js} +123 -83
  311. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  312. package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-F27NHENZ.js} +12 -11
  313. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  314. package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-HJVDQIGY.js} +8 -8
  315. package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-XSFSUUWK.js} +8 -8
  316. package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-HPMEKCAA.js} +8 -8
  317. package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-VMPWTURB.js} +8 -8
  318. package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-ETXF2ZCN.js} +59 -37
  319. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  320. package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-QM6YJIIS.js} +60 -38
  321. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  322. package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-GDZIKGR6.js} +8 -8
  323. package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-WDDBPC4D.js} +8 -8
  324. package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-BGDR73Z6.js} +373 -279
  325. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  326. package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-C5IMM335.js} +372 -278
  327. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  328. package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-CCOKZ2IQ.js} +9 -9
  329. package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-HUCENIEQ.js} +9 -9
  330. package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-ROSNIL52.js} +80 -83
  331. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  332. package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-XN4ZRHSV.js} +79 -82
  333. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  334. package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-CFSB2MS3.js} +406 -385
  335. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  336. package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KRLAHEL2.js} +405 -384
  337. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  338. package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-4PASGJDB.js} +112 -93
  339. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  340. package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-MBN4KGUM.js} +113 -94
  341. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  342. package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-VIAWYFP5.js} +129 -104
  343. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  344. package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZCGKHDKL.js} +128 -103
  345. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  346. package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4CBWUMCX.js} +9 -9
  347. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  348. package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  349. package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  350. package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-TDGK6N3I.js} +7 -7
  351. package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-UE5KKAUX.js} +7 -7
  352. package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-FP7MEU4S.js} +10 -10
  353. package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-K4CFLQ5S.js} +10 -10
  354. package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-NJJCALEZ.js} +6 -6
  355. package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-XT6QRKQY.js} +6 -6
  356. package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-5SQ5UDXC.js} +84 -70
  357. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  358. package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-HVXFZA2U.js} +85 -71
  359. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  360. package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-UFSJ5YIO.js} +15 -14
  361. package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-YCDAUBWF.js} +15 -14
  362. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  363. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  364. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  365. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  366. package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-FK5E75AA.js} +185 -147
  367. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  368. package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-H4TGWGRN.js} +184 -146
  369. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  370. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  371. package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-Y5WQVT5O.js} +15 -15
  372. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-6YAYYRLE.js} +83 -68
  373. package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-6YAYYRLE.js.map} +2 -2
  374. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-JTKKSA7Y.js} +84 -69
  375. package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  376. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-DTAHZ236.js} +11 -10
  377. package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-DTAHZ236.js.map} +1 -1
  378. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-JUDU7YL4.js} +13 -12
  379. package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-JUDU7YL4.js.map} +1 -1
  380. package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-732RWS5W.js} +440 -319
  381. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  382. package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-W7H5TEDC.js} +441 -320
  383. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  384. package/dist/cli-bundle/main.js +986 -1500
  385. package/dist/cli-bundle/main.js.map +4 -4
  386. package/dist/core/config/nested-settings.js +89 -67
  387. package/dist/core/config/nested-settings.js.map +1 -1
  388. package/dist/core/extensions/activation-summary-markdown.js +23 -12
  389. package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
  390. package/dist/core/extensions/extension-policy.d.ts +18 -3
  391. package/dist/core/extensions/extension-policy.js +116 -106
  392. package/dist/core/extensions/extension-policy.js.map +1 -1
  393. package/dist/core/extensions/loader.js +310 -232
  394. package/dist/core/extensions/loader.js.map +1 -1
  395. package/dist/core/governance/metadata-coverage.js +20 -28
  396. package/dist/core/governance/metadata-coverage.js.map +1 -1
  397. package/dist/core/history/drift-scan.js +93 -81
  398. package/dist/core/history/drift-scan.js.map +1 -1
  399. package/dist/core/item/item-format.js +523 -410
  400. package/dist/core/item/item-format.js.map +1 -1
  401. package/dist/core/item/item-type-definition.js +14 -14
  402. package/dist/core/item/item-type-definition.js.map +1 -1
  403. package/dist/core/item/type-registry.js +87 -82
  404. package/dist/core/item/type-registry.js.map +1 -1
  405. package/dist/core/output/mutation-projection.js +42 -26
  406. package/dist/core/output/mutation-projection.js.map +1 -1
  407. package/dist/core/schema/runtime-schema.js +34 -28
  408. package/dist/core/schema/runtime-schema.js.map +1 -1
  409. package/dist/core/search/semantic-defaults.js +64 -37
  410. package/dist/core/search/semantic-defaults.js.map +1 -1
  411. package/dist/core/search/vector-stores.js +32 -17
  412. package/dist/core/search/vector-stores.js.map +1 -1
  413. package/dist/core/sentry/helpers.js +31 -28
  414. package/dist/core/sentry/helpers.js.map +1 -1
  415. package/dist/core/sentry/instrument.js +54 -43
  416. package/dist/core/sentry/instrument.js.map +1 -1
  417. package/dist/core/store/front-matter-cache.js +239 -153
  418. package/dist/core/store/front-matter-cache.js.map +1 -1
  419. package/dist/core/store/item-store.js +33 -26
  420. package/dist/core/store/item-store.js.map +1 -1
  421. package/dist/core/store/settings.js +247 -203
  422. package/dist/core/store/settings.js.map +1 -1
  423. package/dist/core/test/background-runs.js +189 -160
  424. package/dist/core/test/background-runs.js.map +1 -1
  425. package/dist/mcp/server.js +387 -367
  426. package/dist/mcp/server.js.map +1 -1
  427. package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
  428. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  429. package/dist/sdk/cli-contracts/tool-schema.js +76 -45
  430. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  431. package/dist/sdk/compose.d.ts +4 -1
  432. package/dist/sdk/compose.js +181 -115
  433. package/dist/sdk/compose.js.map +1 -1
  434. package/docs/RELEASING.md +2 -3
  435. package/package.json +2 -2
  436. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  437. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  438. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  439. package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
  440. package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +0 -1
  441. package/dist/cli-bundle/chunks/chunk-53ARXF2O.js.map +0 -7
  442. package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
  443. package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
  444. package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
  445. package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
  446. package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
  447. package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
  448. package/dist/cli-bundle/chunks/chunk-AWN4PPH5.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +0 -1
  450. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
  451. package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
  452. package/dist/cli-bundle/chunks/chunk-CHRNYKNI.js.map +0 -7
  453. package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
  454. package/dist/cli-bundle/chunks/chunk-D5LYZVGB.js.map +0 -1
  455. package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
  456. package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
  457. package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
  458. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
  459. package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
  460. package/dist/cli-bundle/chunks/chunk-FDEVKXC4.js.map +0 -1
  461. package/dist/cli-bundle/chunks/chunk-GF7EAR22.js.map +0 -7
  462. package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
  463. package/dist/cli-bundle/chunks/chunk-IHXXUIXS.js.map +0 -1
  464. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
  465. package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
  466. package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
  467. package/dist/cli-bundle/chunks/chunk-JTRKME24.js.map +0 -1
  468. package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
  469. package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
  470. package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +0 -1
  471. package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +0 -7
  472. package/dist/cli-bundle/chunks/chunk-KYDYQMNW.js.map +0 -7
  473. package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
  474. package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +0 -7
  475. package/dist/cli-bundle/chunks/chunk-QE5UFCCO.js.map +0 -1
  476. package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
  477. package/dist/cli-bundle/chunks/chunk-RPRW26NG.js.map +0 -1
  478. package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
  479. package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
  480. package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
  481. package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +0 -7
  482. package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
  483. package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
  484. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
  485. package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
  486. package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +0 -1
  487. package/dist/cli-bundle/chunks/chunk-Z55WX4IQ.js.map +0 -1
  488. package/dist/cli-bundle/chunks/chunk-Z5BM2FKQ.js.map +0 -7
  489. package/dist/cli-bundle/chunks/chunk-ZEATCVAC.js.map +0 -7
  490. package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
  491. package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +0 -1
  492. package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
  493. package/dist/cli-bundle/chunks/close-many-BFMP6HHK.js.map +0 -7
  494. package/dist/cli-bundle/chunks/close-many-CXJBOWWY.js.map +0 -1
  495. package/dist/cli-bundle/chunks/config-FIXJZEQK.js +0 -1541
  496. package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +0 -7
  497. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js +0 -1531
  498. package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +0 -1
  499. package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +0 -1
  500. package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +0 -7
  501. package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
  502. package/dist/cli-bundle/chunks/get-AWK324RS.js.map +0 -7
  503. package/dist/cli-bundle/chunks/get-VYPIICPC.js.map +0 -1
  504. package/dist/cli-bundle/chunks/health-FBCVZGSX.js.map +0 -7
  505. package/dist/cli-bundle/chunks/health-Q66C43GN.js.map +0 -1
  506. package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
  507. package/dist/cli-bundle/chunks/history-compact-2GHT32UX.js.map +0 -1
  508. package/dist/cli-bundle/chunks/history-compact-WLCQEKXS.js.map +0 -7
  509. package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
  510. package/dist/cli-bundle/chunks/history-repair-FY75IC26.js.map +0 -1
  511. package/dist/cli-bundle/chunks/history-repair-GABSDSVD.js.map +0 -7
  512. package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
  513. package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +0 -7
  514. package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +0 -1
  515. package/dist/cli-bundle/chunks/plan-DQ7G4EDC.js.map +0 -7
  516. package/dist/cli-bundle/chunks/plan-ZHKZ7JVF.js.map +0 -1
  517. package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +0 -7
  518. package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +0 -1
  519. package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +0 -7
  520. package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +0 -1
  521. package/dist/cli-bundle/chunks/register-operations-L6CYTOIH.js.map +0 -7
  522. package/dist/cli-bundle/chunks/register-operations-YAT6FUUB.js.map +0 -1
  523. package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +0 -7
  524. package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +0 -1
  525. package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
  526. package/dist/cli-bundle/chunks/telemetry-DIFPXCAT.js.map +0 -7
  527. package/dist/cli-bundle/chunks/telemetry-WTYFUPRL.js.map +0 -1
  528. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js +0 -360
  529. package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js.map +0 -7
  530. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js +0 -357
  531. package/dist/cli-bundle/chunks/test-all-XLPI4USF.js.map +0 -1
  532. package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +0 -1
  533. package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +0 -7
  534. package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
  535. package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +0 -7
  536. package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +0 -1
  537. /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-CUC4JY3U.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-WEIEMM73.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-H32VOR2Y.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-UBM632FK.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-2ASNV4DH.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-2CHRYUXL.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-3LCUASYG.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-55XRYWEG.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-A6VOGKBA.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-AIAIXG7I.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-BTX5MIQF.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-CYBDUHNO.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-CZPVDLD2.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-EUKTMRN3.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-FFOQHGNH.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-GFMSLORL.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-H4GRLYJS.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-HQTPRV4D.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-JMK5GCK2.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-K2VYLVX4.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-KCO2EAN5.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-KLXF7NCC.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-LRKMWUUV.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-LTRAF2D7.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-MRD4T5LF.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-N2JSWVWG.js.map} +0 -0
  564. /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  565. /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-S62UANU7.js.map} +0 -0
  566. /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-U2BEEM2X.js.map} +0 -0
  567. /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-UT73HUPC.js.map} +0 -0
  568. /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-UTSH5GWX.js.map} +0 -0
  569. /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  570. /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-YPKFV2JR.js.map} +0 -0
  571. /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  572. /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  573. /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-SENTPZBN.js.map} +0 -0
  574. /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-Z7MEQCBT.js.map} +0 -0
  575. /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-424MX4CU.js.map} +0 -0
  576. /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-YCWQQPDS.js.map} +0 -0
  577. /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-4FGNTSNV.js.map} +0 -0
  578. /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-7YS5MY5X.js.map} +0 -0
  579. /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-LHVKJSPJ.js.map} +0 -0
  580. /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-ZQY54JNS.js.map} +0 -0
  581. /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-GYNQQPW2.js.map} +0 -0
  582. /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-TLW7JTQT.js.map} +0 -0
  583. /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-VSKYSOCD.js.map} +0 -0
  584. /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-XTMAPS7I.js.map} +0 -0
  585. /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-4W5JYCEG.js.map} +0 -0
  586. /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-ANTOTI2I.js.map} +0 -0
  587. /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-HPPE6MJN.js.map} +0 -0
  588. /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-ZQZN54EZ.js.map} +0 -0
  589. /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-RPOVFMP3.js.map} +0 -0
  590. /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-XJNYBJGE.js.map} +0 -0
  591. /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-DM6JBZTS.js.map} +0 -0
  592. /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-RFBI5FGS.js.map} +0 -0
  593. /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-B3YY4WY5.js.map} +0 -0
  594. /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-TTSEFQTS.js.map} +0 -0
  595. /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-5D65CHGE.js.map} +0 -0
  596. /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-GPIG77EN.js.map} +0 -0
  597. /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-C3PEJV2C.js.map} +0 -0
  598. /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-ZHN7WIGX.js.map} +0 -0
  599. /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-D4JQ6OWN.js.map} +0 -0
  600. /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-VZIXDL32.js.map} +0 -0
  601. /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-DD7L7BNL.js.map} +0 -0
  602. /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-IL7XCEX2.js.map} +0 -0
  603. /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  604. /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  605. /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-F27NHENZ.js.map} +0 -0
  606. /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-HHVQQP6C.js.map} +0 -0
  607. /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-HJVDQIGY.js.map} +0 -0
  608. /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-XSFSUUWK.js.map} +0 -0
  609. /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-HPMEKCAA.js.map} +0 -0
  610. /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-VMPWTURB.js.map} +0 -0
  611. /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-GDZIKGR6.js.map} +0 -0
  612. /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-WDDBPC4D.js.map} +0 -0
  613. /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  614. /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-HUCENIEQ.js.map} +0 -0
  615. /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4CBWUMCX.js.map} +0 -0
  616. /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-5UEAGG3W.js.map} +0 -0
  617. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  618. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  619. /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-TDGK6N3I.js.map} +0 -0
  620. /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-UE5KKAUX.js.map} +0 -0
  621. /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-FP7MEU4S.js.map} +0 -0
  622. /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-K4CFLQ5S.js.map} +0 -0
  623. /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-NJJCALEZ.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-XT6QRKQY.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-UFSJ5YIO.js.map} +0 -0
  626. /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-YCDAUBWF.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-MTCFES6X.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-Y5WQVT5O.js.map} +0 -0
@@ -4,7 +4,7 @@
4
4
  * Implements the pm test all command surface and its agent-facing runtime behavior.
5
5
  */
6
6
 
7
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="09f1a3db-2f49-5603-90c2-d0f31ef8de75")}catch(e){}}();
7
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1262db4d-0528-5697-9089-54eac807996c")}catch(e){}}();
8
8
  import { pathExists } from "../../core/fs/fs-utils.js";
9
9
  import { getActiveExtensionRegistrations } from "../../core/extensions/index.js";
10
10
  import { resolveItemTypeRegistry } from "../../core/item/type-registry.js";
@@ -144,68 +144,35 @@ function emitTestAllProgress(options, message) {
144
144
  // Ignore transient stderr write failures.
145
145
  }
146
146
  }
147
- /**
148
- * Implements run test all for the public runtime surface of this module.
149
- */
150
- export async function runTestAll(options, global) {
151
- const pmRoot = resolvePmRoot(process.cwd(), global.path);
152
- if (!(await pathExists(getSettingsPath(pmRoot)))) {
153
- throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
154
- }
155
- const settings = await readSettings(pmRoot);
156
- const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
157
- const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
158
- const statusFilter = parseStatus(options.status, statusRegistry);
159
- const limitFilter = parseNonNegativeInteger(options.limit, "--limit");
160
- const offsetFilter = parseNonNegativeInteger(options.offset, "--offset") ?? 0;
161
- const allItems = await listAllFrontMatterLight(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);
162
- const statusFilteredItems = allItems
163
- .filter((item) => (statusFilter ? item.status === statusFilter : true))
164
- .sort((a, b) => a.id.localeCompare(b.id));
165
- const filteredItems = limitFilter === undefined
166
- ? statusFilteredItems.slice(offsetFilter)
167
- : statusFilteredItems.slice(offsetFilter, offsetFilter + limitFilter);
168
- const defaultTimeoutSeconds = parseTimeout(options.timeout);
169
- const sourceRoots = {
170
- projectPmRoot: pmRoot,
171
- globalPmRoot: resolveGlobalPmRoot(process.cwd()),
172
- };
173
- const runStartedAt = nowIso();
174
- const trackingEnabled = settings.testing.record_results_to_items === true;
175
- const trackingRunId = resolveTrackedRunId();
176
- const trackingAuthor = resolveAuthor(undefined, settings.author_default);
177
- const trackingAttemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();
178
- const trackingParsedAttempt = trackingAttemptRaw ? Number.parseInt(trackingAttemptRaw, 10) : Number.NaN;
179
- const trackingResumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();
180
- const trackingWarnings = [];
181
- const results = [];
182
- const seenTestKeys = new Set();
183
- let passed = 0;
184
- let failed = 0;
185
- let skipped = 0;
186
- let linkedTests = 0;
187
- const failureCategories = countFailureCategories([]);
147
+ async function collectTestAllItemTests(filteredItems, global, pmRoot) {
188
148
  const itemTests = [];
149
+ let linkedTests = 0;
189
150
  for (const item of filteredItems) {
190
- const readResult = await runTest(item.id, {
191
- run: false,
192
- }, {
151
+ const readResult = await runTest(item.id, { run: false }, {
193
152
  ...global,
194
153
  path: pmRoot,
195
154
  });
196
155
  linkedTests += readResult.tests.length;
197
156
  itemTests.push({ item, tests: readResult.tests });
198
157
  }
199
- emitTestAllProgress(options, `selection items=${filteredItems.length} linked_tests=${linkedTests}` +
200
- `${statusFilter ? ` status=${statusFilter}` : ""}` +
201
- `${limitFilter === undefined ? "" : ` limit=${limitFilter}`}` +
202
- `${offsetFilter > 0 ? ` offset=${offsetFilter}` : ""}`);
203
- const failOnEmptyTestRunTriggered = options.failOnEmptyTestRun === true && linkedTests === 0;
204
- if (failOnEmptyTestRunTriggered) {
205
- failed += 1;
206
- failureCategories.empty_run += 1;
207
- trackingWarnings.push(`empty_linked_test_selection:items=${filteredItems.length};linked_tests=0;fail_on_empty_test_run=true`);
208
- }
158
+ return { itemTests, linkedTests };
159
+ }
160
+ async function selectTestAllItems(params) {
161
+ const statusRegistry = resolveRuntimeStatusRegistry(params.settings.schema);
162
+ const typeRegistry = resolveItemTypeRegistry(params.settings, getActiveExtensionRegistrations());
163
+ const statusFilter = parseStatus(params.options.status, statusRegistry);
164
+ const limitFilter = parseNonNegativeInteger(params.options.limit, "--limit");
165
+ const offsetFilter = parseNonNegativeInteger(params.options.offset, "--offset") ?? 0;
166
+ const allItems = await listAllFrontMatterLight(params.pmRoot, params.settings.item_format, typeRegistry.type_to_folder, undefined, params.settings.schema);
167
+ const statusFilteredItems = allItems
168
+ .filter((item) => (statusFilter ? item.status === statusFilter : true))
169
+ .sort((a, b) => a.id.localeCompare(b.id));
170
+ const filteredItems = limitFilter === undefined
171
+ ? statusFilteredItems.slice(offsetFilter)
172
+ : statusFilteredItems.slice(offsetFilter, offsetFilter + limitFilter);
173
+ return { filteredItems, statusFilter, limitFilter, offsetFilter };
174
+ }
175
+ function buildEffectiveTimeoutByKey(itemTests) {
209
176
  const effectiveTimeoutByKey = new Map();
210
177
  for (const { tests } of itemTests) {
211
178
  for (const test of tests) {
@@ -217,133 +184,235 @@ export async function runTestAll(options, global) {
217
184
  effectiveTimeoutByKey.set(key, maxTimeoutSeconds(effectiveTimeoutByKey.get(key), test.timeout_seconds));
218
185
  }
219
186
  }
220
- for (const [itemIndex, { item, tests }] of itemTests.entries()) {
221
- emitTestAllProgress(options, `item ${itemIndex + 1}/${itemTests.length} start id=${item.id} linked_tests=${tests.length}`);
222
- const testsToRun = [];
223
- const keyedTests = tests.map((test) => {
224
- const key = buildLinkedTestKey(test);
225
- const duplicate = seenTestKeys.has(key);
226
- if (!duplicate) {
227
- seenTestKeys.add(key);
228
- const effectiveTimeoutSeconds = effectiveTimeoutByKey.get(key);
229
- testsToRun.push(effectiveTimeoutSeconds === undefined ? test : { ...test, timeout_seconds: effectiveTimeoutSeconds });
230
- }
231
- return { test, key, duplicate };
232
- });
233
- const executedResults = testsToRun.length > 0
234
- ? await runLinkedTests(testsToRun, defaultTimeoutSeconds, {
235
- progress: options.progress,
236
- sourceRoots,
237
- envSet: options.envSet,
238
- envClear: options.envClear,
239
- sharedHostSafe: options.sharedHostSafe,
240
- pmContext: options.pmContext,
241
- overrideLinkedPmContext: options.overrideLinkedPmContext,
242
- failOnContextMismatch: options.failOnContextMismatch,
243
- failOnEmptyTestRun: options.failOnEmptyTestRun,
244
- requireAssertionsForPm: options.requireAssertionsForPm,
245
- checkContext: options.checkContext,
246
- autoPmContext: options.autoPmContext,
247
- })
248
- : [];
249
- let executedIndex = 0;
250
- const runResults = keyedTests.map(({ test, key, duplicate }) => {
251
- if (!duplicate) {
252
- const executed = executedResults[executedIndex];
253
- executedIndex += 1;
254
- return executed;
255
- }
256
- return {
257
- command: test.command,
258
- path: test.path,
259
- status: "skipped",
260
- error: `Duplicate linked test skipped (key=${key}).`,
261
- };
262
- });
263
- const summary = countStatuses(runResults);
264
- const itemFailureCategories = countFailureCategories(runResults);
265
- mergeFailureCategoryCounts(failureCategories, itemFailureCategories);
266
- passed += summary.passed;
267
- failed += summary.failed;
268
- skipped += summary.skipped;
269
- if (trackingEnabled) {
270
- try {
271
- await appendTrackedTestRunSummary({
272
- pmRoot,
273
- settings,
274
- itemId: item.id,
275
- author: trackingAuthor,
276
- message: `Track test-all run summary (${trackingRunId})`,
277
- entry: {
278
- run_id: trackingRunId,
279
- kind: "test-all",
280
- status: summary.failed > 0 || (options.failOnSkipped === true && summary.skipped > 0) ? "failed" : "passed",
281
- started_at: runStartedAt,
282
- finished_at: nowIso(),
283
- recorded_at: nowIso(),
284
- attempt: Number.isFinite(trackingParsedAttempt) && trackingParsedAttempt >= 1 ? trackingParsedAttempt : undefined,
285
- resumed_from: trackingResumedFrom && trackingResumedFrom.length > 0 ? trackingResumedFrom : undefined,
286
- passed: summary.passed,
287
- failed: summary.failed,
288
- skipped: summary.skipped,
289
- items: 1,
290
- linked_tests: tests.length,
291
- fail_on_skipped_triggered: options.failOnSkipped === true && summary.skipped > 0 ? true : undefined,
292
- },
293
- });
294
- }
295
- catch (error) {
296
- trackingWarnings.push(`test_result_tracking_failed:${item.id}:${formatTrackingError(error)}`);
297
- }
187
+ return effectiveTimeoutByKey;
188
+ }
189
+ async function runTestAllItem(entry, context) {
190
+ const testsToRun = [];
191
+ const keyedTests = entry.tests.map((test) => {
192
+ const key = buildLinkedTestKey(test);
193
+ const duplicate = context.seenTestKeys.has(key);
194
+ if (!duplicate) {
195
+ context.seenTestKeys.add(key);
196
+ const effectiveTimeoutSeconds = context.effectiveTimeoutByKey.get(key);
197
+ testsToRun.push(effectiveTimeoutSeconds === undefined ? test : { ...test, timeout_seconds: effectiveTimeoutSeconds });
198
+ }
199
+ return { test, key, duplicate };
200
+ });
201
+ const executedResults = testsToRun.length > 0
202
+ ? await runLinkedTests(testsToRun, context.defaultTimeoutSeconds, {
203
+ progress: context.options.progress,
204
+ sourceRoots: context.sourceRoots,
205
+ envSet: context.options.envSet,
206
+ envClear: context.options.envClear,
207
+ sharedHostSafe: context.options.sharedHostSafe,
208
+ pmContext: context.options.pmContext,
209
+ overrideLinkedPmContext: context.options.overrideLinkedPmContext,
210
+ failOnContextMismatch: context.options.failOnContextMismatch,
211
+ failOnEmptyTestRun: context.options.failOnEmptyTestRun,
212
+ requireAssertionsForPm: context.options.requireAssertionsForPm,
213
+ checkContext: context.options.checkContext,
214
+ autoPmContext: context.options.autoPmContext,
215
+ })
216
+ : [];
217
+ let executedIndex = 0;
218
+ const runResults = keyedTests.map(({ test, key, duplicate }) => {
219
+ if (!duplicate) {
220
+ const executed = executedResults[executedIndex];
221
+ executedIndex += 1;
222
+ return executed;
298
223
  }
299
- results.push({
300
- ok: summary.failed === 0 && !(options.failOnSkipped === true && summary.skipped > 0),
301
- id: item.id,
302
- status: item.status,
303
- test_count: tests.length,
224
+ return {
225
+ command: test.command,
226
+ path: test.path,
227
+ status: "skipped",
228
+ error: `Duplicate linked test skipped (key=${key}).`,
229
+ };
230
+ });
231
+ const summary = countStatuses(runResults);
232
+ const failureCategories = countFailureCategories(runResults);
233
+ const trackingWarnings = await appendTestAllItemTracking(entry, summary, context);
234
+ return {
235
+ passed: summary.passed,
236
+ failed: summary.failed,
237
+ skipped: summary.skipped,
238
+ trackingWarnings,
239
+ failureCategories,
240
+ result: {
241
+ ok: summary.failed === 0 && !(context.options.failOnSkipped === true && summary.skipped > 0),
242
+ id: entry.item.id,
243
+ status: entry.item.status,
244
+ test_count: entry.tests.length,
304
245
  passed: summary.passed,
305
246
  failed: summary.failed,
306
247
  skipped: summary.skipped,
307
248
  run_results: runResults,
308
- failure_categories: itemFailureCategories,
249
+ failure_categories: failureCategories,
250
+ },
251
+ };
252
+ }
253
+ async function appendTestAllItemTracking(entry, summary, context) {
254
+ if (!context.trackingEnabled) {
255
+ return [];
256
+ }
257
+ try {
258
+ await appendTrackedTestRunSummary({
259
+ pmRoot: context.pmRoot,
260
+ settings: context.settings,
261
+ itemId: entry.item.id,
262
+ author: context.trackingAuthor,
263
+ message: `Track test-all run summary (${context.trackingRunId})`,
264
+ entry: {
265
+ run_id: context.trackingRunId,
266
+ kind: "test-all",
267
+ status: summary.failed > 0 || (context.options.failOnSkipped === true && summary.skipped > 0) ? "failed" : "passed",
268
+ started_at: context.runStartedAt,
269
+ finished_at: nowIso(),
270
+ recorded_at: nowIso(),
271
+ attempt: context.trackingAttempt,
272
+ resumed_from: context.trackingResumedFrom,
273
+ passed: summary.passed,
274
+ failed: summary.failed,
275
+ skipped: summary.skipped,
276
+ items: 1,
277
+ linked_tests: entry.tests.length,
278
+ fail_on_skipped_triggered: context.options.failOnSkipped === true && summary.skipped > 0 ? true : undefined,
279
+ },
309
280
  });
310
- emitTestAllProgress(options, `item ${itemIndex + 1}/${itemTests.length} end id=${item.id}` +
311
- ` status=${summary.failed === 0 ? "passed" : "failed"}` +
312
- ` passed=${summary.passed} failed=${summary.failed} skipped=${summary.skipped}`);
313
281
  }
314
- const failOnSkippedTriggered = options.failOnSkipped === true && skipped > 0;
315
- if (options.checkContext === true) {
316
- const allRunResults = results.flatMap((entry) => entry.run_results);
317
- const preflight = summarizeContextPreflight(allRunResults);
318
- trackingWarnings.push(`context_preflight:checked_pm_commands=${preflight.checked_pm_commands};` +
319
- `tracker_read_commands=${preflight.tracker_read_commands};` +
320
- `mismatches=${preflight.mismatches};` +
321
- `auto_remediated=${preflight.auto_remediated}`);
282
+ catch (error) {
283
+ return [`test_result_tracking_failed:${entry.item.id}:${formatTrackingError(error)}`];
322
284
  }
323
- const ok = failed === 0 && failOnSkippedTriggered !== true && failOnEmptyTestRunTriggered !== true;
324
- emitTestAllProgress(options, `end status=${ok ? "passed" : "failed"} items=${filteredItems.length} linked_tests=${linkedTests}` +
325
- ` passed=${passed} failed=${failed} skipped=${skipped}`);
285
+ return [];
286
+ }
287
+ function buildTestAllItemRunContext(params) {
288
+ const trackingAttemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();
289
+ const trackingParsedAttempt = trackingAttemptRaw ? Number.parseInt(trackingAttemptRaw, 10) : Number.NaN;
290
+ const trackingResumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();
326
291
  return {
327
- ok,
292
+ pmRoot: params.pmRoot,
293
+ settings: params.settings,
294
+ options: params.options,
295
+ defaultTimeoutSeconds: params.defaultTimeoutSeconds,
296
+ sourceRoots: {
297
+ projectPmRoot: params.pmRoot,
298
+ globalPmRoot: resolveGlobalPmRoot(process.cwd()),
299
+ },
300
+ seenTestKeys: new Set(),
301
+ effectiveTimeoutByKey: buildEffectiveTimeoutByKey(params.itemTests),
302
+ trackingEnabled: params.settings.testing.record_results_to_items === true,
303
+ trackingAuthor: resolveAuthor(undefined, params.settings.author_default),
304
+ trackingRunId: resolveTrackedRunId(),
305
+ trackingAttempt: Number.isFinite(trackingParsedAttempt) && trackingParsedAttempt >= 1 ? trackingParsedAttempt : undefined,
306
+ trackingResumedFrom: trackingResumedFrom && trackingResumedFrom.length > 0 ? trackingResumedFrom : undefined,
307
+ runStartedAt: params.runStartedAt,
308
+ };
309
+ }
310
+ function initializeTestAllAccumulation(options, linkedTests, filteredItems) {
311
+ const accumulation = {
312
+ results: [],
313
+ passed: 0,
314
+ failed: 0,
315
+ skipped: 0,
316
+ failureCategories: countFailureCategories([]),
317
+ trackingWarnings: [],
318
+ };
319
+ const failOnEmptyTestRunTriggered = options.failOnEmptyTestRun === true && linkedTests === 0;
320
+ if (failOnEmptyTestRunTriggered) {
321
+ accumulation.failed += 1;
322
+ accumulation.failureCategories.empty_run += 1;
323
+ accumulation.trackingWarnings.push(`empty_linked_test_selection:items=${filteredItems.length};linked_tests=0;fail_on_empty_test_run=true`);
324
+ }
325
+ return { accumulation, failOnEmptyTestRunTriggered };
326
+ }
327
+ async function runTestAllItems(itemTests, context, accumulation) {
328
+ for (const [itemIndex, entry] of itemTests.entries()) {
329
+ emitTestAllProgress(context.options, `item ${itemIndex + 1}/${itemTests.length} start id=${entry.item.id} linked_tests=${entry.tests.length}`);
330
+ const execution = await runTestAllItem(entry, context);
331
+ mergeFailureCategoryCounts(accumulation.failureCategories, execution.failureCategories);
332
+ accumulation.passed += execution.passed;
333
+ accumulation.failed += execution.failed;
334
+ accumulation.skipped += execution.skipped;
335
+ accumulation.trackingWarnings.push(...execution.trackingWarnings);
336
+ accumulation.results.push(execution.result);
337
+ emitTestAllProgress(context.options, `item ${itemIndex + 1}/${itemTests.length} end id=${entry.item.id}` +
338
+ ` status=${execution.failed === 0 ? "passed" : "failed"}` +
339
+ ` passed=${execution.passed} failed=${execution.failed} skipped=${execution.skipped}`);
340
+ }
341
+ }
342
+ function appendContextPreflightWarning(options, accumulation) {
343
+ if (options.checkContext !== true) {
344
+ return;
345
+ }
346
+ const allRunResults = accumulation.results.flatMap((entry) => entry.run_results);
347
+ const preflight = summarizeContextPreflight(allRunResults);
348
+ accumulation.trackingWarnings.push(`context_preflight:checked_pm_commands=${preflight.checked_pm_commands};` +
349
+ `tracker_read_commands=${preflight.tracker_read_commands};` +
350
+ `mismatches=${preflight.mismatches};` +
351
+ `auto_remediated=${preflight.auto_remediated}`);
352
+ }
353
+ function buildTestAllResult(params) {
354
+ return {
355
+ ok: params.ok,
328
356
  totals: {
329
- items: filteredItems.length,
330
- linked_tests: linkedTests,
331
- passed,
332
- failed,
333
- skipped,
334
- failure_categories: failureCategories,
357
+ items: params.filteredItems.length,
358
+ linked_tests: params.linkedTests,
359
+ passed: params.accumulation.passed,
360
+ failed: params.accumulation.failed,
361
+ skipped: params.accumulation.skipped,
362
+ failure_categories: params.accumulation.failureCategories,
335
363
  },
336
- failed,
337
- passed,
338
- skipped,
339
- fail_on_skipped_triggered: failOnSkippedTriggered ? true : undefined,
340
- fail_on_empty_test_run_triggered: failOnEmptyTestRunTriggered ? true : undefined,
341
- warnings: trackingWarnings.length > 0 ? trackingWarnings : undefined,
342
- results,
364
+ failed: params.accumulation.failed,
365
+ passed: params.accumulation.passed,
366
+ skipped: params.accumulation.skipped,
367
+ fail_on_skipped_triggered: params.failOnSkippedTriggered ? true : undefined,
368
+ fail_on_empty_test_run_triggered: params.failOnEmptyTestRunTriggered ? true : undefined,
369
+ warnings: params.accumulation.trackingWarnings.length > 0 ? params.accumulation.trackingWarnings : undefined,
370
+ results: params.accumulation.results,
343
371
  };
344
372
  }
373
+ /**
374
+ * Implements run test all for the public runtime surface of this module.
375
+ */
376
+ export async function runTestAll(options, global) {
377
+ const pmRoot = resolvePmRoot(process.cwd(), global.path);
378
+ if (!(await pathExists(getSettingsPath(pmRoot)))) {
379
+ throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
380
+ }
381
+ const settings = await readSettings(pmRoot);
382
+ const { filteredItems, statusFilter, limitFilter, offsetFilter } = await selectTestAllItems({ pmRoot, settings, options });
383
+ const defaultTimeoutSeconds = parseTimeout(options.timeout);
384
+ const runStartedAt = nowIso();
385
+ const { itemTests, linkedTests } = await collectTestAllItemTests(filteredItems, global, pmRoot);
386
+ emitTestAllProgress(options, `selection items=${filteredItems.length} linked_tests=${linkedTests}` +
387
+ `${statusFilter ? ` status=${statusFilter}` : ""}` +
388
+ `${limitFilter === undefined ? "" : ` limit=${limitFilter}`}` +
389
+ `${offsetFilter > 0 ? ` offset=${offsetFilter}` : ""}`);
390
+ const { accumulation, failOnEmptyTestRunTriggered } = initializeTestAllAccumulation(options, linkedTests, filteredItems);
391
+ const itemRunContext = buildTestAllItemRunContext({
392
+ pmRoot,
393
+ settings,
394
+ options,
395
+ itemTests,
396
+ defaultTimeoutSeconds,
397
+ runStartedAt,
398
+ });
399
+ await runTestAllItems(itemTests, itemRunContext, accumulation);
400
+ const failOnSkippedTriggered = options.failOnSkipped === true && accumulation.skipped > 0;
401
+ appendContextPreflightWarning(options, accumulation);
402
+ const ok = accumulation.failed === 0 && failOnSkippedTriggered !== true && failOnEmptyTestRunTriggered !== true;
403
+ emitTestAllProgress(options, `end status=${ok ? "passed" : "failed"} items=${filteredItems.length} linked_tests=${linkedTests}` +
404
+ ` passed=${accumulation.passed} failed=${accumulation.failed} skipped=${accumulation.skipped}`);
405
+ return buildTestAllResult({
406
+ ok,
407
+ filteredItems,
408
+ linkedTests,
409
+ accumulation,
410
+ failOnSkippedTriggered,
411
+ failOnEmptyTestRunTriggered,
412
+ });
413
+ }
345
414
  export const _testOnlyTestAll = {
346
415
  formatTrackingError,
347
416
  };
348
417
  //# sourceMappingURL=test-all.js.map
349
- //# debugId=09f1a3db-2f49-5603-90c2-d0f31ef8de75
418
+ //# debugId=1262db4d-0528-5697-9089-54eac807996c
@@ -1 +1 @@
1
- {"version":3,"file":"test-all.js","sources":["cli/commands/test-all.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/test-all\n *\n * Implements the pm test all command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { parseOptionalNumber } from \"../../core/item/parse.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport { resolveRuntimeStatusRegistry, type RuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllFrontMatterLight } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { appendTrackedTestRunSummary } from \"../../core/test/item-test-run-tracking.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { ItemStatus, LinkedTest } from \"../../types/index.js\";\nimport {\n countFailureCategories,\n runLinkedTests,\n runTest,\n summarizeContextPreflight,\n type LinkedTestFailureCategory,\n type TestRunResult,\n} from \"./test.js\";\n\n/**\n * Documents the test all command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestAllCommandOptions {\n status?: string;\n limit?: string;\n offset?: string;\n timeout?: string;\n progress?: boolean;\n envSet?: string[];\n envClear?: string[];\n sharedHostSafe?: boolean;\n pmContext?: string;\n overrideLinkedPmContext?: boolean;\n failOnContextMismatch?: boolean;\n failOnSkipped?: boolean;\n failOnEmptyTestRun?: boolean;\n requireAssertionsForPm?: boolean;\n checkContext?: boolean;\n autoPmContext?: boolean;\n}\n\n/**\n * Documents the test all item result payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestAllItemResult {\n ok: boolean;\n id: string;\n status: ItemStatus;\n test_count: number;\n passed: number;\n failed: number;\n skipped: number;\n run_results: TestRunResult[];\n failure_categories: Record<LinkedTestFailureCategory, number>;\n}\n\n/**\n * Documents the test all result payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestAllResult {\n ok: boolean;\n totals: {\n items: number;\n linked_tests: number;\n passed: number;\n failed: number;\n skipped: number;\n failure_categories: Record<LinkedTestFailureCategory, number>;\n };\n failed: number;\n passed: number;\n skipped: number;\n fail_on_skipped_triggered?: boolean;\n fail_on_empty_test_run_triggered?: boolean;\n warnings?: string[];\n results: TestAllItemResult[];\n}\n\nfunction parseStatus(raw: string | undefined, statusRegistry: RuntimeStatusRegistry): ItemStatus | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const normalized = normalizeStatusInput(raw, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(`Invalid --status value \"${raw}\". Allowed: ${allowedStatuses.join(\", \")}`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction parseTimeout(raw: string | undefined): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n return parseOptionalNumber(raw, \"timeout\");\n}\n\nfunction parseNonNegativeInteger(raw: string | undefined, flag: string): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const parsed = Number(raw);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new PmCliError(`${flag} must be a non-negative integer`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nfunction formatTrackingError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction resolveTrackedRunId(): string {\n const fromEnv = process.env.PM_BACKGROUND_TEST_RUN_ID?.trim();\n if (fromEnv && fromEnv.length > 0) {\n return fromEnv;\n }\n return `test-all-local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction normalizeCommand(command: string): string {\n return command.trim().replaceAll(/\\s+/g, \" \");\n}\n\nfunction normalizeEnvSetSignature(value: LinkedTest[\"env_set\"]): string {\n if (!value || Object.keys(value).length === 0) {\n return \"{}\";\n }\n return JSON.stringify(\n Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right))),\n );\n}\n\nfunction normalizeEnvClearSignature(value: LinkedTest[\"env_clear\"]): string {\n if (!value || value.length === 0) {\n return \"[]\";\n }\n return JSON.stringify([...value].sort((left, right) => left.localeCompare(right)));\n}\n\nfunction normalizePmContextModeSignature(value: LinkedTest[\"pm_context_mode\"]): string {\n const normalized = value?.trim().toLowerCase();\n return normalized && normalized.length > 0 ? normalized : \"none\";\n}\n\nfunction normalizeAssertionSignature(test: LinkedTest): string {\n const normalized = {\n assert_stdout_contains: [...new Set(test.assert_stdout_contains ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stdout_regex: [...new Set(test.assert_stdout_regex ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stderr_contains: [...new Set(test.assert_stderr_contains ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stderr_regex: [...new Set(test.assert_stderr_regex ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stdout_min_lines: typeof test.assert_stdout_min_lines === \"number\" ? test.assert_stdout_min_lines : undefined,\n assert_json_field_equals: Object.fromEntries(\n Object.entries(test.assert_json_field_equals ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n ),\n assert_json_field_gte: Object.fromEntries(\n Object.entries(test.assert_json_field_gte ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n ),\n };\n return JSON.stringify(normalized);\n}\n\nfunction buildLinkedTestKey(test: LinkedTest): string {\n const command = test.command?.trim();\n if (command && command.length > 0) {\n const envSet = normalizeEnvSetSignature(test.env_set);\n const envClear = normalizeEnvClearSignature(test.env_clear);\n const pmContextMode = normalizePmContextModeSignature(test.pm_context_mode);\n const sharedHostSafe = test.shared_host_safe === true ? \"true\" : \"false\";\n const assertions = normalizeAssertionSignature(test);\n return `command:${test.scope}:${normalizeCommand(command)}:${envSet}:${envClear}:${pmContextMode}:${sharedHostSafe}:${assertions}`;\n }\n const linkedPath = test.path?.trim() ?? \"\";\n return `path:${test.scope}:${linkedPath}`;\n}\n\nfunction maxTimeoutSeconds(current: number | undefined, candidate: number | undefined): number | undefined {\n if (candidate === undefined) {\n /* c8 ignore next - exercised implicitly by duplicate timeout normalization */\n return current;\n }\n if (current === undefined || candidate > current) {\n return candidate;\n }\n return current;\n}\n\nfunction countStatuses(runResults: TestRunResult[]): { passed: number; failed: number; skipped: number } {\n let passed = 0;\n let failed = 0;\n let skipped = 0;\n for (const result of runResults) {\n if (result.status === \"passed\") {\n passed += 1;\n continue;\n }\n if (result.status === \"failed\") {\n failed += 1;\n continue;\n }\n skipped += 1;\n }\n return { passed, failed, skipped };\n}\n\nfunction mergeFailureCategoryCounts(\n target: Record<LinkedTestFailureCategory, number>,\n source: Record<LinkedTestFailureCategory, number>,\n): void {\n for (const [key, value] of Object.entries(source)) {\n target[key as LinkedTestFailureCategory] += value;\n }\n}\n\nfunction emitTestAllProgress(options: TestAllCommandOptions, message: string): void {\n if (options.progress !== true) {\n return;\n }\n try {\n process.stderr.write(`[pm test-all] ${message}\\n`);\n } catch {\n // Ignore transient stderr write failures.\n }\n}\n\n/**\n * Implements run test all for the public runtime surface of this module.\n */\nexport async function runTestAll(options: TestAllCommandOptions, global: GlobalOptions): Promise<TestAllResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = await readSettings(pmRoot);\n const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const statusFilter = parseStatus(options.status, statusRegistry);\n const limitFilter = parseNonNegativeInteger(options.limit, \"--limit\");\n const offsetFilter = parseNonNegativeInteger(options.offset, \"--offset\") ?? 0;\n const allItems = await listAllFrontMatterLight(pmRoot, settings.item_format, typeRegistry.type_to_folder, undefined, settings.schema);\n const statusFilteredItems = allItems\n .filter((item) => (statusFilter ? item.status === statusFilter : true))\n .sort((a, b) => a.id.localeCompare(b.id));\n const filteredItems =\n limitFilter === undefined\n ? statusFilteredItems.slice(offsetFilter)\n : statusFilteredItems.slice(offsetFilter, offsetFilter + limitFilter);\n const defaultTimeoutSeconds = parseTimeout(options.timeout);\n const sourceRoots = {\n projectPmRoot: pmRoot,\n globalPmRoot: resolveGlobalPmRoot(process.cwd()),\n };\n const runStartedAt = nowIso();\n const trackingEnabled = settings.testing.record_results_to_items === true;\n const trackingRunId = resolveTrackedRunId();\n const trackingAuthor = resolveAuthor(undefined, settings.author_default);\n const trackingAttemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();\n const trackingParsedAttempt = trackingAttemptRaw ? Number.parseInt(trackingAttemptRaw, 10) : Number.NaN;\n const trackingResumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();\n const trackingWarnings: string[] = [];\n\n const results: TestAllItemResult[] = [];\n const seenTestKeys = new Set<string>();\n let passed = 0;\n let failed = 0;\n let skipped = 0;\n let linkedTests = 0;\n const failureCategories = countFailureCategories([]);\n const itemTests: Array<{ item: (typeof filteredItems)[number]; tests: LinkedTest[] }> = [];\n\n for (const item of filteredItems) {\n const readResult = await runTest(\n item.id,\n {\n run: false,\n },\n {\n ...global,\n path: pmRoot,\n },\n );\n\n linkedTests += readResult.tests.length;\n itemTests.push({ item, tests: readResult.tests });\n }\n emitTestAllProgress(\n options,\n `selection items=${filteredItems.length} linked_tests=${linkedTests}` +\n `${statusFilter ? ` status=${statusFilter}` : \"\"}` +\n `${limitFilter === undefined ? \"\" : ` limit=${limitFilter}`}` +\n `${offsetFilter > 0 ? ` offset=${offsetFilter}` : \"\"}`,\n );\n\n const failOnEmptyTestRunTriggered = options.failOnEmptyTestRun === true && linkedTests === 0;\n if (failOnEmptyTestRunTriggered) {\n failed += 1;\n failureCategories.empty_run += 1;\n trackingWarnings.push(\n `empty_linked_test_selection:items=${filteredItems.length};linked_tests=0;fail_on_empty_test_run=true`,\n );\n }\n\n const effectiveTimeoutByKey = new Map<string, number | undefined>();\n for (const { tests } of itemTests) {\n for (const test of tests) {\n const key = buildLinkedTestKey(test);\n if (!effectiveTimeoutByKey.has(key)) {\n effectiveTimeoutByKey.set(key, test.timeout_seconds);\n continue;\n }\n effectiveTimeoutByKey.set(key, maxTimeoutSeconds(effectiveTimeoutByKey.get(key), test.timeout_seconds));\n }\n }\n\n for (const [itemIndex, { item, tests }] of itemTests.entries()) {\n emitTestAllProgress(options, `item ${itemIndex + 1}/${itemTests.length} start id=${item.id} linked_tests=${tests.length}`);\n const testsToRun: LinkedTest[] = [];\n const keyedTests = tests.map((test) => {\n const key = buildLinkedTestKey(test);\n const duplicate = seenTestKeys.has(key);\n if (!duplicate) {\n seenTestKeys.add(key);\n const effectiveTimeoutSeconds = effectiveTimeoutByKey.get(key);\n testsToRun.push(\n effectiveTimeoutSeconds === undefined ? test : { ...test, timeout_seconds: effectiveTimeoutSeconds },\n );\n }\n return { test, key, duplicate };\n });\n\n const executedResults =\n testsToRun.length > 0\n ? await runLinkedTests(testsToRun, defaultTimeoutSeconds, {\n progress: options.progress,\n sourceRoots,\n envSet: options.envSet,\n envClear: options.envClear,\n sharedHostSafe: options.sharedHostSafe,\n pmContext: options.pmContext,\n overrideLinkedPmContext: options.overrideLinkedPmContext,\n failOnContextMismatch: options.failOnContextMismatch,\n failOnEmptyTestRun: options.failOnEmptyTestRun,\n requireAssertionsForPm: options.requireAssertionsForPm,\n checkContext: options.checkContext,\n autoPmContext: options.autoPmContext,\n })\n : [];\n let executedIndex = 0;\n const runResults = keyedTests.map(({ test, key, duplicate }) => {\n if (!duplicate) {\n const executed = executedResults[executedIndex];\n executedIndex += 1;\n return executed;\n }\n return {\n command: test.command,\n path: test.path,\n status: \"skipped\" as const,\n error: `Duplicate linked test skipped (key=${key}).`,\n };\n });\n\n const summary = countStatuses(runResults);\n const itemFailureCategories = countFailureCategories(runResults);\n mergeFailureCategoryCounts(failureCategories, itemFailureCategories);\n passed += summary.passed;\n failed += summary.failed;\n skipped += summary.skipped;\n if (trackingEnabled) {\n try {\n await appendTrackedTestRunSummary({\n pmRoot,\n settings,\n itemId: item.id,\n author: trackingAuthor,\n message: `Track test-all run summary (${trackingRunId})`,\n entry: {\n run_id: trackingRunId,\n kind: \"test-all\",\n status: summary.failed > 0 || (options.failOnSkipped === true && summary.skipped > 0) ? \"failed\" : \"passed\",\n started_at: runStartedAt,\n finished_at: nowIso(),\n recorded_at: nowIso(),\n attempt: Number.isFinite(trackingParsedAttempt) && trackingParsedAttempt >= 1 ? trackingParsedAttempt : undefined,\n resumed_from: trackingResumedFrom && trackingResumedFrom.length > 0 ? trackingResumedFrom : undefined,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n items: 1,\n linked_tests: tests.length,\n fail_on_skipped_triggered: options.failOnSkipped === true && summary.skipped > 0 ? true : undefined,\n },\n });\n } catch (error: unknown) {\n trackingWarnings.push(`test_result_tracking_failed:${item.id}:${formatTrackingError(error)}`);\n }\n }\n results.push({\n ok: summary.failed === 0 && !(options.failOnSkipped === true && summary.skipped > 0),\n id: item.id,\n status: item.status,\n test_count: tests.length,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n run_results: runResults,\n failure_categories: itemFailureCategories,\n });\n emitTestAllProgress(\n options,\n `item ${itemIndex + 1}/${itemTests.length} end id=${item.id}` +\n ` status=${summary.failed === 0 ? \"passed\" : \"failed\"}` +\n ` passed=${summary.passed} failed=${summary.failed} skipped=${summary.skipped}`,\n );\n }\n\n const failOnSkippedTriggered = options.failOnSkipped === true && skipped > 0;\n if (options.checkContext === true) {\n const allRunResults = results.flatMap((entry) => entry.run_results);\n const preflight = summarizeContextPreflight(allRunResults);\n trackingWarnings.push(\n `context_preflight:checked_pm_commands=${preflight.checked_pm_commands};` +\n `tracker_read_commands=${preflight.tracker_read_commands};` +\n `mismatches=${preflight.mismatches};` +\n `auto_remediated=${preflight.auto_remediated}`,\n );\n }\n\n const ok = failed === 0 && failOnSkippedTriggered !== true && failOnEmptyTestRunTriggered !== true;\n emitTestAllProgress(\n options,\n `end status=${ok ? \"passed\" : \"failed\"} items=${filteredItems.length} linked_tests=${linkedTests}` +\n ` passed=${passed} failed=${failed} skipped=${skipped}`,\n );\n\n return {\n ok,\n totals: {\n items: filteredItems.length,\n linked_tests: linkedTests,\n passed,\n failed,\n skipped,\n failure_categories: failureCategories,\n },\n failed,\n passed,\n skipped,\n fail_on_skipped_triggered: failOnSkippedTriggered ? true : undefined,\n fail_on_empty_test_run_triggered: failOnEmptyTestRunTriggered ? true : undefined,\n warnings: trackingWarnings.length > 0 ? trackingWarnings : undefined,\n results,\n };\n}\n\nexport const _testOnlyTestAll = {\n formatTrackingError,\n};\n"],"names":[],"mappings":"AAAA;;;;GAIG;;;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,4BAA4B,EAA8B,MAAM,qCAAqC,CAAC;AAC/G,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,OAAO,EACP,yBAAyB,GAG1B,MAAM,WAAW,CAAC;AA6DnB,SAAS,WAAW,CAAC,GAAuB,EAAE,cAAqC;IACjF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,IAAI,UAAU,CAAC,2BAA2B,GAAG,eAAe,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,GAAuB;IAC3C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAuB,EAAE,IAAY;IACpE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,iCAAiC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC;IAC9D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,kBAAkB,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,wBAAwB,CAAC,KAA4B;IAC5D,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CACnB,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAC/F,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA8B;IAChE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAoC;IAC3E,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,OAAO,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AACnE,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAgB;IACnD,MAAM,UAAU,GAAG;QACjB,sBAAsB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxH,mBAAmB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClH,sBAAsB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxH,mBAAmB,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAClH,uBAAuB,EAAE,OAAO,IAAI,CAAC,uBAAuB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS;QACpH,wBAAwB,EAAE,MAAM,CAAC,WAAW,CAC1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CACzG;QACD,qBAAqB,EAAE,MAAM,CAAC,WAAW,CACvC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CACtG;KACF,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAgB;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACrC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,aAAa,GAAG,+BAA+B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACzE,MAAM,UAAU,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,WAAW,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,OAAO,CAAC,IAAI,MAAM,IAAI,QAAQ,IAAI,aAAa,IAAI,cAAc,IAAI,UAAU,EAAE,CAAC;IACrI,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC3C,OAAO,QAAQ,IAAI,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA2B,EAAE,SAA6B;IACnF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,8EAA8E;QAC9E,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,SAAS,GAAG,OAAO,EAAE,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,UAA2B;IAChD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,CAAC;YACZ,SAAS;QACX,CAAC;QACD,OAAO,IAAI,CAAC,CAAC;IACf,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAiD,EACjD,MAAiD;IAEjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,GAAgC,CAAC,IAAI,KAAK,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,OAA8B,EAAE,OAAe;IAC1E,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,OAAO,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,0CAA0C;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAA8B,EAAE,MAAqB;IACpF,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,iCAAiC,MAAM,sBAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,EAAE,+BAA+B,EAAE,CAAC,CAAC;IAC1F,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtI,MAAM,mBAAmB,GAAG,QAAQ;SACjC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACtE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,MAAM,aAAa,GACjB,WAAW,KAAK,SAAS;QACvB,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;QACzC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,WAAW,CAAC,CAAC;IAC1E,MAAM,qBAAqB,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG;QAClB,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KACjD,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC;IAC9B,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,KAAK,IAAI,CAAC;IAC1E,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAC5C,MAAM,cAAc,GAAG,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACzE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,EAAE,CAAC;IAC9E,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACxG,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,EAAE,CAAC;IACpF,MAAM,gBAAgB,GAAa,EAAE,CAAC;IAEtC,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,GAAyE,EAAE,CAAC;IAE3F,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,MAAM,OAAO,CAC9B,IAAI,CAAC,EAAE,EACP;YACE,GAAG,EAAE,KAAK;SACX,EACD;YACE,GAAG,MAAM;YACT,IAAI,EAAE,MAAM;SACb,CACF,CAAC;QAEF,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;QACvC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,mBAAmB,CACjB,OAAO,EACP,mBAAmB,aAAa,CAAC,MAAM,iBAAiB,WAAW,EAAE;QACnE,GAAG,YAAY,CAAC,CAAC,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAClD,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,WAAW,EAAE,EAAE;QAC7D,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,CAAC;IAEF,MAAM,2BAA2B,GAAG,OAAO,CAAC,kBAAkB,KAAK,IAAI,IAAI,WAAW,KAAK,CAAC,CAAC;IAC7F,IAAI,2BAA2B,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,CAAC;QACZ,iBAAiB,CAAC,SAAS,IAAI,CAAC,CAAC;QACjC,gBAAgB,CAAC,IAAI,CACnB,qCAAqC,aAAa,CAAC,MAAM,6CAA6C,CACvG,CAAC;IACJ,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAA8B,CAAC;IACpE,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpC,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBACrD,SAAS;YACX,CAAC;YACD,qBAAqB,CAAC,GAAG,CAAC,GAAG,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/D,mBAAmB,CAAC,OAAO,EAAE,QAAQ,SAAS,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,aAAa,IAAI,CAAC,EAAE,iBAAiB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3H,MAAM,UAAU,GAAiB,EAAE,CAAC;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,MAAM,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC/D,UAAU,CAAC,IAAI,CACb,uBAAuB,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,uBAAuB,EAAE,CACrG,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,eAAe,GACnB,UAAU,CAAC,MAAM,GAAG,CAAC;YACnB,CAAC,CAAC,MAAM,cAAc,CAAC,UAAU,EAAE,qBAAqB,EAAE;gBACtD,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,WAAW;gBACX,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;gBACxD,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;gBACpD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;gBACtD,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;YAC7D,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;gBAChD,aAAa,IAAI,CAAC,CAAC;gBACnB,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,SAAkB;gBAC1B,KAAK,EAAE,sCAAsC,GAAG,IAAI;aACrD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;QACjE,0BAA0B,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;QACrE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QACzB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC;QACzB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;QAC3B,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,2BAA2B,CAAC;oBAChC,MAAM;oBACN,QAAQ;oBACR,MAAM,EAAE,IAAI,CAAC,EAAE;oBACf,MAAM,EAAE,cAAc;oBACtB,OAAO,EAAE,+BAA+B,aAAa,GAAG;oBACxD,KAAK,EAAE;wBACL,MAAM,EAAE,aAAa;wBACrB,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;wBAC3G,UAAU,EAAE,YAAY;wBACxB,WAAW,EAAE,MAAM,EAAE;wBACrB,WAAW,EAAE,MAAM,EAAE;wBACrB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,qBAAqB,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS;wBACjH,YAAY,EAAE,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;wBACrG,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,KAAK,EAAE,CAAC;wBACR,YAAY,EAAE,KAAK,CAAC,MAAM;wBAC1B,yBAAyB,EAAE,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;qBACpG;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,gBAAgB,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,EAAE,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;QACD,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;YACpF,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,KAAK,CAAC,MAAM;YACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,UAAU;YACvB,kBAAkB,EAAE,qBAAqB;SAC1C,CAAC,CAAC;QACH,mBAAmB,CACjB,OAAO,EACP,QAAQ,SAAS,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,WAAW,IAAI,CAAC,EAAE,EAAE;YAC3D,WAAW,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;YACvD,WAAW,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,OAAO,EAAE,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,sBAAsB,GAAG,OAAO,CAAC,aAAa,KAAK,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAC3D,gBAAgB,CAAC,IAAI,CACnB,yCAAyC,SAAS,CAAC,mBAAmB,GAAG;YACvE,yBAAyB,SAAS,CAAC,qBAAqB,GAAG;YAC3D,cAAc,SAAS,CAAC,UAAU,GAAG;YACrC,mBAAmB,SAAS,CAAC,eAAe,EAAE,CACjD,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,sBAAsB,KAAK,IAAI,IAAI,2BAA2B,KAAK,IAAI,CAAC;IACnG,mBAAmB,CACjB,OAAO,EACP,cAAc,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,UAAU,aAAa,CAAC,MAAM,iBAAiB,WAAW,EAAE;QAChG,WAAW,MAAM,WAAW,MAAM,YAAY,OAAO,EAAE,CAC1D,CAAC;IAEF,OAAO;QACL,EAAE;QACF,MAAM,EAAE;YACN,KAAK,EAAE,aAAa,CAAC,MAAM;YAC3B,YAAY,EAAE,WAAW;YACzB,MAAM;YACN,MAAM;YACN,OAAO;YACP,kBAAkB,EAAE,iBAAiB;SACtC;QACD,MAAM;QACN,MAAM;QACN,OAAO;QACP,yBAAyB,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACpE,gCAAgC,EAAE,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QAChF,QAAQ,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;QACpE,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,mBAAmB;CACpB,CAAC","debugId":"09f1a3db-2f49-5603-90c2-d0f31ef8de75"}
1
+ {"version":3,"file":"test-all.js","sources":["cli/commands/test-all.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/test-all\n *\n * Implements the pm test all command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { parseOptionalNumber } from \"../../core/item/parse.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport { resolveRuntimeStatusRegistry, type RuntimeStatusRegistry } from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { listAllFrontMatterLight } from \"../../core/store/item-store.js\";\nimport { getSettingsPath, resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { appendTrackedTestRunSummary } from \"../../core/test/item-test-run-tracking.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { ItemStatus, LinkedTest } from \"../../types/index.js\";\nimport {\n countFailureCategories,\n runLinkedTests,\n runTest,\n summarizeContextPreflight,\n type LinkedTestFailureCategory,\n type TestRunResult,\n} from \"./test.js\";\n\n/**\n * Documents the test all command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestAllCommandOptions {\n status?: string;\n limit?: string;\n offset?: string;\n timeout?: string;\n progress?: boolean;\n envSet?: string[];\n envClear?: string[];\n sharedHostSafe?: boolean;\n pmContext?: string;\n overrideLinkedPmContext?: boolean;\n failOnContextMismatch?: boolean;\n failOnSkipped?: boolean;\n failOnEmptyTestRun?: boolean;\n requireAssertionsForPm?: boolean;\n checkContext?: boolean;\n autoPmContext?: boolean;\n}\n\n/**\n * Documents the test all item result payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestAllItemResult {\n ok: boolean;\n id: string;\n status: ItemStatus;\n test_count: number;\n passed: number;\n failed: number;\n skipped: number;\n run_results: TestRunResult[];\n failure_categories: Record<LinkedTestFailureCategory, number>;\n}\n\n/**\n * Documents the test all result payload exchanged by command, SDK, and package integrations.\n */\nexport interface TestAllResult {\n ok: boolean;\n totals: {\n items: number;\n linked_tests: number;\n passed: number;\n failed: number;\n skipped: number;\n failure_categories: Record<LinkedTestFailureCategory, number>;\n };\n failed: number;\n passed: number;\n skipped: number;\n fail_on_skipped_triggered?: boolean;\n fail_on_empty_test_run_triggered?: boolean;\n warnings?: string[];\n results: TestAllItemResult[];\n}\n\ntype TestAllSelectedItem = Awaited<ReturnType<typeof listAllFrontMatterLight>>[number];\n\ninterface TestAllItemTests {\n item: TestAllSelectedItem;\n tests: LinkedTest[];\n}\n\ninterface TestAllItemRunContext {\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n options: TestAllCommandOptions;\n defaultTimeoutSeconds: number | undefined;\n sourceRoots: { projectPmRoot: string; globalPmRoot: string };\n seenTestKeys: Set<string>;\n effectiveTimeoutByKey: Map<string, number | undefined>;\n trackingEnabled: boolean;\n trackingAuthor: string;\n trackingRunId: string;\n trackingAttempt: number | undefined;\n trackingResumedFrom: string | undefined;\n runStartedAt: string;\n}\n\ninterface TestAllItemExecution {\n result: TestAllItemResult;\n passed: number;\n failed: number;\n skipped: number;\n trackingWarnings: string[];\n failureCategories: Record<LinkedTestFailureCategory, number>;\n}\n\ninterface TestAllSelection {\n filteredItems: TestAllSelectedItem[];\n statusFilter: ItemStatus | undefined;\n limitFilter: number | undefined;\n offsetFilter: number;\n}\n\ninterface TestAllAccumulation {\n results: TestAllItemResult[];\n passed: number;\n failed: number;\n skipped: number;\n failureCategories: Record<LinkedTestFailureCategory, number>;\n trackingWarnings: string[];\n}\n\nfunction parseStatus(raw: string | undefined, statusRegistry: RuntimeStatusRegistry): ItemStatus | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const normalized = normalizeStatusInput(raw, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map((definition) => definition.id);\n throw new PmCliError(`Invalid --status value \"${raw}\". Allowed: ${allowedStatuses.join(\", \")}`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction parseTimeout(raw: string | undefined): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n return parseOptionalNumber(raw, \"timeout\");\n}\n\nfunction parseNonNegativeInteger(raw: string | undefined, flag: string): number | undefined {\n if (raw === undefined) {\n return undefined;\n }\n const parsed = Number(raw);\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new PmCliError(`${flag} must be a non-negative integer`, EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nfunction formatTrackingError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nfunction resolveTrackedRunId(): string {\n const fromEnv = process.env.PM_BACKGROUND_TEST_RUN_ID?.trim();\n if (fromEnv && fromEnv.length > 0) {\n return fromEnv;\n }\n return `test-all-local-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;\n}\n\nfunction normalizeCommand(command: string): string {\n return command.trim().replaceAll(/\\s+/g, \" \");\n}\n\nfunction normalizeEnvSetSignature(value: LinkedTest[\"env_set\"]): string {\n if (!value || Object.keys(value).length === 0) {\n return \"{}\";\n }\n return JSON.stringify(\n Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right))),\n );\n}\n\nfunction normalizeEnvClearSignature(value: LinkedTest[\"env_clear\"]): string {\n if (!value || value.length === 0) {\n return \"[]\";\n }\n return JSON.stringify([...value].sort((left, right) => left.localeCompare(right)));\n}\n\nfunction normalizePmContextModeSignature(value: LinkedTest[\"pm_context_mode\"]): string {\n const normalized = value?.trim().toLowerCase();\n return normalized && normalized.length > 0 ? normalized : \"none\";\n}\n\nfunction normalizeAssertionSignature(test: LinkedTest): string {\n const normalized = {\n assert_stdout_contains: [...new Set(test.assert_stdout_contains ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stdout_regex: [...new Set(test.assert_stdout_regex ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stderr_contains: [...new Set(test.assert_stderr_contains ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stderr_regex: [...new Set(test.assert_stderr_regex ?? [])].sort((left, right) => left.localeCompare(right)),\n assert_stdout_min_lines: typeof test.assert_stdout_min_lines === \"number\" ? test.assert_stdout_min_lines : undefined,\n assert_json_field_equals: Object.fromEntries(\n Object.entries(test.assert_json_field_equals ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n ),\n assert_json_field_gte: Object.fromEntries(\n Object.entries(test.assert_json_field_gte ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n ),\n };\n return JSON.stringify(normalized);\n}\n\nfunction buildLinkedTestKey(test: LinkedTest): string {\n const command = test.command?.trim();\n if (command && command.length > 0) {\n const envSet = normalizeEnvSetSignature(test.env_set);\n const envClear = normalizeEnvClearSignature(test.env_clear);\n const pmContextMode = normalizePmContextModeSignature(test.pm_context_mode);\n const sharedHostSafe = test.shared_host_safe === true ? \"true\" : \"false\";\n const assertions = normalizeAssertionSignature(test);\n return `command:${test.scope}:${normalizeCommand(command)}:${envSet}:${envClear}:${pmContextMode}:${sharedHostSafe}:${assertions}`;\n }\n const linkedPath = test.path?.trim() ?? \"\";\n return `path:${test.scope}:${linkedPath}`;\n}\n\nfunction maxTimeoutSeconds(current: number | undefined, candidate: number | undefined): number | undefined {\n if (candidate === undefined) {\n /* c8 ignore next - exercised implicitly by duplicate timeout normalization */\n return current;\n }\n if (current === undefined || candidate > current) {\n return candidate;\n }\n return current;\n}\n\nfunction countStatuses(runResults: TestRunResult[]): { passed: number; failed: number; skipped: number } {\n let passed = 0;\n let failed = 0;\n let skipped = 0;\n for (const result of runResults) {\n if (result.status === \"passed\") {\n passed += 1;\n continue;\n }\n if (result.status === \"failed\") {\n failed += 1;\n continue;\n }\n skipped += 1;\n }\n return { passed, failed, skipped };\n}\n\nfunction mergeFailureCategoryCounts(\n target: Record<LinkedTestFailureCategory, number>,\n source: Record<LinkedTestFailureCategory, number>,\n): void {\n for (const [key, value] of Object.entries(source)) {\n target[key as LinkedTestFailureCategory] += value;\n }\n}\n\nfunction emitTestAllProgress(options: TestAllCommandOptions, message: string): void {\n if (options.progress !== true) {\n return;\n }\n try {\n process.stderr.write(`[pm test-all] ${message}\\n`);\n } catch {\n // Ignore transient stderr write failures.\n }\n}\n\nasync function collectTestAllItemTests(\n filteredItems: TestAllSelectedItem[],\n global: GlobalOptions,\n pmRoot: string,\n): Promise<{ itemTests: TestAllItemTests[]; linkedTests: number }> {\n const itemTests: TestAllItemTests[] = [];\n let linkedTests = 0;\n for (const item of filteredItems) {\n const readResult = await runTest(\n item.id,\n { run: false },\n {\n ...global,\n path: pmRoot,\n },\n );\n linkedTests += readResult.tests.length;\n itemTests.push({ item, tests: readResult.tests });\n }\n return { itemTests, linkedTests };\n}\n\nasync function selectTestAllItems(params: {\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n options: TestAllCommandOptions;\n}): Promise<TestAllSelection> {\n const statusRegistry = resolveRuntimeStatusRegistry(params.settings.schema);\n const typeRegistry = resolveItemTypeRegistry(params.settings, getActiveExtensionRegistrations());\n const statusFilter = parseStatus(params.options.status, statusRegistry);\n const limitFilter = parseNonNegativeInteger(params.options.limit, \"--limit\");\n const offsetFilter = parseNonNegativeInteger(params.options.offset, \"--offset\") ?? 0;\n const allItems = await listAllFrontMatterLight(\n params.pmRoot,\n params.settings.item_format,\n typeRegistry.type_to_folder,\n undefined,\n params.settings.schema,\n );\n const statusFilteredItems = allItems\n .filter((item) => (statusFilter ? item.status === statusFilter : true))\n .sort((a, b) => a.id.localeCompare(b.id));\n const filteredItems =\n limitFilter === undefined\n ? statusFilteredItems.slice(offsetFilter)\n : statusFilteredItems.slice(offsetFilter, offsetFilter + limitFilter);\n return { filteredItems, statusFilter, limitFilter, offsetFilter };\n}\n\nfunction buildEffectiveTimeoutByKey(itemTests: TestAllItemTests[]): Map<string, number | undefined> {\n const effectiveTimeoutByKey = new Map<string, number | undefined>();\n for (const { tests } of itemTests) {\n for (const test of tests) {\n const key = buildLinkedTestKey(test);\n if (!effectiveTimeoutByKey.has(key)) {\n effectiveTimeoutByKey.set(key, test.timeout_seconds);\n continue;\n }\n effectiveTimeoutByKey.set(key, maxTimeoutSeconds(effectiveTimeoutByKey.get(key), test.timeout_seconds));\n }\n }\n return effectiveTimeoutByKey;\n}\n\nasync function runTestAllItem(\n entry: TestAllItemTests,\n context: TestAllItemRunContext,\n): Promise<TestAllItemExecution> {\n const testsToRun: LinkedTest[] = [];\n const keyedTests = entry.tests.map((test) => {\n const key = buildLinkedTestKey(test);\n const duplicate = context.seenTestKeys.has(key);\n if (!duplicate) {\n context.seenTestKeys.add(key);\n const effectiveTimeoutSeconds = context.effectiveTimeoutByKey.get(key);\n testsToRun.push(effectiveTimeoutSeconds === undefined ? test : { ...test, timeout_seconds: effectiveTimeoutSeconds });\n }\n return { test, key, duplicate };\n });\n\n const executedResults =\n testsToRun.length > 0\n ? await runLinkedTests(testsToRun, context.defaultTimeoutSeconds, {\n progress: context.options.progress,\n sourceRoots: context.sourceRoots,\n envSet: context.options.envSet,\n envClear: context.options.envClear,\n sharedHostSafe: context.options.sharedHostSafe,\n pmContext: context.options.pmContext,\n overrideLinkedPmContext: context.options.overrideLinkedPmContext,\n failOnContextMismatch: context.options.failOnContextMismatch,\n failOnEmptyTestRun: context.options.failOnEmptyTestRun,\n requireAssertionsForPm: context.options.requireAssertionsForPm,\n checkContext: context.options.checkContext,\n autoPmContext: context.options.autoPmContext,\n })\n : [];\n let executedIndex = 0;\n const runResults = keyedTests.map(({ test, key, duplicate }) => {\n if (!duplicate) {\n const executed = executedResults[executedIndex];\n executedIndex += 1;\n return executed;\n }\n return {\n command: test.command,\n path: test.path,\n status: \"skipped\" as const,\n error: `Duplicate linked test skipped (key=${key}).`,\n };\n });\n const summary = countStatuses(runResults);\n const failureCategories = countFailureCategories(runResults);\n const trackingWarnings = await appendTestAllItemTracking(entry, summary, context);\n return {\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n trackingWarnings,\n failureCategories,\n result: {\n ok: summary.failed === 0 && !(context.options.failOnSkipped === true && summary.skipped > 0),\n id: entry.item.id,\n status: entry.item.status,\n test_count: entry.tests.length,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n run_results: runResults,\n failure_categories: failureCategories,\n },\n };\n}\n\nasync function appendTestAllItemTracking(\n entry: TestAllItemTests,\n summary: { passed: number; failed: number; skipped: number },\n context: TestAllItemRunContext,\n): Promise<string[]> {\n if (!context.trackingEnabled) {\n return [];\n }\n try {\n await appendTrackedTestRunSummary({\n pmRoot: context.pmRoot,\n settings: context.settings,\n itemId: entry.item.id,\n author: context.trackingAuthor,\n message: `Track test-all run summary (${context.trackingRunId})`,\n entry: {\n run_id: context.trackingRunId,\n kind: \"test-all\",\n status: summary.failed > 0 || (context.options.failOnSkipped === true && summary.skipped > 0) ? \"failed\" : \"passed\",\n started_at: context.runStartedAt,\n finished_at: nowIso(),\n recorded_at: nowIso(),\n attempt: context.trackingAttempt,\n resumed_from: context.trackingResumedFrom,\n passed: summary.passed,\n failed: summary.failed,\n skipped: summary.skipped,\n items: 1,\n linked_tests: entry.tests.length,\n fail_on_skipped_triggered: context.options.failOnSkipped === true && summary.skipped > 0 ? true : undefined,\n },\n });\n } catch (error: unknown) {\n return [`test_result_tracking_failed:${entry.item.id}:${formatTrackingError(error)}`];\n }\n return [];\n}\n\nfunction buildTestAllItemRunContext(params: {\n pmRoot: string;\n settings: Awaited<ReturnType<typeof readSettings>>;\n options: TestAllCommandOptions;\n itemTests: TestAllItemTests[];\n defaultTimeoutSeconds: number | undefined;\n runStartedAt: string;\n}): TestAllItemRunContext {\n const trackingAttemptRaw = process.env.PM_BACKGROUND_TEST_RUN_ATTEMPT?.trim();\n const trackingParsedAttempt = trackingAttemptRaw ? Number.parseInt(trackingAttemptRaw, 10) : Number.NaN;\n const trackingResumedFrom = process.env.PM_BACKGROUND_TEST_RUN_RESUMED_FROM?.trim();\n return {\n pmRoot: params.pmRoot,\n settings: params.settings,\n options: params.options,\n defaultTimeoutSeconds: params.defaultTimeoutSeconds,\n sourceRoots: {\n projectPmRoot: params.pmRoot,\n globalPmRoot: resolveGlobalPmRoot(process.cwd()),\n },\n seenTestKeys: new Set<string>(),\n effectiveTimeoutByKey: buildEffectiveTimeoutByKey(params.itemTests),\n trackingEnabled: params.settings.testing.record_results_to_items === true,\n trackingAuthor: resolveAuthor(undefined, params.settings.author_default),\n trackingRunId: resolveTrackedRunId(),\n trackingAttempt: Number.isFinite(trackingParsedAttempt) && trackingParsedAttempt >= 1 ? trackingParsedAttempt : undefined,\n trackingResumedFrom: trackingResumedFrom && trackingResumedFrom.length > 0 ? trackingResumedFrom : undefined,\n runStartedAt: params.runStartedAt,\n };\n}\n\nfunction initializeTestAllAccumulation(\n options: TestAllCommandOptions,\n linkedTests: number,\n filteredItems: TestAllSelectedItem[],\n): { accumulation: TestAllAccumulation; failOnEmptyTestRunTriggered: boolean } {\n const accumulation: TestAllAccumulation = {\n results: [],\n passed: 0,\n failed: 0,\n skipped: 0,\n failureCategories: countFailureCategories([]),\n trackingWarnings: [],\n };\n const failOnEmptyTestRunTriggered = options.failOnEmptyTestRun === true && linkedTests === 0;\n if (failOnEmptyTestRunTriggered) {\n accumulation.failed += 1;\n accumulation.failureCategories.empty_run += 1;\n accumulation.trackingWarnings.push(\n `empty_linked_test_selection:items=${filteredItems.length};linked_tests=0;fail_on_empty_test_run=true`,\n );\n }\n return { accumulation, failOnEmptyTestRunTriggered };\n}\n\nasync function runTestAllItems(\n itemTests: TestAllItemTests[],\n context: TestAllItemRunContext,\n accumulation: TestAllAccumulation,\n): Promise<void> {\n for (const [itemIndex, entry] of itemTests.entries()) {\n emitTestAllProgress(context.options, `item ${itemIndex + 1}/${itemTests.length} start id=${entry.item.id} linked_tests=${entry.tests.length}`);\n const execution = await runTestAllItem(entry, context);\n mergeFailureCategoryCounts(accumulation.failureCategories, execution.failureCategories);\n accumulation.passed += execution.passed;\n accumulation.failed += execution.failed;\n accumulation.skipped += execution.skipped;\n accumulation.trackingWarnings.push(...execution.trackingWarnings);\n accumulation.results.push(execution.result);\n emitTestAllProgress(\n context.options,\n `item ${itemIndex + 1}/${itemTests.length} end id=${entry.item.id}` +\n ` status=${execution.failed === 0 ? \"passed\" : \"failed\"}` +\n ` passed=${execution.passed} failed=${execution.failed} skipped=${execution.skipped}`,\n );\n }\n}\n\nfunction appendContextPreflightWarning(options: TestAllCommandOptions, accumulation: TestAllAccumulation): void {\n if (options.checkContext !== true) {\n return;\n }\n const allRunResults = accumulation.results.flatMap((entry) => entry.run_results);\n const preflight = summarizeContextPreflight(allRunResults);\n accumulation.trackingWarnings.push(\n `context_preflight:checked_pm_commands=${preflight.checked_pm_commands};` +\n `tracker_read_commands=${preflight.tracker_read_commands};` +\n `mismatches=${preflight.mismatches};` +\n `auto_remediated=${preflight.auto_remediated}`,\n );\n}\n\nfunction buildTestAllResult(params: {\n ok: boolean;\n filteredItems: TestAllSelectedItem[];\n linkedTests: number;\n accumulation: TestAllAccumulation;\n failOnSkippedTriggered: boolean;\n failOnEmptyTestRunTriggered: boolean;\n}): TestAllResult {\n return {\n ok: params.ok,\n totals: {\n items: params.filteredItems.length,\n linked_tests: params.linkedTests,\n passed: params.accumulation.passed,\n failed: params.accumulation.failed,\n skipped: params.accumulation.skipped,\n failure_categories: params.accumulation.failureCategories,\n },\n failed: params.accumulation.failed,\n passed: params.accumulation.passed,\n skipped: params.accumulation.skipped,\n fail_on_skipped_triggered: params.failOnSkippedTriggered ? true : undefined,\n fail_on_empty_test_run_triggered: params.failOnEmptyTestRunTriggered ? true : undefined,\n warnings: params.accumulation.trackingWarnings.length > 0 ? params.accumulation.trackingWarnings : undefined,\n results: params.accumulation.results,\n };\n}\n\n/**\n * Implements run test all for the public runtime surface of this module.\n */\nexport async function runTestAll(options: TestAllCommandOptions, global: GlobalOptions): Promise<TestAllResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = await readSettings(pmRoot);\n const { filteredItems, statusFilter, limitFilter, offsetFilter } = await selectTestAllItems({ pmRoot, settings, options });\n const defaultTimeoutSeconds = parseTimeout(options.timeout);\n const runStartedAt = nowIso();\n const { itemTests, linkedTests } = await collectTestAllItemTests(filteredItems, global, pmRoot);\n emitTestAllProgress(\n options,\n `selection items=${filteredItems.length} linked_tests=${linkedTests}` +\n `${statusFilter ? ` status=${statusFilter}` : \"\"}` +\n `${limitFilter === undefined ? \"\" : ` limit=${limitFilter}`}` +\n `${offsetFilter > 0 ? ` offset=${offsetFilter}` : \"\"}`,\n );\n\n const { accumulation, failOnEmptyTestRunTriggered } = initializeTestAllAccumulation(options, linkedTests, filteredItems);\n const itemRunContext = buildTestAllItemRunContext({\n pmRoot,\n settings,\n options,\n itemTests,\n defaultTimeoutSeconds,\n runStartedAt,\n });\n await runTestAllItems(itemTests, itemRunContext, accumulation);\n\n const failOnSkippedTriggered = options.failOnSkipped === true && accumulation.skipped > 0;\n appendContextPreflightWarning(options, accumulation);\n\n const ok = accumulation.failed === 0 && failOnSkippedTriggered !== true && failOnEmptyTestRunTriggered !== true;\n emitTestAllProgress(\n options,\n `end status=${ok ? \"passed\" : \"failed\"} items=${filteredItems.length} linked_tests=${linkedTests}` +\n ` passed=${accumulation.passed} failed=${accumulation.failed} skipped=${accumulation.skipped}`,\n );\n\n return buildTestAllResult({\n ok,\n filteredItems,\n linkedTests,\n accumulation,\n failOnSkippedTriggered,\n failOnEmptyTestRunTriggered,\n });\n}\n\nexport const _testOnlyTestAll = {\n formatTrackingError,\n};\n"],"names":[],"mappings":"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","debugId":"1262db4d-0528-5697-9089-54eac807996c"}