@unbrained/pm-cli 2026.7.1 → 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 (563) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cli/commander-usage.d.ts +2 -0
  3. package/dist/cli/commander-usage.js +58 -47
  4. package/dist/cli/commander-usage.js.map +1 -1
  5. package/dist/cli/commands/aggregate.js +102 -79
  6. package/dist/cli/commands/aggregate.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +278 -243
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.js +89 -68
  10. package/dist/cli/commands/close-many.js.map +1 -1
  11. package/dist/cli/commands/close.js +157 -129
  12. package/dist/cli/commands/close.js.map +1 -1
  13. package/dist/cli/commands/comments-audit.js +50 -42
  14. package/dist/cli/commands/comments-audit.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +2 -0
  16. package/dist/cli/commands/config.js +443 -879
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/context.js +365 -287
  19. package/dist/cli/commands/context.js.map +1 -1
  20. package/dist/cli/commands/contracts.js +352 -238
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/dedupe-audit.js +46 -39
  23. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  24. package/dist/cli/commands/dedupe-merge.js +88 -69
  25. package/dist/cli/commands/dedupe-merge.js.map +1 -1
  26. package/dist/cli/commands/get.js +114 -81
  27. package/dist/cli/commands/get.js.map +1 -1
  28. package/dist/cli/commands/health.d.ts +17 -0
  29. package/dist/cli/commands/health.js +446 -307
  30. package/dist/cli/commands/health.js.map +1 -1
  31. package/dist/cli/commands/history-compact.js +209 -140
  32. package/dist/cli/commands/history-compact.js.map +1 -1
  33. package/dist/cli/commands/history-redact.js +162 -119
  34. package/dist/cli/commands/history-redact.js.map +1 -1
  35. package/dist/cli/commands/history-repair.js +120 -85
  36. package/dist/cli/commands/history-repair.js.map +1 -1
  37. package/dist/cli/commands/init.d.ts +8 -2
  38. package/dist/cli/commands/init.js +263 -162
  39. package/dist/cli/commands/init.js.map +1 -1
  40. package/dist/cli/commands/list.js +152 -102
  41. package/dist/cli/commands/list.js.map +1 -1
  42. package/dist/cli/commands/next.js +49 -32
  43. package/dist/cli/commands/next.js.map +1 -1
  44. package/dist/cli/commands/plan.js +373 -298
  45. package/dist/cli/commands/plan.js.map +1 -1
  46. package/dist/cli/commands/recurrence-parsers.js +43 -25
  47. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  48. package/dist/cli/commands/reindex.d.ts +21 -5
  49. package/dist/cli/commands/reindex.js +345 -205
  50. package/dist/cli/commands/reindex.js.map +1 -1
  51. package/dist/cli/commands/restore.d.ts +8 -7
  52. package/dist/cli/commands/restore.js +105 -69
  53. package/dist/cli/commands/restore.js.map +1 -1
  54. package/dist/cli/commands/schema.js +33 -30
  55. package/dist/cli/commands/schema.js.map +1 -1
  56. package/dist/cli/commands/search.d.ts +10 -2
  57. package/dist/cli/commands/search.js +503 -470
  58. package/dist/cli/commands/search.js.map +1 -1
  59. package/dist/cli/commands/telemetry.js +98 -87
  60. package/dist/cli/commands/telemetry.js.map +1 -1
  61. package/dist/cli/commands/test-all.js +237 -168
  62. package/dist/cli/commands/test-all.js.map +1 -1
  63. package/dist/cli/commands/test.d.ts +6 -5
  64. package/dist/cli/commands/test.js +424 -344
  65. package/dist/cli/commands/test.js.map +1 -1
  66. package/dist/cli/commands/update-many.js +57 -42
  67. package/dist/cli/commands/update-many.js.map +1 -1
  68. package/dist/cli/commands/update.d.ts +1 -1
  69. package/dist/cli/commands/update.js +738 -671
  70. package/dist/cli/commands/update.js.map +1 -1
  71. package/dist/cli/commands/validate.d.ts +18 -1
  72. package/dist/cli/commands/validate.js +466 -343
  73. package/dist/cli/commands/validate.js.map +1 -1
  74. package/dist/cli/error-guidance.js +399 -357
  75. package/dist/cli/error-guidance.js.map +1 -1
  76. package/dist/cli/main.d.ts +47 -0
  77. package/dist/cli/main.js +428 -341
  78. package/dist/cli/main.js.map +1 -1
  79. package/dist/cli/migration-gates.js +22 -45
  80. package/dist/cli/migration-gates.js.map +1 -1
  81. package/dist/cli/register-list-query.js +94 -105
  82. package/dist/cli/register-list-query.js.map +1 -1
  83. package/dist/cli/register-mutation.js +400 -416
  84. package/dist/cli/register-mutation.js.map +1 -1
  85. package/dist/cli/register-operations.js +86 -66
  86. package/dist/cli/register-operations.js.map +1 -1
  87. package/dist/cli/register-setup.js +120 -101
  88. package/dist/cli/register-setup.js.map +1 -1
  89. package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-CUC4JY3U.js} +9 -9
  90. package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
  91. package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-DKUTRY6R.js} +108 -84
  92. package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-SW5PNGCS.js} +107 -83
  94. package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-SW5PNGCS.js.map} +2 -2
  95. package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-H32VOR2Y.js} +6 -6
  96. package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-UBM632FK.js} +6 -6
  97. package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-2227673O.js} +158 -114
  98. package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
  99. package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-2ASNV4DH.js} +4 -4
  100. package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-2CHRYUXL.js} +2 -2
  101. package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-2KWL5NPW.js} +42 -27
  102. package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-36UGKF4O.js} +21 -29
  104. package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
  105. package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-3AZUFQK6.js} +6 -6
  106. package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-3LCUASYG.js} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-3Q2HBMTI.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-4NUOWFBT.js} +109 -72
  109. package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
  110. package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-55XRYWEG.js} +6 -6
  111. package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-5GVTFFTC.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-5PGBHRY3.js} +41 -26
  113. package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-66Z3X7ZG.js} +261 -161
  115. package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
  116. package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-6ITZLD4T.js} +712 -612
  117. package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
  118. package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-6YCYF2AI.js} +262 -162
  119. package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-6ZMBJRDJ.js} +492 -403
  121. package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
  122. package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-7MYWF4ZX.js} +110 -73
  123. package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
  124. package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-7NSPKJUS.js} +356 -285
  125. package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
  126. package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-7TH5NMVB.js} +95 -53
  127. package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
  128. package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-7W4H4K26.js} +713 -613
  129. package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
  130. package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-A6VOGKBA.js} +6 -6
  131. package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AIAIXG7I.js} +2 -2
  132. package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-AJEBCRIY.js} +5 -5
  133. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
  134. package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-BTX5MIQF.js} +2 -2
  136. package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-BVZZN2LH.js} +3 -3
  137. package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-CYBDUHNO.js} +3 -3
  138. package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-CZPVDLD2.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-EMPGXBUF.js} +22 -30
  140. package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
  141. package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-EUKTMRN3.js} +2 -2
  142. package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-FFOQHGNH.js} +6 -6
  143. package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-GFMSLORL.js} +6 -6
  144. package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-GRRG3MCT.js} +4 -4
  145. package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-H4GRLYJS.js} +3 -3
  146. package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-HQTPRV4D.js} +6 -6
  147. package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-I66WE2HE.js} +354 -283
  148. package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
  149. package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-IEEJQCZ4.js} +3 -3
  150. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-IG5JYZGU.js} +390 -312
  151. package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-IG5JYZGU.js.map} +2 -2
  152. package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-JMK5GCK2.js} +2 -2
  153. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-JXAUVO6X.js} +258 -169
  154. package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js.map → chunk-JXAUVO6X.js.map} +2 -2
  155. package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-K2VYLVX4.js} +2 -2
  156. package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KCO2EAN5.js} +3 -3
  157. package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-KIYCOJ63.js} +4 -4
  158. package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-KLXF7NCC.js} +2 -2
  159. package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-KN3URLKS.js} +3 -3
  160. package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-LRKMWUUV.js} +2 -2
  161. package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-LTRAF2D7.js} +3 -3
  162. package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-MNBPX5JS.js} +55 -36
  163. package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
  164. package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-MRD4T5LF.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-N2JSWVWG.js} +4 -4
  166. package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-N3QCJS4M.js} +6 -6
  167. package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-NRZS637N.js} +258 -169
  168. package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
  169. package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-OTUJZKGI.js} +3 -3
  170. package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-Q6K2OACU.js} +153 -90
  171. package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-Q6NXOHS6.js} +391 -313
  173. package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
  174. package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-QH3FSKRJ.js} +2 -2
  175. package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-RM37OPYK.js} +56 -37
  176. package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
  177. package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-S62UANU7.js} +3 -3
  178. package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-SPM2XLWI.js} +37 -28
  179. package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
  180. package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-SYNKD3ZG.js} +5 -5
  181. package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-SYVUU7EK.js} +493 -404
  182. package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
  183. package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-TPOFWBMY.js} +95 -53
  184. package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
  185. package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-TTHCEV5Q.js} +92 -77
  186. package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
  187. package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-U2BEEM2X.js} +3 -3
  188. package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-UGLU6Q2I.js} +91 -76
  189. package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
  190. package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UT73HUPC.js} +3 -3
  191. package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-UTSH5GWX.js} +4 -4
  192. package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-UWKEJMZU.js} +157 -113
  193. package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
  194. package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-W47SML5B.js} +152 -89
  195. package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WJAMWAHZ.js} +157 -118
  197. package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-XCHUVHKU.js} +626 -484
  199. package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-XEWQKDYZ.js} +626 -484
  201. package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
  202. package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-XTHQWXVC.js} +158 -119
  203. package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
  204. package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-XWGEMNBR.js} +2 -2
  205. package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-Y4NRKBFW.js} +3 -3
  206. package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-YLZZ6T54.js} +38 -29
  207. package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
  208. package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-YPKFV2JR.js} +6 -6
  209. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
  210. package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
  211. package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-ZNHEYCDD.js} +2 -2
  212. package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-ZNT7KEWE.js} +2 -2
  213. package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-SENTPZBN.js} +8 -8
  214. package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-Z7MEQCBT.js} +8 -8
  215. package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-424MX4CU.js} +7 -7
  216. package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
  217. package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-2IV4J2TR.js} +102 -81
  218. package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
  219. package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-SWY34BII.js} +101 -80
  220. package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
  221. package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-4FGNTSNV.js} +8 -8
  222. package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-7YS5MY5X.js} +8 -8
  223. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
  224. package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
  225. package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
  226. package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
  227. package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-LHVKJSPJ.js} +12 -12
  228. package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-ZQY54JNS.js} +12 -12
  229. package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-CP2EZJC7.js} +320 -199
  230. package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
  231. package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-FIZLMP7O.js} +321 -200
  232. package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
  233. package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-GYNQQPW2.js} +5 -5
  234. package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-TLW7JTQT.js} +5 -5
  235. package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-VSKYSOCD.js} +12 -12
  236. package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
  237. package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-4W5JYCEG.js} +5 -5
  238. package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-ANTOTI2I.js} +5 -5
  239. package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-HPPE6MJN.js} +5 -5
  240. package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-ZQZN54EZ.js} +5 -5
  241. package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-RPOVFMP3.js} +7 -7
  242. package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-XJNYBJGE.js} +7 -7
  243. package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-DM6JBZTS.js} +10 -10
  244. package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-RFBI5FGS.js} +10 -10
  245. package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-B3YY4WY5.js} +11 -11
  246. package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-TTSEFQTS.js} +11 -11
  247. package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-5D65CHGE.js} +7 -7
  248. package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-GPIG77EN.js} +7 -7
  249. package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-C3PEJV2C.js} +6 -6
  250. package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-ZHN7WIGX.js} +6 -6
  251. package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-D4JQ6OWN.js} +3 -3
  252. package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-VZIXDL32.js} +3 -3
  253. package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-GIBRUUOP.js} +121 -81
  254. package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-IOVAN6RU.js} +120 -80
  256. package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
  257. package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-L2U3AFKV.js} +437 -265
  258. package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
  259. package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-MM7AWXYF.js} +436 -264
  260. package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
  261. package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
  262. package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-IL7XCEX2.js} +8 -8
  263. package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-HALOTOU7.js} +214 -135
  264. package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
  265. package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-MV25P7DM.js} +213 -134
  266. package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
  267. package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
  268. package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-VYCWQFK7.js} +9 -9
  269. package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-44MODPQF.js} +124 -84
  270. package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
  271. package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-CPNAOCNF.js} +123 -83
  272. package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-F27NHENZ.js} +12 -12
  274. package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
  275. package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-HJVDQIGY.js} +8 -8
  276. package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-XSFSUUWK.js} +8 -8
  277. package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-HPMEKCAA.js} +8 -8
  278. package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-VMPWTURB.js} +8 -8
  279. package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-ETXF2ZCN.js} +59 -37
  280. package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
  281. package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-QM6YJIIS.js} +60 -38
  282. package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
  283. package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-GDZIKGR6.js} +8 -8
  284. package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-WDDBPC4D.js} +8 -8
  285. package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-BGDR73Z6.js} +373 -279
  286. package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
  287. package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-C5IMM335.js} +372 -278
  288. package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
  289. package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-CCOKZ2IQ.js} +9 -9
  290. package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-HUCENIEQ.js} +9 -9
  291. package/dist/cli-bundle/chunks/{register-list-query-7LV46VAU.js → register-list-query-ROSNIL52.js} +80 -83
  292. package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
  293. package/dist/cli-bundle/chunks/{register-list-query-SNG5PGA4.js → register-list-query-XN4ZRHSV.js} +79 -82
  294. package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
  295. package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-CFSB2MS3.js} +403 -382
  296. package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
  297. package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-KRLAHEL2.js} +402 -381
  298. package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
  299. package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-4PASGJDB.js} +112 -93
  300. package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
  301. package/dist/cli-bundle/chunks/{register-operations-C6OWLDSH.js → register-operations-MBN4KGUM.js} +113 -94
  302. package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
  303. package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-VIAWYFP5.js} +129 -104
  304. package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-ZCGKHDKL.js} +128 -103
  306. package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
  307. package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-4CBWUMCX.js} +9 -9
  308. package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
  309. package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
  310. package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
  311. package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-TDGK6N3I.js} +7 -7
  312. package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-UE5KKAUX.js} +7 -7
  313. package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-FP7MEU4S.js} +10 -10
  314. package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-K4CFLQ5S.js} +10 -10
  315. package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-NJJCALEZ.js} +6 -6
  316. package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-XT6QRKQY.js} +6 -6
  317. package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-5SQ5UDXC.js} +84 -70
  318. package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
  319. package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-HVXFZA2U.js} +85 -71
  320. package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-UFSJ5YIO.js} +15 -15
  322. package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-YCDAUBWF.js} +15 -15
  323. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
  324. package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
  325. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
  326. package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
  327. package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-FK5E75AA.js} +185 -147
  328. package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
  329. package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-H4TGWGRN.js} +184 -146
  330. package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
  331. package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
  332. package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-Y5WQVT5O.js} +15 -15
  333. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-6YAYYRLE.js} +82 -67
  334. package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-6YAYYRLE.js.map} +2 -2
  335. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-JTKKSA7Y.js} +83 -68
  336. package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-JTKKSA7Y.js.map} +1 -1
  337. package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-DTAHZ236.js} +11 -11
  338. package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-JUDU7YL4.js} +11 -11
  339. package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-732RWS5W.js} +440 -320
  340. package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
  341. package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-W7H5TEDC.js} +441 -321
  342. package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
  343. package/dist/cli-bundle/main.js +945 -812
  344. package/dist/cli-bundle/main.js.map +3 -3
  345. package/dist/core/config/nested-settings.js +89 -67
  346. package/dist/core/config/nested-settings.js.map +1 -1
  347. package/dist/core/governance/metadata-coverage.js +20 -28
  348. package/dist/core/governance/metadata-coverage.js.map +1 -1
  349. package/dist/core/history/drift-scan.js +93 -81
  350. package/dist/core/history/drift-scan.js.map +1 -1
  351. package/dist/core/item/item-type-definition.js +14 -14
  352. package/dist/core/item/item-type-definition.js.map +1 -1
  353. package/dist/core/item/type-registry.js +87 -82
  354. package/dist/core/item/type-registry.js.map +1 -1
  355. package/dist/core/output/mutation-projection.js +42 -26
  356. package/dist/core/output/mutation-projection.js.map +1 -1
  357. package/dist/core/schema/runtime-schema.js +34 -28
  358. package/dist/core/schema/runtime-schema.js.map +1 -1
  359. package/dist/core/search/semantic-defaults.js +64 -37
  360. package/dist/core/search/semantic-defaults.js.map +1 -1
  361. package/dist/core/search/vector-stores.js +32 -17
  362. package/dist/core/search/vector-stores.js.map +1 -1
  363. package/dist/core/sentry/helpers.js +31 -28
  364. package/dist/core/sentry/helpers.js.map +1 -1
  365. package/dist/core/sentry/instrument.js +54 -43
  366. package/dist/core/sentry/instrument.js.map +1 -1
  367. package/dist/core/store/front-matter-cache.js +239 -153
  368. package/dist/core/store/front-matter-cache.js.map +1 -1
  369. package/dist/core/store/item-store.js +33 -26
  370. package/dist/core/store/item-store.js.map +1 -1
  371. package/dist/core/store/settings.js +247 -203
  372. package/dist/core/store/settings.js.map +1 -1
  373. package/dist/core/test/background-runs.js +189 -160
  374. package/dist/core/test/background-runs.js.map +1 -1
  375. package/package.json +2 -2
  376. package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
  377. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
  378. package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
  379. package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
  380. package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
  381. package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
  382. package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
  383. package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
  385. package/dist/cli-bundle/chunks/chunk-4DSGXSBL.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
  387. package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
  388. package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
  389. package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
  390. package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
  391. package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
  392. package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
  394. package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
  395. package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
  396. package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
  397. package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
  399. package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
  400. package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
  401. package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
  402. package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
  403. package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
  404. package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
  405. package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
  407. package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-UYUYDGIB.js.map +0 -1
  409. package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
  410. package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
  411. package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
  412. package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
  413. package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
  414. package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
  415. package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
  416. package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
  417. package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
  418. package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
  419. package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
  420. package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
  421. package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
  422. package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
  423. package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
  424. package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
  425. package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
  426. package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
  427. package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
  428. package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
  429. package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
  430. package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
  431. package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
  432. package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
  433. package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
  434. package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
  435. package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
  436. package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
  437. package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
  438. package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
  439. package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
  440. package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
  441. package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
  442. package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
  443. package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
  444. package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
  445. package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
  446. package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
  447. package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
  448. package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
  449. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
  450. package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
  451. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
  452. package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
  453. package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
  454. package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
  455. package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
  456. package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
  457. package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
  458. /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-CUC4JY3U.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-WEIEMM73.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-H32VOR2Y.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-UBM632FK.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-2ASNV4DH.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-2CHRYUXL.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-3AZUFQK6.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-3LCUASYG.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-3Q2HBMTI.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-55XRYWEG.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js.map → chunk-5GVTFFTC.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-A6VOGKBA.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js.map → chunk-AIAIXG7I.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js.map → chunk-AJEBCRIY.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-BTX5MIQF.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-BVZZN2LH.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-CYBDUHNO.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-CZPVDLD2.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-EUKTMRN3.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-FFOQHGNH.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js.map → chunk-GFMSLORL.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-GRRG3MCT.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-H4GRLYJS.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-HQTPRV4D.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-IEEJQCZ4.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-JMK5GCK2.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js.map → chunk-K2VYLVX4.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KCO2EAN5.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-KIYCOJ63.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-KLXF7NCC.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-KN3URLKS.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-LRKMWUUV.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-LTRAF2D7.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-MRD4T5LF.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-N2JSWVWG.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-N3QCJS4M.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-OTUJZKGI.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-QH3FSKRJ.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-S62UANU7.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js.map → chunk-SYNKD3ZG.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-U2BEEM2X.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UT73HUPC.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-UTSH5GWX.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js.map → chunk-XWGEMNBR.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-Y4NRKBFW.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js.map → chunk-YPKFV2JR.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-ZNHEYCDD.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-SENTPZBN.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-Z7MEQCBT.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-424MX4CU.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-YCWQQPDS.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-4FGNTSNV.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-7YS5MY5X.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-LHVKJSPJ.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-ZQY54JNS.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-GYNQQPW2.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-TLW7JTQT.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-VSKYSOCD.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-XTMAPS7I.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-4W5JYCEG.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-ANTOTI2I.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-HPPE6MJN.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-ZQZN54EZ.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-RPOVFMP3.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-XJNYBJGE.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-DM6JBZTS.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-RFBI5FGS.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-B3YY4WY5.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-TTSEFQTS.js.map} +0 -0
  528. /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-5D65CHGE.js.map} +0 -0
  529. /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-GPIG77EN.js.map} +0 -0
  530. /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-C3PEJV2C.js.map} +0 -0
  531. /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-ZHN7WIGX.js.map} +0 -0
  532. /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-D4JQ6OWN.js.map} +0 -0
  533. /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-VZIXDL32.js.map} +0 -0
  534. /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-DD7L7BNL.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-IL7XCEX2.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-IX4YEWMY.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-VYCWQFK7.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-F27NHENZ.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-HHVQQP6C.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-HJVDQIGY.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-XSFSUUWK.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-HPMEKCAA.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-VMPWTURB.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-GDZIKGR6.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-WDDBPC4D.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{profile-QLER5ENE.js.map → profile-CCOKZ2IQ.js.map} +0 -0
  547. /package/dist/cli-bundle/chunks/{profile-4OMM32CD.js.map → profile-HUCENIEQ.js.map} +0 -0
  548. /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-4CBWUMCX.js.map} +0 -0
  549. /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-5UEAGG3W.js.map} +0 -0
  550. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
  551. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
  552. /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-TDGK6N3I.js.map} +0 -0
  553. /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-UE5KKAUX.js.map} +0 -0
  554. /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-FP7MEU4S.js.map} +0 -0
  555. /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-K4CFLQ5S.js.map} +0 -0
  556. /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-NJJCALEZ.js.map} +0 -0
  557. /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-XT6QRKQY.js.map} +0 -0
  558. /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-UFSJ5YIO.js.map} +0 -0
  559. /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-YCDAUBWF.js.map} +0 -0
  560. /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-MTCFES6X.js.map} +0 -0
  561. /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-Y5WQVT5O.js.map} +0 -0
  562. /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-DTAHZ236.js.map} +0 -0
  563. /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-JUDU7YL4.js.map} +0 -0
@@ -4,7 +4,7 @@
4
4
  * Implements the pm context 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]="7794eae6-2b67-5061-891e-af78b0682685")}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]="f244506b-038b-5a3d-8184-f0b73e30f300")}catch(e){}}();
8
8
  import { SETTINGS_DEFAULTS, EXIT_CODE } from "../../core/shared/constants.js";
9
9
  import { PmCliError } from "../../core/shared/errors.js";
10
10
  import { compareTimestampStrings } from "../../core/shared/time.js";
@@ -787,58 +787,29 @@ function formatAgendaLine(event) {
787
787
  }
788
788
  return base;
789
789
  }
790
- /**
791
- * Implements render context markdown for the public runtime surface of this module.
792
- */
793
- export function renderContextMarkdown(result) {
794
- const lines = [];
795
- const focusFields = result.focus_fields;
796
- const renderFocus = (item) => focusFields ? formatProjectedFocusLine(item, focusFields) : formatFocusLine(item);
797
- lines.push("# pm context");
798
- lines.push("");
799
- lines.push(`- now: ${result.now}`);
800
- lines.push(`- depth: ${result.depth}`);
801
- if (result.filters.parent) {
802
- lines.push(`- scope: subtree of ${result.filters.parent}`);
803
- }
804
- lines.push(`- active_items: ${result.summary.active_items} (in_progress: ${result.summary.in_progress}, open: ${result.summary.open})`);
805
- if (result.summary.total_items !== undefined) {
806
- lines.push(`- total_items: ${result.summary.total_items} (closed: ${result.summary.closed ?? 0}, canceled: ${result.summary.canceled ?? 0})`);
807
- }
808
- lines.push(`- agenda_events: ${result.summary.agenda_events}`);
809
- lines.push(`- blocked_fallback_used: ${result.summary.blocked_fallback_used}`);
810
- const renderedSections = result.sections_included.filter((section) => section !== "blockers" || (result.blockers?.length ?? 0) > 0);
811
- if (renderedSections.length > 0) {
812
- lines.push(`- sections: ${renderedSections.join(", ")}`);
813
- }
814
- lines.push("");
815
- lines.push("## High-level focus");
816
- if (result.high_level.length === 0) {
817
- lines.push("No high-level active items.");
790
+ function pushContextFocusSection(lines, title, rows, emptyText, renderFocus) {
791
+ lines.push(`## ${title}`);
792
+ if (rows.length === 0) {
793
+ lines.push(emptyText);
818
794
  }
819
795
  else {
820
- for (const item of result.high_level) {
796
+ for (const item of rows) {
821
797
  lines.push(`- ${renderFocus(item)}`);
822
798
  }
823
799
  }
824
800
  lines.push("");
825
- lines.push("## Low-level focus");
826
- if (result.low_level.length === 0) {
827
- lines.push("No low-level active items.");
801
+ }
802
+ function pushBlockedFallbackSection(lines, result, renderFocus) {
803
+ if (result.blocked_fallback.length === 0) {
804
+ return;
828
805
  }
829
- else {
830
- for (const item of result.low_level) {
831
- lines.push(`- ${renderFocus(item)}`);
832
- }
806
+ lines.push("## Blocked fallback");
807
+ for (const item of result.blocked_fallback) {
808
+ lines.push(`- ${renderFocus(item)}`);
833
809
  }
834
810
  lines.push("");
835
- if (result.blocked_fallback.length > 0) {
836
- lines.push("## Blocked fallback");
837
- for (const item of result.blocked_fallback) {
838
- lines.push(`- ${renderFocus(item)}`);
839
- }
840
- lines.push("");
841
- }
811
+ }
812
+ function pushAgendaSection(lines, result) {
842
813
  lines.push("## Agenda");
843
814
  lines.push(`- events: ${result.agenda.summary.events} (deadlines: ${result.agenda.summary.deadlines}, reminders: ${result.agenda.summary.reminders}, scheduled: ${result.agenda.summary.scheduled})`);
844
815
  if (result.agenda.events.length === 0) {
@@ -850,111 +821,177 @@ export function renderContextMarkdown(result) {
850
821
  }
851
822
  }
852
823
  lines.push("");
853
- if (result.hierarchy && result.hierarchy.length > 0) {
854
- lines.push("## Hierarchy");
855
- for (const node of result.hierarchy) {
856
- const pct = node.children_total > 0 ? Math.round((node.children_closed / node.children_total) * 100) : 0;
857
- lines.push(`- ${node.id} ${node.type} ${node.status} "${node.title}" [${node.children_closed}/${node.children_total} done ${pct}%]`);
858
- for (const child of node.children) {
859
- const cpct = child.children_total > 0 ? Math.round((child.children_closed / child.children_total) * 100) : 0;
860
- lines.push(` - ${child.id} ${child.type} ${child.status} "${child.title}" [${child.children_closed}/${child.children_total} done ${cpct}%]`);
861
- }
862
- }
863
- lines.push("");
824
+ }
825
+ function pushHierarchySection(lines, result) {
826
+ if (!result.hierarchy || result.hierarchy.length === 0) {
827
+ return;
864
828
  }
865
- if (result.progress && result.progress.length > 0) {
866
- lines.push("## Progress");
867
- for (const entry of result.progress) {
868
- lines.push(`- ${entry.id} "${entry.title}" ${entry.completion_pct}% (${entry.closed}/${entry.total} closed, ${entry.in_progress} wip, ${entry.open} open, ${entry.blocked} blocked)`);
869
- }
870
- lines.push("");
871
- }
872
- if (result.recently_created && result.recently_created.length > 0) {
873
- lines.push("## Recently created");
874
- for (const item of result.recently_created) {
875
- // The date prefix is dropped under --fields: created_at may be projected
876
- // out, and the projected line already surfaces whatever fields were asked.
877
- lines.push(focusFields ? `- ${renderFocus(item)}` : `- ${dateTokenForTimestamp(item.created_at)} ${formatFocusLine(item)}`);
829
+ lines.push("## Hierarchy");
830
+ for (const node of result.hierarchy) {
831
+ const pct = node.children_total > 0 ? Math.round((node.children_closed / node.children_total) * 100) : 0;
832
+ lines.push(`- ${node.id} ${node.type} ${node.status} "${node.title}" [${node.children_closed}/${node.children_total} done ${pct}%]`);
833
+ for (const child of node.children) {
834
+ const cpct = child.children_total > 0 ? Math.round((child.children_closed / child.children_total) * 100) : 0;
835
+ lines.push(` - ${child.id} ${child.type} ${child.status} "${child.title}" [${child.children_closed}/${child.children_total} done ${cpct}%]`);
878
836
  }
879
- lines.push("");
880
837
  }
881
- if (result.unparented && result.unparented.length > 0) {
882
- lines.push("## Unparented");
883
- for (const item of result.unparented) {
884
- lines.push(`- ${renderFocus(item)}`);
885
- }
886
- lines.push("");
838
+ lines.push("");
839
+ }
840
+ function pushProgressSection(lines, result) {
841
+ if (!result.progress || result.progress.length === 0) {
842
+ return;
887
843
  }
888
- if (result.activity && result.activity.length > 0) {
889
- lines.push("## Recent activity");
890
- for (const entry of result.activity) {
891
- const msg = entry.msg ? ` ${entry.msg}` : "";
892
- lines.push(`- ${entry.ts.slice(0, 16)}Z ${entry.id} ${entry.op} by:${entry.author}${msg}`);
893
- }
894
- lines.push("");
895
- }
896
- if (result.blockers && result.blockers.length > 0) {
897
- lines.push("## Blockers");
898
- for (const entry of result.blockers) {
899
- const by = entry.blocked_by ? `blocked_by:${entry.blocked_by}(${entry.blocked_by_status ?? "?"})` : "blocked_by:-";
900
- const reason = entry.blocked_reason ? ` reason:"${entry.blocked_reason}"` : "";
901
- const note = entry.unblock_note ? ` unblock:"${entry.unblock_note}"` : "";
902
- lines.push(`- ${entry.id} "${entry.title}" ${by}${reason}${note}`);
903
- }
904
- lines.push("");
844
+ lines.push("## Progress");
845
+ for (const entry of result.progress) {
846
+ lines.push(`- ${entry.id} "${entry.title}" ${entry.completion_pct}% (${entry.closed}/${entry.total} closed, ${entry.in_progress} wip, ${entry.open} open, ${entry.blocked} blocked)`);
905
847
  }
906
- if (result.files && result.files.length > 0) {
907
- lines.push("## Hot files");
908
- for (const file of result.files) {
909
- lines.push(`- ${file.path} refs:${file.references} items:[${file.items.join(",")}]`);
910
- }
911
- lines.push("");
848
+ lines.push("");
849
+ }
850
+ function pushRecentlyCreatedSection(lines, result, focusFields, renderFocus) {
851
+ if (!result.recently_created || result.recently_created.length === 0) {
852
+ return;
912
853
  }
913
- if (result.workload && result.workload.length > 0) {
914
- lines.push("## Workload");
915
- for (const entry of result.workload) {
916
- const who = entry.assignee ?? "(unassigned)";
917
- lines.push(`- ${who} active:${entry.active} wip:${entry.in_progress} items:[${entry.items.join(",")}]`);
918
- }
919
- lines.push("");
854
+ lines.push("## Recently created");
855
+ for (const item of result.recently_created) {
856
+ lines.push(focusFields ? `- ${renderFocus(item)}` : `- ${dateTokenForTimestamp(item.created_at)} ${formatFocusLine(item)}`);
920
857
  }
921
- if (result.staleness && result.staleness.length > 0) {
922
- lines.push("## Stale items");
923
- for (const entry of result.staleness) {
924
- lines.push(`- ${entry.id} ${entry.status} stale:${entry.stale_days}d last:${entry.updated_at.slice(0, 10)} "${entry.title}"`);
925
- }
926
- lines.push("");
927
- }
928
- if (result.tests) {
929
- lines.push("## Test health");
930
- lines.push(`- items_with_tests: ${result.tests.items_with_tests}`);
931
- lines.push(`- items_with_recent_runs: ${result.tests.items_with_recent_runs}`);
932
- lines.push(`- passed: ${result.tests.recent_runs.passed}, failed: ${result.tests.recent_runs.failed}, skipped: ${result.tests.recent_runs.skipped}`);
933
- if (result.tests.items_failing.length > 0) {
934
- lines.push(`- items_failing: [${result.tests.items_failing.join(",")}]`);
935
- }
936
- lines.push("");
858
+ lines.push("");
859
+ }
860
+ function pushUnparentedSection(lines, result, renderFocus) {
861
+ if (!result.unparented || result.unparented.length === 0) {
862
+ return;
863
+ }
864
+ lines.push("## Unparented");
865
+ for (const item of result.unparented) {
866
+ lines.push(`- ${renderFocus(item)}`);
867
+ }
868
+ lines.push("");
869
+ }
870
+ function pushActivitySection(lines, result) {
871
+ if (!result.activity || result.activity.length === 0) {
872
+ return;
873
+ }
874
+ lines.push("## Recent activity");
875
+ for (const entry of result.activity) {
876
+ const msg = entry.msg ? ` ${entry.msg}` : "";
877
+ lines.push(`- ${entry.ts.slice(0, 16)}Z ${entry.id} ${entry.op} by:${entry.author}${msg}`);
878
+ }
879
+ lines.push("");
880
+ }
881
+ function pushBlockersSection(lines, result) {
882
+ if (!result.blockers || result.blockers.length === 0) {
883
+ return;
884
+ }
885
+ lines.push("## Blockers");
886
+ for (const entry of result.blockers) {
887
+ const by = entry.blocked_by ? `blocked_by:${entry.blocked_by}(${entry.blocked_by_status ?? "?"})` : "blocked_by:-";
888
+ const reason = entry.blocked_reason ? ` reason:"${entry.blocked_reason}"` : "";
889
+ const note = entry.unblock_note ? ` unblock:"${entry.unblock_note}"` : "";
890
+ lines.push(`- ${entry.id} "${entry.title}" ${by}${reason}${note}`);
937
891
  }
892
+ lines.push("");
893
+ }
894
+ function pushFilesSection(lines, result) {
895
+ if (!result.files || result.files.length === 0) {
896
+ return;
897
+ }
898
+ lines.push("## Hot files");
899
+ for (const file of result.files) {
900
+ lines.push(`- ${file.path} refs:${file.references} items:[${file.items.join(",")}]`);
901
+ }
902
+ lines.push("");
903
+ }
904
+ function pushWorkloadSection(lines, result) {
905
+ if (!result.workload || result.workload.length === 0) {
906
+ return;
907
+ }
908
+ lines.push("## Workload");
909
+ for (const entry of result.workload) {
910
+ const who = entry.assignee ?? "(unassigned)";
911
+ lines.push(`- ${who} active:${entry.active} wip:${entry.in_progress} items:[${entry.items.join(",")}]`);
912
+ }
913
+ lines.push("");
914
+ }
915
+ function pushStalenessSection(lines, result) {
916
+ if (!result.staleness || result.staleness.length === 0) {
917
+ return;
918
+ }
919
+ lines.push("## Stale items");
920
+ for (const entry of result.staleness) {
921
+ lines.push(`- ${entry.id} ${entry.status} stale:${entry.stale_days}d last:${entry.updated_at.slice(0, 10)} "${entry.title}"`);
922
+ }
923
+ lines.push("");
924
+ }
925
+ function pushTestHealthSection(lines, result) {
926
+ if (!result.tests) {
927
+ return;
928
+ }
929
+ lines.push("## Test health");
930
+ lines.push(`- items_with_tests: ${result.tests.items_with_tests}`);
931
+ lines.push(`- items_with_recent_runs: ${result.tests.items_with_recent_runs}`);
932
+ lines.push(`- passed: ${result.tests.recent_runs.passed}, failed: ${result.tests.recent_runs.failed}, skipped: ${result.tests.recent_runs.skipped}`);
933
+ if (result.tests.items_failing.length > 0) {
934
+ lines.push(`- items_failing: [${result.tests.items_failing.join(",")}]`);
935
+ }
936
+ lines.push("");
937
+ }
938
+ function pushEmptyContextSuggestions(lines, result) {
938
939
  const isEmpty = result.summary.active_items === 0 &&
939
940
  result.summary.blocked === 0 &&
940
941
  result.agenda.summary.events === 0;
941
- if (isEmpty) {
942
- lines.push("## Suggestions");
943
- lines.push("No active work items or upcoming events. Consider:");
944
- lines.push("- `pm create --type Task --title \"...\"` to add a new work item");
945
- lines.push("- `pm list --status closed --limit 5` to review recent completions");
946
- lines.push("- `pm search <keywords>` to find related past work");
947
- lines.push("- `pm aggregate` for a full project status overview");
942
+ if (!isEmpty) {
943
+ return;
948
944
  }
949
- return lines.join("\n");
945
+ lines.push("## Suggestions");
946
+ lines.push("No active work items or upcoming events. Consider:");
947
+ lines.push("- `pm create --type Task --title \"...\"` to add a new work item");
948
+ lines.push("- `pm list --status closed --limit 5` to review recent completions");
949
+ lines.push("- `pm search <keywords>` to find related past work");
950
+ lines.push("- `pm aggregate` for a full project status overview");
950
951
  }
951
- // ---------------------------------------------------------------------------
952
- // Main runner
953
- // ---------------------------------------------------------------------------
954
952
  /**
955
- * Implements run context for the public runtime surface of this module.
953
+ * Implements render context markdown for the public runtime surface of this module.
956
954
  */
957
- export async function runContext(options, global) {
955
+ export function renderContextMarkdown(result) {
956
+ const lines = [];
957
+ const focusFields = result.focus_fields;
958
+ const renderFocus = (item) => focusFields ? formatProjectedFocusLine(item, focusFields) : formatFocusLine(item);
959
+ lines.push("# pm context");
960
+ lines.push("");
961
+ lines.push(`- now: ${result.now}`);
962
+ lines.push(`- depth: ${result.depth}`);
963
+ if (result.filters.parent) {
964
+ lines.push(`- scope: subtree of ${result.filters.parent}`);
965
+ }
966
+ lines.push(`- active_items: ${result.summary.active_items} (in_progress: ${result.summary.in_progress}, open: ${result.summary.open})`);
967
+ if (result.summary.total_items !== undefined) {
968
+ lines.push(`- total_items: ${result.summary.total_items} (closed: ${result.summary.closed ?? 0}, canceled: ${result.summary.canceled ?? 0})`);
969
+ }
970
+ lines.push(`- agenda_events: ${result.summary.agenda_events}`);
971
+ lines.push(`- blocked_fallback_used: ${result.summary.blocked_fallback_used}`);
972
+ const renderedSections = result.sections_included.filter((section) => section !== "blockers" || (result.blockers?.length ?? 0) > 0);
973
+ if (renderedSections.length > 0) {
974
+ lines.push(`- sections: ${renderedSections.join(", ")}`);
975
+ }
976
+ lines.push("");
977
+ pushContextFocusSection(lines, "High-level focus", result.high_level, "No high-level active items.", renderFocus);
978
+ pushContextFocusSection(lines, "Low-level focus", result.low_level, "No low-level active items.", renderFocus);
979
+ pushBlockedFallbackSection(lines, result, renderFocus);
980
+ pushAgendaSection(lines, result);
981
+ pushHierarchySection(lines, result);
982
+ pushProgressSection(lines, result);
983
+ pushRecentlyCreatedSection(lines, result, focusFields, renderFocus);
984
+ pushUnparentedSection(lines, result, renderFocus);
985
+ pushActivitySection(lines, result);
986
+ pushBlockersSection(lines, result);
987
+ pushFilesSection(lines, result);
988
+ pushWorkloadSection(lines, result);
989
+ pushStalenessSection(lines, result);
990
+ pushTestHealthSection(lines, result);
991
+ pushEmptyContextSuggestions(lines, result);
992
+ return lines.join("\n");
993
+ }
994
+ async function resolveContextRuntime(options, global) {
958
995
  const pmRoot = resolvePmRoot(process.cwd(), global.path);
959
996
  const settings = await readSettings(pmRoot);
960
997
  /* c8 ignore start -- settings persistence currently always materializes context defaults */
@@ -962,65 +999,69 @@ export async function runContext(options, global) {
962
999
  /* c8 ignore stop */
963
1000
  const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
964
1001
  const depth = parseContextDepth(options.depth, contextSettings);
965
- const limit = parseContextLimit(options.limit, depth);
966
- const sectionsIncluded = parseContextSections(options.section, depth, contextSettings);
967
- const activityLimit = parseActivityLimit(options.activityLimit, contextSettings);
968
- const staleThresholdDays = parseStaleThresholdDays(options.staleThreshold, contextSettings);
969
- const parentScope = parseContextParent(options.parent);
970
- const focusFields = parseContextFocusFields(options.fields);
971
- const needsAllItems = sectionsIncluded.some((s) => ["hierarchy", "progress", "blockers", "staleness", "recently_created", "unparented"].includes(s));
972
- const baseListOptions = stripListProjectionFlags(options);
973
- // Structural reads must see the FULL corpus: --limit/--offset are per-section
974
- // display caps applied later via .slice(0, limit), not corpus filters. Passing
975
- // them to runList would truncate the data the hierarchy/progress rollups and
976
- // (critically) --parent subtree resolution depend on — yielding wrong rollups
977
- // or a false NOT_FOUND for an anchor that paginated out of view.
978
- const unpaginatedListOptions = (extra) => ({
1002
+ return {
1003
+ settings,
1004
+ contextSettings,
1005
+ statusRegistry,
1006
+ depth,
1007
+ limit: parseContextLimit(options.limit, depth),
1008
+ sectionsIncluded: parseContextSections(options.section, depth, contextSettings),
1009
+ activityLimit: parseActivityLimit(options.activityLimit, contextSettings),
1010
+ staleThresholdDays: parseStaleThresholdDays(options.staleThreshold, contextSettings),
1011
+ parentScope: parseContextParent(options.parent),
1012
+ focusFields: parseContextFocusFields(options.fields),
1013
+ baseListOptions: stripListProjectionFlags(options),
1014
+ };
1015
+ }
1016
+ function contextNeedsAllItems(sectionsIncluded) {
1017
+ return sectionsIncluded.some((section) => ["hierarchy", "progress", "blockers", "staleness", "recently_created", "unparented"].includes(section));
1018
+ }
1019
+ function buildUnpaginatedContextListOptions(baseListOptions, extra) {
1020
+ return {
979
1021
  ...baseListOptions,
980
1022
  ...extra,
981
1023
  noTruncate: true,
982
1024
  limit: undefined,
983
1025
  offset: undefined,
984
- });
985
- // Subtree scoping also needs the complete active set before filtering, so the
986
- // focus rows aren't pre-truncated by --limit ahead of the parent filter.
987
- const listOptions = parentScope === undefined
988
- ? { ...baseListOptions, excludeTerminal: true }
989
- : unpaginatedListOptions({ excludeTerminal: true });
1026
+ };
1027
+ }
1028
+ async function loadContextCorpus(options, global, runtime) {
1029
+ const needsAllItems = contextNeedsAllItems(runtime.sectionsIncluded);
1030
+ const listOptions = runtime.parentScope === undefined
1031
+ ? { ...runtime.baseListOptions, excludeTerminal: true }
1032
+ : buildUnpaginatedContextListOptions(runtime.baseListOptions, { excludeTerminal: true });
990
1033
  const listed = await runList(undefined, listOptions, global);
991
1034
  let listedFrontMatter = listed.items;
992
- // --parent needs the whole corpus to walk descendants; so do hierarchy-style
993
- // sections. Fetch it once (unpaginated) and reuse for both.
994
1035
  let allItems = listedFrontMatter;
995
- if (needsAllItems || parentScope !== undefined) {
996
- const allListed = await runList(undefined, unpaginatedListOptions({ excludeTerminal: false }), global);
1036
+ if (needsAllItems || runtime.parentScope !== undefined) {
1037
+ const allListed = await runList(undefined, buildUnpaginatedContextListOptions(runtime.baseListOptions, { excludeTerminal: false }), global);
997
1038
  allItems = allListed.items;
998
1039
  }
999
- // The unfiltered corpus stays the reference for cross-item metadata resolution
1000
- // (e.g. a subtree blocker whose blocked_by points OUTSIDE the subtree must still
1001
- // resolve its title/status). Only the enumeration sets below get subtree-scoped.
1002
1040
  const fullCorpus = allItems;
1003
- let subtreeIds;
1004
- if (parentScope !== undefined) {
1005
- const subtree = collectSubtreeIds(fullCorpus, parentScope);
1006
- if (!subtree.found) {
1007
- throw new PmCliError(`Context --parent item not found: ${parentScope}`, EXIT_CODE.NOT_FOUND);
1008
- }
1009
- subtreeIds = subtree.ids;
1010
- listedFrontMatter = listedFrontMatter.filter((item) => subtreeIds?.has(item.id.trim().toLowerCase()));
1011
- allItems = allItems.filter((item) => subtreeIds?.has(item.id.trim().toLowerCase()));
1041
+ const subtreeIds = resolveContextSubtreeIds(runtime.parentScope, fullCorpus);
1042
+ if (subtreeIds) {
1043
+ listedFrontMatter = listedFrontMatter.filter((item) => subtreeIds.has(item.id.trim().toLowerCase()));
1044
+ allItems = allItems.filter((item) => subtreeIds.has(item.id.trim().toLowerCase()));
1012
1045
  }
1046
+ return { listed, listedFrontMatter, allItems, fullCorpus, subtreeIds };
1047
+ }
1048
+ function resolveContextSubtreeIds(parentScope, fullCorpus) {
1049
+ if (parentScope === undefined) {
1050
+ return undefined;
1051
+ }
1052
+ const subtree = collectSubtreeIds(fullCorpus, parentScope);
1053
+ if (!subtree.found) {
1054
+ throw new PmCliError(`Context --parent item not found: ${parentScope}`, EXIT_CODE.NOT_FOUND);
1055
+ }
1056
+ return subtree.ids;
1057
+ }
1058
+ function resolveContextFocusGroups(listedFrontMatter, allItems, statusRegistry, sectionsIncluded, limit) {
1013
1059
  const ranked = [...listedFrontMatter].sort((left, right) => compareCriticalItems(left, right, statusRegistry));
1014
- /* c8 ignore start -- fallback applies only to custom schemas that intentionally define no active statuses */
1015
- const activeStatuses = statusRegistry.active_statuses.size > 0
1016
- ? statusRegistry.active_statuses
1017
- : new Set([statusRegistry.open_status]);
1018
- /* c8 ignore stop */
1019
- const blockedStatuses = statusRegistry.blocked_statuses;
1060
+ const activeStatuses = statusRegistry.active_statuses;
1020
1061
  const activeItems = ranked.filter((item) => activeStatuses.has(normalizeStatusForRegistry(item.status, statusRegistry)));
1021
- const blockedItems = ranked.filter((item) => blockedStatuses.has(normalizeStatusForRegistry(item.status, statusRegistry)));
1062
+ const blockedItems = ranked.filter((item) => statusRegistry.blocked_statuses.has(normalizeStatusForRegistry(item.status, statusRegistry)));
1022
1063
  const childrenByParent = buildChildrenByParent(allItems);
1023
- const focusChildrenByParent = needsAllItems ? childrenByParent : undefined;
1064
+ const focusChildrenByParent = contextNeedsAllItems(sectionsIncluded) ? childrenByParent : undefined;
1024
1065
  const highLevel = activeItems
1025
1066
  .filter((item) => HIGH_LEVEL_TYPES.has(item.type))
1026
1067
  .slice(0, limit)
@@ -1030,73 +1071,147 @@ export async function runContext(options, global) {
1030
1071
  .slice(0, limit)
1031
1072
  .map((item) => toContextFocusItem(item, statusRegistry, focusChildrenByParent));
1032
1073
  const blockedFallbackUsed = activeItems.length === 0;
1033
- const blockedFallback = blockedFallbackUsed
1034
- ? blockedItems.slice(0, limit).map((item) => toContextFocusItem(item, statusRegistry, focusChildrenByParent))
1035
- : [];
1074
+ return {
1075
+ activeItems,
1076
+ blockedItems,
1077
+ highLevel,
1078
+ lowLevel,
1079
+ blockedFallback: blockedFallbackUsed
1080
+ ? blockedItems.slice(0, limit).map((item) => toContextFocusItem(item, statusRegistry, focusChildrenByParent))
1081
+ : [],
1082
+ blockedFallbackUsed,
1083
+ };
1084
+ }
1085
+ async function buildContextAgenda(options, global, runtime, subtreeIds) {
1036
1086
  const calendarOptions = {
1037
- ...baseListOptions,
1087
+ ...runtime.baseListOptions,
1038
1088
  view: "agenda",
1039
1089
  include: "all",
1040
- // When scoping to a subtree, pull the full agenda so the subtree filter sees
1041
- // every candidate event before the final per-section slice.
1042
- limit: parentScope === undefined ? String(limit) : undefined,
1090
+ limit: runtime.parentScope === undefined ? String(runtime.limit) : undefined,
1043
1091
  };
1044
1092
  const agenda = await runCalendar(calendarOptions, global);
1045
1093
  const scopedAgenda = subtreeIds === undefined
1046
1094
  ? agenda.events
1047
1095
  : agenda.events.filter((event) => subtreeIds.has(event.item_id.trim().toLowerCase()));
1048
- const agendaEvents = filterTerminalCalendarEvents(scopedAgenda, statusRegistry).slice(0, limit);
1049
- const agendaSummary = summarizeAgenda(agendaEvents);
1050
- const warnings = mergeSortedWarnings(listed.warnings, agenda.warnings);
1051
- const inProgressStatus = normalizeStatusInput("in_progress", statusRegistry);
1052
- const openStatus = normalizeStatusInput("open", statusRegistry);
1053
- const inProgressCount = activeItems.filter((item) => normalizeStatusForRegistry(item.status, statusRegistry) === inProgressStatus).length;
1054
- const openCount = activeItems.filter((item) => normalizeStatusForRegistry(item.status, statusRegistry) === openStatus).length;
1055
- const now = agenda.now;
1056
- // Resolve blocker/dependency metadata against the full corpus so references
1057
- // that point outside a --parent subtree still render their title/status.
1058
- const itemMap = new Map();
1059
- for (const item of fullCorpus) {
1060
- itemMap.set(item.id, item);
1096
+ const agendaEvents = filterTerminalCalendarEvents(scopedAgenda, runtime.statusRegistry).slice(0, runtime.limit);
1097
+ return { agenda, agendaEvents, agendaSummary: summarizeAgenda(agendaEvents) };
1098
+ }
1099
+ function countContextStatus(items, status, statusRegistry) {
1100
+ const targetStatus = String(status);
1101
+ return items.filter((item) => normalizeStatusForRegistry(item.status, statusRegistry) === targetStatus).length;
1102
+ }
1103
+ async function buildOptionalContextSections(params) {
1104
+ const { runtime, allItems, fullCorpus, focusGroups, now, global } = params;
1105
+ const childrenByParent = buildChildrenByParent(allItems);
1106
+ const itemMap = new Map(fullCorpus.map((item) => [item.id, item]));
1107
+ const allNonTerminal = allItems.filter((item) => !isTerminalStatus(item.status, runtime.statusRegistry));
1108
+ const has = (section) => runtime.sectionsIncluded.includes(section);
1109
+ return {
1110
+ hierarchy: has("hierarchy") ? buildHierarchy(allItems, focusGroups.activeItems, runtime.statusRegistry, runtime.limit) : undefined,
1111
+ activity: has("activity") ? await buildActivity(runtime.activityLimit, global) : undefined,
1112
+ progress: has("progress") ? buildProgress(allItems, focusGroups.activeItems, runtime.statusRegistry, runtime.limit) : undefined,
1113
+ blockersSection: has("blockers") ? buildBlockers(focusGroups.blockedItems, itemMap, runtime.limit) : undefined,
1114
+ recentlyCreated: has("recently_created")
1115
+ ? buildRecentlyCreated(allNonTerminal, runtime.statusRegistry, childrenByParent, runtime.limit)
1116
+ : undefined,
1117
+ unparented: has("unparented") ? buildUnparented(allNonTerminal, runtime.statusRegistry, childrenByParent, runtime.limit) : undefined,
1118
+ filesSection: has("files") ? buildHotFiles(focusGroups.activeItems, runtime.limit) : undefined,
1119
+ workload: has("workload") ? buildWorkload(focusGroups.activeItems, runtime.statusRegistry, runtime.limit) : undefined,
1120
+ staleness: has("staleness") ? buildStaleness(allNonTerminal, runtime.staleThresholdDays, now, runtime.limit) : undefined,
1121
+ tests: has("tests") ? buildTestHealth(focusGroups.activeItems) : undefined,
1122
+ };
1123
+ }
1124
+ function buildContextSummaryExtras(needsAllItems, allItems, statusRegistry) {
1125
+ if (!needsAllItems) {
1126
+ return {};
1061
1127
  }
1062
- const allNonTerminal = allItems.filter((item) => !isTerminalStatus(item.status, statusRegistry));
1063
- const has = (section) => sectionsIncluded.includes(section);
1064
- const hierarchy = has("hierarchy") ? buildHierarchy(allItems, activeItems, statusRegistry, limit) : undefined;
1065
- const activity = has("activity") ? await buildActivity(activityLimit, global) : undefined;
1066
- const progress = has("progress") ? buildProgress(allItems, activeItems, statusRegistry, limit) : undefined;
1067
- const blockersSection = has("blockers") ? buildBlockers(blockedItems, itemMap, limit) : undefined;
1068
- const recentlyCreated = has("recently_created")
1069
- ? buildRecentlyCreated(allNonTerminal, statusRegistry, childrenByParent, limit)
1070
- : undefined;
1071
- const unparented = has("unparented")
1072
- ? buildUnparented(allNonTerminal, statusRegistry, childrenByParent, limit)
1073
- : undefined;
1074
- const filesSection = has("files") ? buildHotFiles(activeItems, limit) : undefined;
1075
- const workload = has("workload") ? buildWorkload(activeItems, statusRegistry, limit) : undefined;
1076
- const staleness = has("staleness") ? buildStaleness(allNonTerminal, staleThresholdDays, now, limit) : undefined;
1077
- const tests = has("tests") ? buildTestHealth(activeItems) : undefined;
1078
- const summaryExtras = needsAllItems
1079
- ? {
1080
- total_items: allItems.length,
1081
- closed: allItems.filter((i) => isClosedStatus(i.status, statusRegistry)).length,
1082
- canceled: allItems.filter((i) => {
1083
- const canceledStatus = normalizeStatusInput("canceled", statusRegistry);
1084
- return normalizeStatusForRegistry(i.status, statusRegistry) === canceledStatus;
1085
- }).length,
1086
- }
1087
- : {};
1128
+ const canceledStatus = normalizeStatusInput("canceled", statusRegistry);
1129
+ return {
1130
+ total_items: allItems.length,
1131
+ closed: allItems.filter((item) => isClosedStatus(item.status, statusRegistry)).length,
1132
+ canceled: allItems.filter((item) => normalizeStatusForRegistry(item.status, statusRegistry) === canceledStatus).length,
1133
+ };
1134
+ }
1135
+ function attachOptionalContextSections(result, sections) {
1136
+ if (sections.hierarchy)
1137
+ result.hierarchy = sections.hierarchy;
1138
+ if (sections.activity)
1139
+ result.activity = sections.activity;
1140
+ if (sections.progress)
1141
+ result.progress = sections.progress;
1142
+ if (sections.blockersSection)
1143
+ result.blockers = sections.blockersSection;
1144
+ if (sections.recentlyCreated)
1145
+ result.recently_created = sections.recentlyCreated;
1146
+ if (sections.unparented)
1147
+ result.unparented = sections.unparented;
1148
+ if (sections.filesSection)
1149
+ result.files = sections.filesSection;
1150
+ if (sections.workload)
1151
+ result.workload = sections.workload;
1152
+ if (sections.staleness)
1153
+ result.staleness = sections.staleness;
1154
+ if (sections.tests)
1155
+ result.tests = sections.tests;
1156
+ }
1157
+ function applyContextFocusProjection(result, focusFields) {
1158
+ if (!focusFields) {
1159
+ return;
1160
+ }
1161
+ result.focus_fields = focusFields;
1162
+ result.high_level = projectContextFocusRows(result.high_level, focusFields);
1163
+ result.low_level = projectContextFocusRows(result.low_level, focusFields);
1164
+ result.blocked_fallback = projectContextFocusRows(result.blocked_fallback, focusFields);
1165
+ if (result.recently_created) {
1166
+ result.recently_created = projectContextFocusRows(result.recently_created, focusFields);
1167
+ }
1168
+ if (result.unparented) {
1169
+ result.unparented = projectContextFocusRows(result.unparented, focusFields);
1170
+ }
1171
+ }
1172
+ function maybeAttachEmptyContextSuggestions(result, activeItems, blockedItems) {
1173
+ if (activeItems.length > 0 || blockedItems.length > 0 || result.agenda.events.length > 0) {
1174
+ return;
1175
+ }
1176
+ result.suggestions = [
1177
+ 'pm create --type Task --title "..." to add a new work item',
1178
+ "pm list --status closed --limit 5 to review recent completions",
1179
+ "pm search <keywords> to find related past work",
1180
+ "pm aggregate for a full project status overview",
1181
+ ];
1182
+ }
1183
+ /**
1184
+ * Implements run context for the public runtime surface of this module.
1185
+ */
1186
+ export async function runContext(options, global) {
1187
+ const runtime = await resolveContextRuntime(options, global);
1188
+ const corpus = await loadContextCorpus(options, global, runtime);
1189
+ const focusGroups = resolveContextFocusGroups(corpus.listedFrontMatter, corpus.allItems, runtime.statusRegistry, runtime.sectionsIncluded, runtime.limit);
1190
+ const agendaContext = await buildContextAgenda(options, global, runtime, corpus.subtreeIds);
1191
+ const warnings = mergeSortedWarnings(corpus.listed.warnings, agendaContext.agenda.warnings);
1192
+ const inProgressCount = countContextStatus(focusGroups.activeItems, normalizeStatusInput("in_progress", runtime.statusRegistry), runtime.statusRegistry);
1193
+ const openCount = countContextStatus(focusGroups.activeItems, normalizeStatusInput("open", runtime.statusRegistry), runtime.statusRegistry);
1194
+ const sections = await buildOptionalContextSections({
1195
+ runtime,
1196
+ allItems: corpus.allItems,
1197
+ fullCorpus: corpus.fullCorpus,
1198
+ focusGroups,
1199
+ now: agendaContext.agenda.now,
1200
+ global,
1201
+ });
1202
+ const summaryExtras = buildContextSummaryExtras(contextNeedsAllItems(runtime.sectionsIncluded), corpus.allItems, runtime.statusRegistry);
1088
1203
  const result = {
1089
1204
  output_default: "toon",
1090
- now,
1091
- depth,
1092
- sections_included: sectionsIncluded,
1205
+ now: agendaContext.agenda.now,
1206
+ depth: runtime.depth,
1207
+ sections_included: runtime.sectionsIncluded,
1093
1208
  window: {
1094
- anchor: agenda.anchor,
1095
- start: agenda.range.start,
1096
- end: agenda.range.end,
1097
- past: agenda.range.past,
1098
- from: agenda.range.from,
1099
- to: agenda.range.to,
1209
+ anchor: agendaContext.agenda.anchor,
1210
+ start: agendaContext.agenda.range.start,
1211
+ end: agendaContext.agenda.range.end,
1212
+ past: agendaContext.agenda.range.past,
1213
+ from: agendaContext.agenda.range.from,
1214
+ to: agendaContext.agenda.range.to,
1100
1215
  },
1101
1216
  filters: {
1102
1217
  type: options.type ?? null,
@@ -1107,72 +1222,35 @@ export async function runContext(options, global) {
1107
1222
  sprint: options.sprint ?? null,
1108
1223
  release: options.release ?? null,
1109
1224
  limit: options.limit ?? null,
1110
- parent: parentScope ?? null,
1225
+ parent: runtime.parentScope ?? null,
1111
1226
  /* c8 ignore next -- listed/calendar runtime filters are always materialized by their command handlers */
1112
- runtime_filters: (listed.filters.runtime_filters ?? agenda.filters.runtime_filters ?? {}),
1227
+ runtime_filters: (corpus.listed.filters.runtime_filters ?? agendaContext.agenda.filters.runtime_filters ?? {}),
1113
1228
  },
1114
1229
  summary: {
1115
- active_items: activeItems.length,
1230
+ active_items: focusGroups.activeItems.length,
1116
1231
  in_progress: inProgressCount,
1117
1232
  open: openCount,
1118
- blocked: blockedItems.length,
1119
- blocked_fallback_used: blockedFallbackUsed,
1120
- high_level: highLevel.length,
1121
- low_level: lowLevel.length,
1122
- agenda_events: agendaSummary.events,
1233
+ blocked: focusGroups.blockedItems.length,
1234
+ blocked_fallback_used: focusGroups.blockedFallbackUsed,
1235
+ high_level: focusGroups.highLevel.length,
1236
+ low_level: focusGroups.lowLevel.length,
1237
+ agenda_events: agendaContext.agendaSummary.events,
1123
1238
  ...summaryExtras,
1124
1239
  },
1125
- high_level: highLevel,
1126
- low_level: lowLevel,
1127
- blocked_fallback: blockedFallback,
1240
+ high_level: focusGroups.highLevel,
1241
+ low_level: focusGroups.lowLevel,
1242
+ blocked_fallback: focusGroups.blockedFallback,
1128
1243
  agenda: {
1129
- summary: agendaSummary,
1130
- events: agendaEvents,
1244
+ summary: agendaContext.agendaSummary,
1245
+ events: agendaContext.agendaEvents,
1131
1246
  },
1132
1247
  };
1133
- if (hierarchy)
1134
- result.hierarchy = hierarchy;
1135
- if (activity)
1136
- result.activity = activity;
1137
- if (progress)
1138
- result.progress = progress;
1139
- if (blockersSection)
1140
- result.blockers = blockersSection;
1141
- if (recentlyCreated)
1142
- result.recently_created = recentlyCreated;
1143
- if (unparented)
1144
- result.unparented = unparented;
1145
- if (filesSection)
1146
- result.files = filesSection;
1147
- if (workload)
1148
- result.workload = workload;
1149
- if (staleness)
1150
- result.staleness = staleness;
1151
- if (tests)
1152
- result.tests = tests;
1153
- if (focusFields) {
1154
- result.focus_fields = focusFields;
1155
- result.high_level = projectContextFocusRows(result.high_level, focusFields);
1156
- result.low_level = projectContextFocusRows(result.low_level, focusFields);
1157
- result.blocked_fallback = projectContextFocusRows(result.blocked_fallback, focusFields);
1158
- if (result.recently_created) {
1159
- result.recently_created = projectContextFocusRows(result.recently_created, focusFields);
1160
- }
1161
- if (result.unparented) {
1162
- result.unparented = projectContextFocusRows(result.unparented, focusFields);
1163
- }
1164
- }
1248
+ attachOptionalContextSections(result, sections);
1249
+ applyContextFocusProjection(result, runtime.focusFields);
1165
1250
  if (warnings.length > 0)
1166
1251
  result.warnings = warnings;
1167
- if (activeItems.length === 0 && blockedItems.length === 0 && agendaEvents.length === 0) {
1168
- result.suggestions = [
1169
- 'pm create --type Task --title "..." to add a new work item',
1170
- "pm list --status closed --limit 5 to review recent completions",
1171
- "pm search <keywords> to find related past work",
1172
- "pm aggregate for a full project status overview",
1173
- ];
1174
- }
1252
+ maybeAttachEmptyContextSuggestions(result, focusGroups.activeItems, focusGroups.blockedItems);
1175
1253
  return result;
1176
1254
  }
1177
1255
  //# sourceMappingURL=context.js.map
1178
- //# debugId=7794eae6-2b67-5061-891e-af78b0682685
1256
+ //# debugId=f244506b-038b-5a3d-8184-f0b73e30f300