@unbrained/pm-cli 2026.7.8 → 2026.7.10

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 (446) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +1 -0
  3. package/dist/cli/bootstrap-args.js +6 -3
  4. package/dist/cli/bootstrap-args.js.map +1 -1
  5. package/dist/cli/commands/close.js +5 -2
  6. package/dist/cli/commands/close.js.map +1 -1
  7. package/dist/cli/commands/completion.js +8 -2
  8. package/dist/cli/commands/completion.js.map +1 -1
  9. package/dist/cli/commands/context.d.ts +23 -0
  10. package/dist/cli/commands/context.js +96 -7
  11. package/dist/cli/commands/context.js.map +1 -1
  12. package/dist/cli/commands/contracts.d.ts +11 -0
  13. package/dist/cli/commands/contracts.js +112 -15
  14. package/dist/cli/commands/contracts.js.map +1 -1
  15. package/dist/cli/commands/create.js +4 -2
  16. package/dist/cli/commands/create.js.map +1 -1
  17. package/dist/cli/commands/extension.d.ts +1 -1
  18. package/dist/cli/commands/extension.js +91 -32
  19. package/dist/cli/commands/extension.js.map +1 -1
  20. package/dist/cli/commands/init.d.ts +19 -3
  21. package/dist/cli/commands/init.js +57 -24
  22. package/dist/cli/commands/init.js.map +1 -1
  23. package/dist/cli/commands/list.d.ts +4 -0
  24. package/dist/cli/commands/list.js +32 -3
  25. package/dist/cli/commands/list.js.map +1 -1
  26. package/dist/cli/commands/next.d.ts +3 -1
  27. package/dist/cli/commands/next.js +19 -7
  28. package/dist/cli/commands/next.js.map +1 -1
  29. package/dist/cli/commands/update.d.ts +32 -1
  30. package/dist/cli/commands/update.js +37 -10
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/register-list-query.js +10 -4
  33. package/dist/cli/register-list-query.js.map +1 -1
  34. package/dist/cli/register-operations.js +4 -2
  35. package/dist/cli/register-operations.js.map +1 -1
  36. package/dist/cli/register-setup.js +11 -2
  37. package/dist/cli/register-setup.js.map +1 -1
  38. package/dist/cli/registration-helpers.js +4 -2
  39. package/dist/cli/registration-helpers.js.map +1 -1
  40. package/dist/cli-bundle/chunks/append-G7NGOQVU.js +11 -0
  41. package/dist/cli-bundle/chunks/{append-RSPHC423.js → append-SIECQAPH.js} +5 -5
  42. package/dist/cli-bundle/chunks/{chunk-CGDUIPJL.js → chunk-22PW73KV.js} +3 -3
  43. package/dist/cli-bundle/chunks/{chunk-ML27MHNM.js → chunk-2RW5DWHQ.js} +98 -22
  44. package/dist/cli-bundle/chunks/chunk-2RW5DWHQ.js.map +1 -0
  45. package/dist/cli-bundle/chunks/{chunk-GO2X6ZRB.js → chunk-35U3AVRY.js} +3 -3
  46. package/dist/cli-bundle/chunks/{chunk-4I7KS5ES.js → chunk-3JFQRPOI.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-NRMDT4OV.js → chunk-3THCOPYI.js} +4 -4
  48. package/dist/cli-bundle/chunks/{chunk-D6J5673C.js → chunk-4BINCIRM.js} +4 -4
  49. package/dist/cli-bundle/chunks/{chunk-D63PEJTB.js → chunk-4P2GYOM5.js} +7 -7
  50. package/dist/cli-bundle/chunks/{chunk-LHDHS4Z6.js → chunk-4QE5HOJY.js} +5 -5
  51. package/dist/cli-bundle/chunks/{chunk-5VAZHYVQ.js → chunk-56J3MPGE.js} +2 -2
  52. package/dist/cli-bundle/chunks/{chunk-UCRYCT5M.js → chunk-5BFBDJ4R.js} +38 -16
  53. package/dist/cli-bundle/chunks/chunk-5BFBDJ4R.js.map +1 -0
  54. package/dist/cli-bundle/chunks/{chunk-IINCZYM3.js → chunk-62ECRG6J.js} +3 -3
  55. package/dist/cli-bundle/chunks/{chunk-EYPIUFWJ.js → chunk-62KPBB2W.js} +10 -10
  56. package/dist/cli-bundle/chunks/{chunk-3FUXM574.js → chunk-6MK6M35B.js} +4 -4
  57. package/dist/cli-bundle/chunks/{chunk-XN5BEN2B.js → chunk-6PBZBIS6.js} +35 -8
  58. package/dist/cli-bundle/chunks/chunk-6PBZBIS6.js.map +1 -0
  59. package/dist/cli-bundle/chunks/{chunk-GQOKFX2G.js → chunk-6WIP52LQ.js} +8 -8
  60. package/dist/cli-bundle/chunks/{chunk-GLMJLBLR.js → chunk-75NAGPEL.js} +3 -3
  61. package/dist/cli-bundle/chunks/{chunk-6TD5QGIB.js → chunk-77CWXIAC.js} +4 -4
  62. package/dist/cli-bundle/chunks/{chunk-3FRNNVWY.js → chunk-7S2UC7S6.js} +427 -133
  63. package/dist/cli-bundle/chunks/chunk-7S2UC7S6.js.map +7 -0
  64. package/dist/cli-bundle/chunks/{chunk-PAWPLIWW.js → chunk-7THLDY3D.js} +5 -5
  65. package/dist/cli-bundle/chunks/{chunk-QJZM5WO5.js → chunk-7TRCAREE.js} +3 -3
  66. package/dist/cli-bundle/chunks/{chunk-EEJKHF7M.js → chunk-7TRVVYPI.js} +5 -5
  67. package/dist/cli-bundle/chunks/{chunk-PJPZTE7P.js → chunk-A62N3BM3.js} +8 -6
  68. package/dist/cli-bundle/chunks/chunk-A62N3BM3.js.map +7 -0
  69. package/dist/cli-bundle/chunks/{chunk-TU5P744I.js → chunk-A7DJG5EF.js} +55 -6
  70. package/dist/cli-bundle/chunks/chunk-A7DJG5EF.js.map +7 -0
  71. package/dist/cli-bundle/chunks/{chunk-ZMOPZFVT.js → chunk-AD4HJKQZ.js} +49 -7
  72. package/dist/cli-bundle/chunks/chunk-AD4HJKQZ.js.map +1 -0
  73. package/dist/cli-bundle/chunks/{chunk-7QKSLAHB.js → chunk-AIWGQK6K.js} +2 -2
  74. package/dist/cli-bundle/chunks/{chunk-P2WE5KCU.js → chunk-AKCHJXJ4.js} +7 -7
  75. package/dist/cli-bundle/chunks/{chunk-KFL3XHMA.js → chunk-AYPXY3HF.js} +2 -2
  76. package/dist/cli-bundle/chunks/{chunk-RL24NAUX.js → chunk-B7FCPO65.js} +4 -4
  77. package/dist/cli-bundle/chunks/{chunk-4OCWJ2AP.js → chunk-BC7QBM2A.js} +7 -7
  78. package/dist/cli-bundle/chunks/{chunk-LD2NBQ5T.js → chunk-BST7GFIX.js} +3 -3
  79. package/dist/cli-bundle/chunks/{chunk-GE44TQMC.js → chunk-CUBPPDDF.js} +145 -62
  80. package/dist/cli-bundle/chunks/chunk-CUBPPDDF.js.map +1 -0
  81. package/dist/cli-bundle/chunks/{chunk-FJR2S7S4.js → chunk-CYBW4HK7.js} +7 -7
  82. package/dist/cli-bundle/chunks/{chunk-7UCBLJDF.js → chunk-DDF7UMVV.js} +2 -2
  83. package/dist/cli-bundle/chunks/{chunk-YQEKE4FO.js → chunk-DLHFJZ2S.js} +7 -7
  84. package/dist/cli-bundle/chunks/{chunk-PCBZ2VJD.js → chunk-DMD2TENU.js} +4 -4
  85. package/dist/cli-bundle/chunks/{chunk-SCJPFQQT.js → chunk-DN67YDFH.js} +3 -3
  86. package/dist/cli-bundle/chunks/{chunk-7TBUV7XS.js → chunk-DNHILSD7.js} +4 -4
  87. package/dist/cli-bundle/chunks/{chunk-FFB3WITE.js → chunk-DT6NDP53.js} +3 -3
  88. package/dist/cli-bundle/chunks/{chunk-G4FKP4ID.js → chunk-DWGHHSDC.js} +9 -7
  89. package/dist/cli-bundle/chunks/chunk-DWGHHSDC.js.map +1 -0
  90. package/dist/cli-bundle/chunks/{chunk-3V5C7PUH.js → chunk-DYUAQVDK.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-MCH6IKK7.js → chunk-E2RJZQNW.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-6ZKDMEVT.js → chunk-ECXJ7OHI.js} +3 -3
  93. package/dist/cli-bundle/chunks/{chunk-LG4N6YOK.js → chunk-ESXG6VFX.js} +5 -5
  94. package/dist/cli-bundle/chunks/{chunk-TR2C6V5T.js → chunk-EXG6XTJC.js} +101 -25
  95. package/dist/cli-bundle/chunks/chunk-EXG6XTJC.js.map +7 -0
  96. package/dist/cli-bundle/chunks/{chunk-BPJ5NYSJ.js → chunk-F7UA74OZ.js} +54 -7
  97. package/dist/cli-bundle/chunks/chunk-F7UA74OZ.js.map +7 -0
  98. package/dist/cli-bundle/chunks/{chunk-GSQVQINP.js → chunk-FBD2WUNS.js} +4 -4
  99. package/dist/cli-bundle/chunks/{chunk-YSRXFGNV.js → chunk-FSD7W7Y2.js} +3 -3
  100. package/dist/cli-bundle/chunks/{chunk-JYVPLGOW.js → chunk-FWL5XVYI.js} +4 -4
  101. package/dist/cli-bundle/chunks/{chunk-KMXVZ2P7.js → chunk-FYMHD6VX.js} +122 -27
  102. package/dist/cli-bundle/chunks/chunk-FYMHD6VX.js.map +1 -0
  103. package/dist/cli-bundle/chunks/{chunk-SIQGG335.js → chunk-GMNCW27N.js} +7 -7
  104. package/dist/cli-bundle/chunks/{chunk-3SHDAKMF.js → chunk-GPPWUJMR.js} +3 -3
  105. package/dist/cli-bundle/chunks/{chunk-W2VFNVSJ.js → chunk-H3HKQXQJ.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-UIHDZS6X.js → chunk-HFQ7QQZL.js} +7 -7
  107. package/dist/cli-bundle/chunks/{chunk-Z6RLSNUX.js → chunk-HLUB7G6J.js} +3 -3
  108. package/dist/cli-bundle/chunks/{chunk-ASMRSIDX.js → chunk-HWUIK7YL.js} +121 -26
  109. package/dist/cli-bundle/chunks/chunk-HWUIK7YL.js.map +7 -0
  110. package/dist/cli-bundle/chunks/{chunk-U72GF3I2.js → chunk-INAZHXOI.js} +3 -3
  111. package/dist/cli-bundle/chunks/{chunk-INOWVPUD.js → chunk-J3ELHLOJ.js} +5 -5
  112. package/dist/cli-bundle/chunks/{chunk-2BVD4ZD2.js → chunk-J3FDNQWM.js} +4 -3
  113. package/dist/cli-bundle/chunks/chunk-J3FDNQWM.js.map +7 -0
  114. package/dist/cli-bundle/chunks/{chunk-UH6VFRV6.js → chunk-J3Z2JMDV.js} +3 -3
  115. package/dist/cli-bundle/chunks/{chunk-HI27UADG.js → chunk-JDEXIVKQ.js} +372 -20
  116. package/dist/cli-bundle/chunks/chunk-JDEXIVKQ.js.map +1 -0
  117. package/dist/cli-bundle/chunks/{chunk-MYHFZNBO.js → chunk-JFOBTM4D.js} +8 -8
  118. package/dist/cli-bundle/chunks/{chunk-J6AD3GWC.js → chunk-JNELC5UO.js} +2 -2
  119. package/dist/cli-bundle/chunks/{chunk-YUCKM3MD.js → chunk-JQ5NB6O2.js} +4 -4
  120. package/dist/cli-bundle/chunks/{chunk-3UXIMY62.js → chunk-KFC6X4PI.js} +3 -3
  121. package/dist/cli-bundle/chunks/{chunk-C3YU3TXX.js → chunk-L2SWAZ3S.js} +2 -2
  122. package/dist/cli-bundle/chunks/{chunk-QLEH6FTQ.js → chunk-LVVZLEW5.js} +4 -4
  123. package/dist/cli-bundle/chunks/{chunk-RFHLRMLQ.js → chunk-M66PC7JI.js} +3 -3
  124. package/dist/cli-bundle/chunks/{chunk-UVFJSKTF.js → chunk-M7DWRMNY.js} +10 -7
  125. package/dist/cli-bundle/chunks/chunk-M7DWRMNY.js.map +1 -0
  126. package/dist/cli-bundle/chunks/{chunk-UEATYUZW.js → chunk-M7JYEBPT.js} +2 -2
  127. package/dist/cli-bundle/chunks/{chunk-Z2JQH2MG.js → chunk-MQ632QRB.js} +2 -2
  128. package/dist/cli-bundle/chunks/{chunk-IYRG5AEC.js → chunk-N7N3PUUP.js} +7 -7
  129. package/dist/cli-bundle/chunks/{chunk-3YJDIJIE.js → chunk-NPJLTZQZ.js} +3 -3
  130. package/dist/cli-bundle/chunks/{chunk-TUDAYIO7.js → chunk-NQTIOKHL.js} +12 -10
  131. package/dist/cli-bundle/chunks/{chunk-TUDAYIO7.js.map → chunk-NQTIOKHL.js.map} +1 -1
  132. package/dist/cli-bundle/chunks/{chunk-BFNFTHWQ.js → chunk-O67XP4FD.js} +3 -3
  133. package/dist/cli-bundle/chunks/{chunk-XPSGJ4IV.js → chunk-OVYXSZOQ.js} +11 -9
  134. package/dist/cli-bundle/chunks/{chunk-XPSGJ4IV.js.map → chunk-OVYXSZOQ.js.map} +2 -2
  135. package/dist/cli-bundle/chunks/{chunk-FOJEBRDD.js → chunk-P7PDLLCE.js} +5 -5
  136. package/dist/cli-bundle/chunks/{chunk-SN5X5GTU.js → chunk-PEACKWHL.js} +4 -4
  137. package/dist/cli-bundle/chunks/{chunk-HZZ3AC27.js → chunk-PFRGQZG2.js} +3 -3
  138. package/dist/cli-bundle/chunks/{chunk-Q3CFSOQZ.js → chunk-PMU2OJ3N.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-5STY7NVM.js → chunk-PUMTJMMF.js} +4 -4
  140. package/dist/cli-bundle/chunks/{chunk-K52C6YPA.js → chunk-QTJCMK2S.js} +5 -5
  141. package/dist/cli-bundle/chunks/{chunk-6FU5BVRB.js → chunk-RAE2SLNO.js} +4 -4
  142. package/dist/cli-bundle/chunks/{chunk-YR5R4FMQ.js → chunk-RYA7QE7B.js} +10 -10
  143. package/dist/cli-bundle/chunks/{chunk-TTCJCKUJ.js → chunk-SL337EYZ.js} +379 -20
  144. package/dist/cli-bundle/chunks/chunk-SL337EYZ.js.map +7 -0
  145. package/dist/cli-bundle/chunks/{chunk-RDJXIAJB.js → chunk-SMKQFGDI.js} +9 -6
  146. package/dist/cli-bundle/chunks/chunk-SMKQFGDI.js.map +7 -0
  147. package/dist/cli-bundle/chunks/{chunk-UFNFHCAC.js → chunk-SWQMU4AD.js} +2 -2
  148. package/dist/cli-bundle/chunks/{chunk-MFLLULHU.js → chunk-TB2CZJAQ.js} +5 -4
  149. package/dist/cli-bundle/chunks/chunk-TB2CZJAQ.js.map +1 -0
  150. package/dist/cli-bundle/chunks/{chunk-WVEMZZCR.js → chunk-TEKAGPZV.js} +3 -3
  151. package/dist/cli-bundle/chunks/{chunk-JH5XDDYS.js → chunk-TM5E2IED.js} +5 -5
  152. package/dist/cli-bundle/chunks/{chunk-C6XSTACC.js → chunk-TTRL5GE6.js} +3 -3
  153. package/dist/cli-bundle/chunks/{chunk-AEOFBBWO.js → chunk-UA2VI62P.js} +3 -3
  154. package/dist/cli-bundle/chunks/{chunk-6RR4XM5H.js → chunk-UYK26VRP.js} +3 -3
  155. package/dist/cli-bundle/chunks/{chunk-CXH7EMSB.js → chunk-VBDQTL3Z.js} +3 -3
  156. package/dist/cli-bundle/chunks/{chunk-NGBWEYNY.js → chunk-W2FXYQ6D.js} +5 -5
  157. package/dist/cli-bundle/chunks/{chunk-UURYLDDC.js → chunk-WZ7EPGUX.js} +5 -5
  158. package/dist/cli-bundle/chunks/{chunk-2RADY7IB.js → chunk-XES6AVCK.js} +427 -126
  159. package/dist/cli-bundle/chunks/chunk-XES6AVCK.js.map +1 -0
  160. package/dist/cli-bundle/chunks/{chunk-QYZMZD4L.js → chunk-XVCB574W.js} +4 -4
  161. package/dist/cli-bundle/chunks/{chunk-F5DDGY6R.js → chunk-XWS3Z57Q.js} +3 -3
  162. package/dist/cli-bundle/chunks/{chunk-EP2CKDS7.js → chunk-XXJB4GLJ.js} +2 -2
  163. package/dist/cli-bundle/chunks/{chunk-NTOOEVJ4.js → chunk-Y5Q4FEE4.js} +47 -7
  164. package/dist/cli-bundle/chunks/chunk-Y5Q4FEE4.js.map +1 -0
  165. package/dist/cli-bundle/chunks/{chunk-DUBC6TI3.js → chunk-YA4B6P3L.js} +37 -15
  166. package/dist/cli-bundle/chunks/chunk-YA4B6P3L.js.map +7 -0
  167. package/dist/cli-bundle/chunks/{chunk-FL625JJM.js → chunk-Z3R2Z5KW.js} +145 -62
  168. package/dist/cli-bundle/chunks/chunk-Z3R2Z5KW.js.map +7 -0
  169. package/dist/cli-bundle/chunks/{chunk-RLHQ3G4M.js → chunk-Z5MFM54X.js} +34 -7
  170. package/dist/cli-bundle/chunks/chunk-Z5MFM54X.js.map +7 -0
  171. package/dist/cli-bundle/chunks/{chunk-6WCXSC5V.js → chunk-ZGDJA6WI.js} +5 -5
  172. package/dist/cli-bundle/chunks/{chunk-TKWTJGD6.js → chunk-ZIU35KME.js} +5 -5
  173. package/dist/cli-bundle/chunks/{chunk-YUMNZS3X.js → chunk-ZQ2KEWE7.js} +3 -3
  174. package/dist/cli-bundle/chunks/close-2NVUCJXV.js +12 -0
  175. package/dist/cli-bundle/chunks/{close-K6BFI3OX.js → close-BZPS37KL.js} +5 -5
  176. package/dist/cli-bundle/chunks/{close-many-6NBL3PM4.js → close-many-KKNCGLVR.js} +13 -13
  177. package/dist/cli-bundle/chunks/close-many-S5WKLWVO.js +22 -0
  178. package/dist/cli-bundle/chunks/{comments-PLFK5ZKK.js → comments-PV5XG342.js} +7 -7
  179. package/dist/cli-bundle/chunks/comments-XAM2ADHO.js +13 -0
  180. package/dist/cli-bundle/chunks/copy-OJ2YNJ7S.js +9 -0
  181. package/dist/cli-bundle/chunks/{copy-VH3L4MN2.js → copy-OZDYDQUG.js} +4 -4
  182. package/dist/cli-bundle/chunks/create-5O3QK3PX.js +25 -0
  183. package/dist/cli-bundle/chunks/{create-TRIBYORN.js → create-WGFKEJAK.js} +9 -9
  184. package/dist/cli-bundle/chunks/{delete-ZNXUNCZR.js → delete-NTYXFL7A.js} +4 -4
  185. package/dist/cli-bundle/chunks/delete-V7FPW6JL.js +10 -0
  186. package/dist/cli-bundle/chunks/{deps-CVDY7FFK.js → deps-7WVENNH3.js} +4 -4
  187. package/dist/cli-bundle/chunks/{deps-SZXQHV73.js → deps-Z6RD6RWW.js} +4 -4
  188. package/dist/cli-bundle/chunks/{docs-DR74ITCD.js → docs-2NIRGHAN.js} +6 -6
  189. package/dist/cli-bundle/chunks/docs-SOY2CMH3.js +14 -0
  190. package/dist/cli-bundle/chunks/{files-QEFQ2M3H.js → files-4OH2I663.js} +6 -6
  191. package/dist/cli-bundle/chunks/{files-H5YCA74Z.js → files-5KNAFW67.js} +6 -6
  192. package/dist/cli-bundle/chunks/{focus-55TRYSNA.js → focus-CLNZWWKW.js} +5 -5
  193. package/dist/cli-bundle/chunks/focus-JUKXZN3J.js +10 -0
  194. package/dist/cli-bundle/chunks/{history-compact-JJZ4EFL3.js → history-compact-R3T3XPD4.js} +9 -9
  195. package/dist/cli-bundle/chunks/history-compact-WKAKPLFQ.js +21 -0
  196. package/dist/cli-bundle/chunks/{history-redact-TPPUT3A5.js → history-redact-CLJDCBNF.js} +7 -7
  197. package/dist/cli-bundle/chunks/history-redact-Y67UDKD3.js +17 -0
  198. package/dist/cli-bundle/chunks/history-repair-2WLXWQAM.js +19 -0
  199. package/dist/cli-bundle/chunks/{history-repair-J7PIZ6ZP.js → history-repair-LNA7V2VI.js} +9 -9
  200. package/dist/cli-bundle/chunks/{learnings-KB6BT4NR.js → learnings-2L72KBOE.js} +7 -7
  201. package/dist/cli-bundle/chunks/learnings-PNK7WUWO.js +13 -0
  202. package/dist/cli-bundle/chunks/{notes-ZTHXVOKM.js → notes-USDIABZV.js} +7 -7
  203. package/dist/cli-bundle/chunks/notes-X4SWEJSB.js +13 -0
  204. package/dist/cli-bundle/chunks/plan-JU454RMZ.js +24 -0
  205. package/dist/cli-bundle/chunks/{plan-CJPKFRBK.js → plan-U4RWU56Z.js} +10 -10
  206. package/dist/cli-bundle/chunks/{profile-AQNHXOYA.js → profile-COBKZJUQ.js} +9 -9
  207. package/dist/cli-bundle/chunks/{profile-HTBFINKQ.js → profile-RKIRCXH7.js} +9 -9
  208. package/dist/cli-bundle/chunks/{register-list-query-EEF33SUJ.js → register-list-query-2VBANNFM.js} +20 -18
  209. package/dist/cli-bundle/chunks/register-list-query-2VBANNFM.js.map +1 -0
  210. package/dist/cli-bundle/chunks/{register-list-query-S4FBWIWN.js → register-list-query-4AZEKWZ5.js} +19 -17
  211. package/dist/cli-bundle/chunks/register-list-query-4AZEKWZ5.js.map +7 -0
  212. package/dist/cli-bundle/chunks/{register-mutation-QFLRBCI7.js → register-mutation-JGXTDEIZ.js} +29 -29
  213. package/dist/cli-bundle/chunks/{register-mutation-L5Q7AUDN.js → register-mutation-XVO4GGZI.js} +29 -29
  214. package/dist/cli-bundle/chunks/{register-operations-HDE4FVW4.js → register-operations-4EEFV5KJ.js} +30 -29
  215. package/dist/cli-bundle/chunks/register-operations-4EEFV5KJ.js.map +1 -0
  216. package/dist/cli-bundle/chunks/{register-operations-QDU43FCG.js → register-operations-UV25Z4BN.js} +29 -28
  217. package/dist/cli-bundle/chunks/register-operations-UV25Z4BN.js.map +7 -0
  218. package/dist/cli-bundle/chunks/{register-setup-EGMTAXDC.js → register-setup-MMXQQC5J.js} +27 -19
  219. package/dist/cli-bundle/chunks/register-setup-MMXQQC5J.js.map +1 -0
  220. package/dist/cli-bundle/chunks/{register-setup-PNIO3L2P.js → register-setup-NQE5MW63.js} +26 -18
  221. package/dist/cli-bundle/chunks/register-setup-NQE5MW63.js.map +7 -0
  222. package/dist/cli-bundle/chunks/restore-54HR2EYD.js +15 -0
  223. package/dist/cli-bundle/chunks/{restore-BTBEZ5CK.js → restore-BINCHJIY.js} +7 -7
  224. package/dist/cli-bundle/chunks/{schema-DGSTYYQB.js → schema-2JZNEQSG.js} +6 -6
  225. package/dist/cli-bundle/chunks/{schema-HAIBEE24.js → schema-VV3K5WZI.js} +6 -6
  226. package/dist/cli-bundle/chunks/{update-MP4XLU56.js → update-DK3GAY5D.js} +12 -12
  227. package/dist/cli-bundle/chunks/update-OIMRKTX6.js +21 -0
  228. package/dist/cli-bundle/chunks/update-many-5KI6MW76.js +31 -0
  229. package/dist/cli-bundle/chunks/update-many-IOLDHIZT.js +35 -0
  230. package/dist/cli-bundle/main.js +16 -54
  231. package/dist/cli-bundle/main.js.map +3 -3
  232. package/dist/cli-bundle/sdk-runtime.js +117 -53
  233. package/dist/cli-bundle/sdk-testing.js +6 -6
  234. package/dist/cli-bundle/sdk.js +142 -58
  235. package/dist/cli-bundle/sdk.js.map +3 -3
  236. package/dist/core/extensions/extension-types.d.ts +1 -1
  237. package/dist/core/extensions/extension-types.js +3 -2
  238. package/dist/core/extensions/extension-types.js.map +1 -1
  239. package/dist/core/extensions/index.d.ts +1 -0
  240. package/dist/core/extensions/index.js +3 -2
  241. package/dist/core/extensions/index.js.map +1 -1
  242. package/dist/core/store/front-matter-cache.d.ts +8 -0
  243. package/dist/core/store/front-matter-cache.js +22 -9
  244. package/dist/core/store/front-matter-cache.js.map +1 -1
  245. package/dist/sdk/cli-contracts/commander-mutation-options.js +4 -4
  246. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  247. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  248. package/dist/sdk/cli-contracts/flag-contracts.js +10 -2
  249. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  250. package/dist/sdk/cli-contracts/tool-option-contracts.js +10 -5
  251. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  252. package/dist/sdk/cli-contracts/tool-parameter-tables.js +12 -4
  253. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  254. package/dist/sdk/cli-contracts/tool-schema.d.ts +4 -0
  255. package/dist/sdk/cli-contracts/tool-schema.js +66 -11
  256. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  257. package/dist/sdk/context-relevance.d.ts +166 -0
  258. package/dist/sdk/context-relevance.js +299 -0
  259. package/dist/sdk/context-relevance.js.map +1 -0
  260. package/dist/sdk/index.d.ts +2 -1
  261. package/dist/sdk/index.js +4 -3
  262. package/dist/sdk/index.js.map +1 -1
  263. package/dist/sdk/runtime.d.ts +340 -25
  264. package/dist/sdk/runtime.js +413 -25
  265. package/dist/sdk/runtime.js.map +1 -1
  266. package/docs/AGENT_GUIDE.md +3 -0
  267. package/docs/COMMANDS.md +17 -2
  268. package/docs/EXTENSIONS.md +3 -1
  269. package/docs/SDK.md +115 -0
  270. package/docs/TESTING.md +40 -1
  271. package/package.json +4 -2
  272. package/dist/cli-bundle/chunks/append-CDPAYYSB.js +0 -11
  273. package/dist/cli-bundle/chunks/chunk-2BVD4ZD2.js.map +0 -7
  274. package/dist/cli-bundle/chunks/chunk-2RADY7IB.js.map +0 -1
  275. package/dist/cli-bundle/chunks/chunk-3FRNNVWY.js.map +0 -7
  276. package/dist/cli-bundle/chunks/chunk-ASMRSIDX.js.map +0 -7
  277. package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js.map +0 -7
  278. package/dist/cli-bundle/chunks/chunk-DUBC6TI3.js.map +0 -7
  279. package/dist/cli-bundle/chunks/chunk-FL625JJM.js.map +0 -7
  280. package/dist/cli-bundle/chunks/chunk-G4FKP4ID.js.map +0 -1
  281. package/dist/cli-bundle/chunks/chunk-GE44TQMC.js.map +0 -1
  282. package/dist/cli-bundle/chunks/chunk-HI27UADG.js.map +0 -1
  283. package/dist/cli-bundle/chunks/chunk-KMXVZ2P7.js.map +0 -1
  284. package/dist/cli-bundle/chunks/chunk-MFLLULHU.js.map +0 -1
  285. package/dist/cli-bundle/chunks/chunk-ML27MHNM.js.map +0 -1
  286. package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js.map +0 -1
  287. package/dist/cli-bundle/chunks/chunk-PJPZTE7P.js.map +0 -7
  288. package/dist/cli-bundle/chunks/chunk-RDJXIAJB.js.map +0 -7
  289. package/dist/cli-bundle/chunks/chunk-RLHQ3G4M.js.map +0 -7
  290. package/dist/cli-bundle/chunks/chunk-TR2C6V5T.js.map +0 -7
  291. package/dist/cli-bundle/chunks/chunk-TTCJCKUJ.js.map +0 -7
  292. package/dist/cli-bundle/chunks/chunk-TU5P744I.js.map +0 -7
  293. package/dist/cli-bundle/chunks/chunk-UCRYCT5M.js.map +0 -1
  294. package/dist/cli-bundle/chunks/chunk-UVFJSKTF.js.map +0 -1
  295. package/dist/cli-bundle/chunks/chunk-XN5BEN2B.js.map +0 -1
  296. package/dist/cli-bundle/chunks/chunk-ZMOPZFVT.js.map +0 -1
  297. package/dist/cli-bundle/chunks/close-E3RLZSP2.js +0 -12
  298. package/dist/cli-bundle/chunks/close-many-X4YKS3RO.js +0 -22
  299. package/dist/cli-bundle/chunks/comments-ZNOD5PTV.js +0 -13
  300. package/dist/cli-bundle/chunks/copy-F7BUFY4J.js +0 -9
  301. package/dist/cli-bundle/chunks/create-AMBMYP6F.js +0 -25
  302. package/dist/cli-bundle/chunks/delete-6KQHZYIP.js +0 -10
  303. package/dist/cli-bundle/chunks/docs-WCVYY6I7.js +0 -14
  304. package/dist/cli-bundle/chunks/focus-N2QGNS5D.js +0 -10
  305. package/dist/cli-bundle/chunks/history-compact-GWQ4UOEI.js +0 -21
  306. package/dist/cli-bundle/chunks/history-redact-4GJOLXCM.js +0 -17
  307. package/dist/cli-bundle/chunks/history-repair-HVCVCGUF.js +0 -19
  308. package/dist/cli-bundle/chunks/learnings-YYY3U2Y7.js +0 -13
  309. package/dist/cli-bundle/chunks/notes-BGG7VL72.js +0 -13
  310. package/dist/cli-bundle/chunks/plan-MK2QY3GA.js +0 -24
  311. package/dist/cli-bundle/chunks/register-list-query-EEF33SUJ.js.map +0 -1
  312. package/dist/cli-bundle/chunks/register-list-query-S4FBWIWN.js.map +0 -7
  313. package/dist/cli-bundle/chunks/register-operations-HDE4FVW4.js.map +0 -1
  314. package/dist/cli-bundle/chunks/register-operations-QDU43FCG.js.map +0 -7
  315. package/dist/cli-bundle/chunks/register-setup-EGMTAXDC.js.map +0 -1
  316. package/dist/cli-bundle/chunks/register-setup-PNIO3L2P.js.map +0 -7
  317. package/dist/cli-bundle/chunks/restore-EX4UUZL6.js +0 -15
  318. package/dist/cli-bundle/chunks/update-SDIRJGSY.js +0 -21
  319. package/dist/cli-bundle/chunks/update-many-34AIU6W7.js +0 -31
  320. package/dist/cli-bundle/chunks/update-many-JUPCNOKV.js +0 -35
  321. /package/dist/cli-bundle/chunks/{append-CDPAYYSB.js.map → append-G7NGOQVU.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{append-RSPHC423.js.map → append-SIECQAPH.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-CGDUIPJL.js.map → chunk-22PW73KV.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-GO2X6ZRB.js.map → chunk-35U3AVRY.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-4I7KS5ES.js.map → chunk-3JFQRPOI.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-NRMDT4OV.js.map → chunk-3THCOPYI.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-D6J5673C.js.map → chunk-4BINCIRM.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-D63PEJTB.js.map → chunk-4P2GYOM5.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-LHDHS4Z6.js.map → chunk-4QE5HOJY.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-5VAZHYVQ.js.map → chunk-56J3MPGE.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-IINCZYM3.js.map → chunk-62ECRG6J.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-EYPIUFWJ.js.map → chunk-62KPBB2W.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-3FUXM574.js.map → chunk-6MK6M35B.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-GQOKFX2G.js.map → chunk-6WIP52LQ.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-GLMJLBLR.js.map → chunk-75NAGPEL.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-6TD5QGIB.js.map → chunk-77CWXIAC.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-PAWPLIWW.js.map → chunk-7THLDY3D.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-QJZM5WO5.js.map → chunk-7TRCAREE.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-EEJKHF7M.js.map → chunk-7TRVVYPI.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-7QKSLAHB.js.map → chunk-AIWGQK6K.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-P2WE5KCU.js.map → chunk-AKCHJXJ4.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-KFL3XHMA.js.map → chunk-AYPXY3HF.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-RL24NAUX.js.map → chunk-B7FCPO65.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-4OCWJ2AP.js.map → chunk-BC7QBM2A.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-LD2NBQ5T.js.map → chunk-BST7GFIX.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-FJR2S7S4.js.map → chunk-CYBW4HK7.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-7UCBLJDF.js.map → chunk-DDF7UMVV.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-YQEKE4FO.js.map → chunk-DLHFJZ2S.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-PCBZ2VJD.js.map → chunk-DMD2TENU.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-SCJPFQQT.js.map → chunk-DN67YDFH.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-7TBUV7XS.js.map → chunk-DNHILSD7.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-FFB3WITE.js.map → chunk-DT6NDP53.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-3V5C7PUH.js.map → chunk-DYUAQVDK.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-MCH6IKK7.js.map → chunk-E2RJZQNW.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-6ZKDMEVT.js.map → chunk-ECXJ7OHI.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-LG4N6YOK.js.map → chunk-ESXG6VFX.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-GSQVQINP.js.map → chunk-FBD2WUNS.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-YSRXFGNV.js.map → chunk-FSD7W7Y2.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-JYVPLGOW.js.map → chunk-FWL5XVYI.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{chunk-SIQGG335.js.map → chunk-GMNCW27N.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{chunk-3SHDAKMF.js.map → chunk-GPPWUJMR.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{chunk-W2VFNVSJ.js.map → chunk-H3HKQXQJ.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{chunk-UIHDZS6X.js.map → chunk-HFQ7QQZL.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{chunk-Z6RLSNUX.js.map → chunk-HLUB7G6J.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{chunk-U72GF3I2.js.map → chunk-INAZHXOI.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{chunk-INOWVPUD.js.map → chunk-J3ELHLOJ.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{chunk-UH6VFRV6.js.map → chunk-J3Z2JMDV.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{chunk-MYHFZNBO.js.map → chunk-JFOBTM4D.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{chunk-J6AD3GWC.js.map → chunk-JNELC5UO.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{chunk-YUCKM3MD.js.map → chunk-JQ5NB6O2.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{chunk-3UXIMY62.js.map → chunk-KFC6X4PI.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{chunk-C3YU3TXX.js.map → chunk-L2SWAZ3S.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{chunk-QLEH6FTQ.js.map → chunk-LVVZLEW5.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{chunk-RFHLRMLQ.js.map → chunk-M66PC7JI.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{chunk-UEATYUZW.js.map → chunk-M7JYEBPT.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{chunk-Z2JQH2MG.js.map → chunk-MQ632QRB.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{chunk-IYRG5AEC.js.map → chunk-N7N3PUUP.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{chunk-3YJDIJIE.js.map → chunk-NPJLTZQZ.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{chunk-BFNFTHWQ.js.map → chunk-O67XP4FD.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{chunk-FOJEBRDD.js.map → chunk-P7PDLLCE.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{chunk-SN5X5GTU.js.map → chunk-PEACKWHL.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{chunk-HZZ3AC27.js.map → chunk-PFRGQZG2.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{chunk-Q3CFSOQZ.js.map → chunk-PMU2OJ3N.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{chunk-5STY7NVM.js.map → chunk-PUMTJMMF.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{chunk-K52C6YPA.js.map → chunk-QTJCMK2S.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{chunk-6FU5BVRB.js.map → chunk-RAE2SLNO.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{chunk-YR5R4FMQ.js.map → chunk-RYA7QE7B.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{chunk-UFNFHCAC.js.map → chunk-SWQMU4AD.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{chunk-WVEMZZCR.js.map → chunk-TEKAGPZV.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{chunk-JH5XDDYS.js.map → chunk-TM5E2IED.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{chunk-C6XSTACC.js.map → chunk-TTRL5GE6.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{chunk-AEOFBBWO.js.map → chunk-UA2VI62P.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{chunk-6RR4XM5H.js.map → chunk-UYK26VRP.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{chunk-CXH7EMSB.js.map → chunk-VBDQTL3Z.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{chunk-NGBWEYNY.js.map → chunk-W2FXYQ6D.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{chunk-UURYLDDC.js.map → chunk-WZ7EPGUX.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{chunk-QYZMZD4L.js.map → chunk-XVCB574W.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{chunk-F5DDGY6R.js.map → chunk-XWS3Z57Q.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{chunk-EP2CKDS7.js.map → chunk-XXJB4GLJ.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{chunk-6WCXSC5V.js.map → chunk-ZGDJA6WI.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{chunk-TKWTJGD6.js.map → chunk-ZIU35KME.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{chunk-YUMNZS3X.js.map → chunk-ZQ2KEWE7.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{close-E3RLZSP2.js.map → close-2NVUCJXV.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{close-K6BFI3OX.js.map → close-BZPS37KL.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{close-many-6NBL3PM4.js.map → close-many-KKNCGLVR.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{close-many-X4YKS3RO.js.map → close-many-S5WKLWVO.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{comments-PLFK5ZKK.js.map → comments-PV5XG342.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{comments-ZNOD5PTV.js.map → comments-XAM2ADHO.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{copy-F7BUFY4J.js.map → copy-OJ2YNJ7S.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{copy-VH3L4MN2.js.map → copy-OZDYDQUG.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{create-AMBMYP6F.js.map → create-5O3QK3PX.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{create-TRIBYORN.js.map → create-WGFKEJAK.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{delete-ZNXUNCZR.js.map → delete-NTYXFL7A.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{delete-6KQHZYIP.js.map → delete-V7FPW6JL.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{deps-CVDY7FFK.js.map → deps-7WVENNH3.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{deps-SZXQHV73.js.map → deps-Z6RD6RWW.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{docs-DR74ITCD.js.map → docs-2NIRGHAN.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{docs-WCVYY6I7.js.map → docs-SOY2CMH3.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{files-QEFQ2M3H.js.map → files-4OH2I663.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{files-H5YCA74Z.js.map → files-5KNAFW67.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{focus-55TRYSNA.js.map → focus-CLNZWWKW.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{focus-N2QGNS5D.js.map → focus-JUKXZN3J.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{history-compact-JJZ4EFL3.js.map → history-compact-R3T3XPD4.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{history-compact-GWQ4UOEI.js.map → history-compact-WKAKPLFQ.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{history-redact-TPPUT3A5.js.map → history-redact-CLJDCBNF.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{history-redact-4GJOLXCM.js.map → history-redact-Y67UDKD3.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{history-repair-HVCVCGUF.js.map → history-repair-2WLXWQAM.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{history-repair-J7PIZ6ZP.js.map → history-repair-LNA7V2VI.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{learnings-KB6BT4NR.js.map → learnings-2L72KBOE.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{learnings-YYY3U2Y7.js.map → learnings-PNK7WUWO.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{notes-ZTHXVOKM.js.map → notes-USDIABZV.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{notes-BGG7VL72.js.map → notes-X4SWEJSB.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{plan-MK2QY3GA.js.map → plan-JU454RMZ.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{plan-CJPKFRBK.js.map → plan-U4RWU56Z.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{profile-AQNHXOYA.js.map → profile-COBKZJUQ.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{profile-HTBFINKQ.js.map → profile-RKIRCXH7.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{register-mutation-QFLRBCI7.js.map → register-mutation-JGXTDEIZ.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{register-mutation-L5Q7AUDN.js.map → register-mutation-XVO4GGZI.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{restore-EX4UUZL6.js.map → restore-54HR2EYD.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{restore-BTBEZ5CK.js.map → restore-BINCHJIY.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{schema-DGSTYYQB.js.map → schema-2JZNEQSG.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{schema-HAIBEE24.js.map → schema-VV3K5WZI.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{update-MP4XLU56.js.map → update-DK3GAY5D.js.map} +0 -0
  444. /package/dist/cli-bundle/chunks/{update-SDIRJGSY.js.map → update-OIMRKTX6.js.map} +0 -0
  445. /package/dist/cli-bundle/chunks/{update-many-34AIU6W7.js.map → update-many-5KI6MW76.js.map} +0 -0
  446. /package/dist/cli-bundle/chunks/{update-many-JUPCNOKV.js.map → update-many-IOLDHIZT.js.map} +0 -0
@@ -116,9 +116,12 @@ pm release <item-id>
116
116
  | Open work only | `pm search "<keywords>" --status open` (drops closed-history noise; did-you-mean on typos) |
117
117
  | Scope search like list | `pm search "<keywords>" --type Task --assignee <name> --parent <id>` (full `pm list` filter parity) |
118
118
  | Items changed since last window | `pm list-all --updated-after <prev-run-ISO> --brief` (relative `-2h`/`-7d` also work) |
119
+ | Open items changed today | `pm list-open --today --brief` (local-midnight shorthand; mutually exclusive with `--updated-after`) |
120
+ | Items changed recently | `pm list-all --recent --brief` (last seven days; mutually exclusive with `--updated-after`) |
119
121
  | Single item | `pm get <id>` |
120
122
  | Full machine payload | `pm get <id> --full --json` |
121
123
  | Command flags | `pm <command> --help --json` |
124
+ | Command intent map | `pm contracts --summary --json` (one command plus terse intent per row; use before command-scoped contracts) |
122
125
  | Low-noise machine contracts | `pm contracts --command <command> --flags-only --json` |
123
126
  | Semantic index refresh | `pm reindex --mode semantic --progress` (stale-first by default; add `--full` to force full rebuild; requires the `search-advanced` package) |
124
127
  | Timeline | `pm activity --id <id> --limit 20` |
package/docs/COMMANDS.md CHANGED
@@ -7,6 +7,7 @@ Tracked implementation updates: [pm-52eh](../.agents/pm/features/pm-52eh.toon),
7
7
  ```bash
8
8
  pm <command> --help
9
9
  pm <command> --help --json
10
+ pm contracts --summary --json
10
11
  pm contracts --command <command> --flags-only --json
11
12
  ```
12
13
 
@@ -15,7 +16,7 @@ pm contracts --command <command> --flags-only --json
15
16
  - Prefer `pm context`, `pm search`, and narrow list commands before mutation.
16
17
  - Prefer TOON for reading and `--json` for strict parsing.
17
18
  - Use the [guide topic map](README.md#guide-topic-map) when optional `pm guide` local docs routing is needed.
18
- - Use `pm contracts` for machine clients.
19
+ - Use `pm contracts --summary --json` for the cheapest command map, then narrow with command-scoped contracts.
19
20
  - Every mutation writes history.
20
21
 
21
22
  Tracked documentation work: [pm-u9d0](../.agents/pm/epics/pm-u9d0.toon).
@@ -49,6 +50,8 @@ Tracked documentation work: [pm-u9d0](../.agents/pm/epics/pm-u9d0.toon).
49
50
  ```bash
50
51
  pm init
51
52
  pm init --defaults --with-packages
53
+ pm init --workspace ./new-project --defaults
54
+ pm init ./sandbox-tracker --defaults
52
55
  pm init --agent-guidance status
53
56
  pm init --agent-guidance add
54
57
  pm config project list
@@ -57,6 +60,7 @@ pm telemetry status
57
60
  ```
58
61
 
59
62
  `pm init` creates `.agents/pm`. `pm health --check-only --summary --json` gives the smallest machine-readable health gate without refreshing optional search artifacts.
63
+ Use `pm init --workspace <dir>` when `<dir>` is a project root; it creates `<dir>/.agents/pm`. A path-like positional remains the advanced tracker-root form and writes tracker files directly at that path. Both explicit target forms return `target.mode`, `target.tracker_root`, and tracker-scoped executable `next_steps` so agents can run the suggestions from any working directory.
60
64
  `pm init --agent-guidance ask` is the default behavior: prompt in TTY only when AGENTS/CLAUDE guidance is missing and no decline is recorded.
61
65
  Use `--agent-guidance add` to write guidance, `--agent-guidance skip` to persist a decline without writing, and `--agent-guidance status` to inspect guidance state.
62
66
  Use `--with-packages` for one-step agent setup when bundled package commands should be active immediately.
@@ -77,6 +81,7 @@ pm upgrade --cli-only --repair
77
81
  ```
78
82
 
79
83
  `pm install` and `pm package` are the preferred package-first workflow. `pm package` and `pm extension` bare invocations default to `--explore` so agents can list installed packages without remembering an action flag. `pm install '*'`, shell-expanded `pm install *`, and `pm install all` install bundled first-party packages. `pm extension` remains as a compatibility command for direct extension lifecycle operations.
84
+ Install output includes a light `verification` summary with target tracker root, activation state, registered commands/actions/item types, and an `ok|degraded` health verdict. Runtime activation failure sets the command result and process exit status to failure; inspect `activation_diagnostics` and `command_discovery.next_steps` for the exact recovery path.
80
85
  When package-owned commands are unavailable, usage guidance includes an install-ready retry (for example `pm install calendar`, `pm install search-advanced`, `pm install governance-audit`, or `pm install guide-shell`).
81
86
 
82
87
  ## Triage
@@ -129,6 +134,10 @@ pm list-all --updated-after 2026-06-04T15:18:32Z --brief
129
134
  pm list-open --updated-after=-2h --brief
130
135
  pm list-all --created-after=-7d --status open
131
136
 
137
+ # Common list windows avoid date math (`list-open` keeps the view open-only).
138
+ pm list-open --today --brief
139
+ pm list-all --recent --brief
140
+
132
141
  # Search scoped to open work only (drops closed-history noise); statuses accept
133
142
  # all (no lifecycle restriction), open/closed/canceled aliases, or configured
134
143
  # ids, comma-separated, with a did-you-mean hint on typos.
@@ -141,6 +150,8 @@ pm search "reminder validation" --status all --limit 10
141
150
  pm search "calendar" --type Task --assignee alice --updated-after=-7d --parent pm-abcd
142
151
  ```
143
152
 
153
+ Use only one updated-at window per list call: `--today`, `--recent`, and `--updated-after` are mutually exclusive. `--today` starts at local midnight; `--recent` is the same as `--updated-after=-7d`.
154
+
144
155
  `pm get`, `pm history`, and `pm search` also accept command-local `--format json|toon`. `--format json` is equivalent to the global `--json` flag for that command, while `--format toon` keeps the default agent-readable output. Do not combine global `--json` with `--format toon`.
145
156
 
146
157
  `list`/`search` full and fields projections echo full filter metadata. Compact mode emits only active filters (plus runtime schema filters when present) and omits the default projection/sorting/now trailer keys for lower token cost.
@@ -171,7 +182,7 @@ pm search "auth tag:area:auth status:open" # query "auth" + --tag area:au
171
182
  pm search "ranking type:Task priority:1" # query "ranking" + --type Task --priority 1
172
183
  ```
173
184
 
174
- Precedence: an **explicit `--flag` always wins** over a conflicting inline token. When both are supplied, the flag value is used and the result carries a `search_inline_filter_ignored:<field>:flag_takes_precedence` warning so the override is observable. On the CLI, an unquoted `tag:value` token is already rewritten to `--tag value` by argument normalization; the in-query parser additionally covers quoted multi-word queries and the `pm_search` MCP tool, where the whole query arrives as a single string. A query consisting solely of inline tokens (no keyword terms) is rejected — use `pm list` with the equivalent `--tag`/`--status`/`--type`/`--priority` flags for pure filtering.
185
+ Precedence: an **explicit `--flag` always wins** over a conflicting inline token. When both are supplied, the flag value is used and the result carries a `search_inline_filter_ignored:<field>:flag_takes_precedence` warning so the override is observable. On the CLI, both unquoted inline tokens (`status:all scene`) and quoted multi-word queries (`"status:all scene"`) stay query input so the search parser can remove inline filters and preserve the remaining keywords. The same parser covers the `pm_search` MCP tool, where the whole query arrives as a single string. A query consisting solely of inline tokens (no keyword terms) is rejected — use `pm list` with the equivalent `--tag`/`--status`/`--type`/`--priority` flags for pure filtering.
175
186
 
176
187
  Pass `--highlight` to emit per-field matched-text snippets on each hit (off by default for token efficiency). Each matched field gets a `{ field, snippet }` entry under `highlights`, with the matching token runs wrapped in `«…»` and a `…` ellipsis where the field text was windowed:
177
188
 
@@ -413,6 +424,8 @@ Use `pm close <duplicate-id> --duplicate-of <canonical-id>` to close duplicates.
413
424
 
414
425
  `pm close` accepts short aliases for the common flags: `-m` (`--message`), `-r` (`--reason`), and `-d` (`--duplicate-of`). When `governance.require_close_reason` is enabled and no positional/`--reason` text is given, the close reason is derived from the next-best signal in priority order — explicit reason text, then `--duplicate-of` (`Duplicate of <id>`), then `--resolution` — so a single `pm close <id> --resolution "<summary>"` no longer hard-blocks. The resolution is still written to the item's `resolution` field.
415
426
 
427
+ `pm create --blocked-by <id>` and `pm update --blocked-by <id>` keep the scalar `blocked_by` field as the latest/primary blocker for compatibility. When the value resolves to a real item, the command also appends a `blocked_by` dependency edge so `pm deps` and reverse dependency scans see the full blocker graph. Repeating `pm update --blocked-by` with a different blocker preserves the prior blocker edge and appends the new one; repeating the same blocker is deduplicated. Use `pm update <id> --unset blocked-by` to clear the scalar and all `blocked_by` dependency edges.
428
+
416
429
  When closing a blocker, `pm close` scans reverse `blocked_by` edges and auto-unblocks dependent items only when every resolvable blocker is now terminal. Each unblocked item is updated through the normal audited mutation path, gets an `unblock_note`, and the close result reports compact `auto_unblocked:<id>:resolved_blockers=<ids>` warnings. Items with another active blocker remain blocked.
417
430
 
418
431
  Over MCP the mutation tools (`pm_create`/`pm_update`/`pm_close`/`pm_run` append/update-many) are compact by default; pass `fullChangedFields=true` to restore the full `changed_fields` delta, or `idOnly=true` for single-item id/status output.
@@ -858,12 +871,14 @@ Invariants:
858
871
 
859
872
  ```bash
860
873
  pm contracts --json
874
+ pm contracts --summary --json
861
875
  pm contracts --command create --flags-only --json
862
876
  pm contracts --action create --schema-only --json
863
877
  pm help create --json
864
878
  ```
865
879
 
866
880
  Agents should use runtime contracts instead of hard-coding flag lists. Contract output includes extension-provided command surfaces when active.
881
+ Use `pm contracts --summary --json` first when bootstrapping in a tight context window; it emits one command and terse intent per row before the agent requests heavier command-specific flags or schemas.
867
882
 
868
883
  ## Completion
869
884
 
@@ -40,7 +40,9 @@ pm install kanban --project
40
40
 
41
41
  `pm install '*'`, `pm install all`, and shell-expanded `pm install *` are normalized to the same bundled install-all request. First-party package aliases come from each package manifest, with a fallback derived from the `packages/pm-*` directory name.
42
42
 
43
- External registry packages are installed by exact package name. If `npm:<name>` returns a registry 404, JSON error output includes `fallback_candidates` and `next_best_command`; unpublished first-party packages fall back to `pm install --project github.com/unbraind/<name>`. Install results include package-owned `command_paths`, `action_paths`, and `command_discovery`; agents should read `details.command_discovery.command_paths` and `details.command_discovery.help_commands` instead of guessing from the package name.
43
+ External registry packages are installed by exact package name. If `npm:<name>` returns a registry 404, JSON error output includes `fallback_candidates` and `next_best_command`; unpublished first-party packages fall back to `pm install --project github.com/unbraind/<name>`. Install results include package-owned `command_paths`, `action_paths`, `command_discovery`, and a light `verification` block covering the target tracker, activation status, registered commands/actions/item types, and health verdict. Agents should consume those fields instead of guessing from the package name or immediately spending another invocation on doctor. A failed runtime activation returns `ok: false`, `activated: false`, a non-zero CLI exit, and actionable diagnostics; missing SDK resolution adds an explicit dependency recovery step.
44
+
45
+ An explicit `--pm-path` scopes project installs to that tracker root, including extension files, managed state, settings, type-folder scaffolding, and verification output. This is the safe form for temporary package testing from inside another repository checkout.
44
46
 
45
47
  ```bash
46
48
  npm search "pm-cli pm-package"
package/docs/SDK.md CHANGED
@@ -106,6 +106,14 @@ Command/action contract exports:
106
106
  - `PmClient` / `runAction` (high-level in-process action execution for custom tools, bots, CI, and embedded runtimes)
107
107
  - Typed read primitives on `PmClient`: `get`, `list`, `search`, `context`, `next`, `aggregate`, and `stats`
108
108
  - Read primitive option/result contracts: `GetOptions` / `GetResult`, `ListOptions` / `ListResult`, `SearchOptions` / `SearchResult`, `ContextOptions` / `ContextResult`, `NextOptions` / `NextResult`, `AggregateOptions` / `AggregateResult`, `StatsCommandOptions` / `StatsResult`
109
+ - Context relevance primitives: `defaultScoreContextCandidates`, `scoreContextCandidates`, `scoreContextCandidatesWithActiveExtensions`, `evaluateContextRanking`, `runContextEvaluationScenario`, `runContextEvaluationCorpus`, and `summarizeContextEvaluationReports`
110
+ - Context relevance contracts: `ContextRelevanceCandidate`, `ContextRelevanceSignals`, `ContextRelevanceScorer`, `ContextRelevanceReport`, `ContextEvaluationReader`, `ContextEvaluationScenario`, `ContextEvaluationScenarioReport`, `ContextEvaluationThresholds`, and `ContextEvaluationCorpusReport`
111
+ - Typed annotation and relationship primitives on `PmClient`: `comments`, `notes`, `learnings`, `files`, `filesDiscover`, `docs`, `deps`, and `append`
112
+ - Annotation and relationship option/result contracts: `CommentsCommandOptions` / `CommentsResult`, `NotesCommandOptions` / `NotesResult`, `LearningsCommandOptions` / `LearningsResult`, `FilesCommandOptions` / `FilesResult`, `FilesDiscoverOptions` / `FilesDiscoverResult`, `DocsCommandOptions` / `DocsResult`, `DepsCommandOptions` / `DepsResult`, `AppendCommandOptions` / `AppendResult`
113
+ - Typed customization primitives on `PmClient`: `init`, `config`, `schema`, `schemaList`, `schemaShow`, `schemaAddType`, `schemaRemoveType`, `schemaAddStatus`, `schemaRemoveStatus`, `schemaAddField`, `schemaRemoveField`, `schemaListFields`, `schemaShowField`, `schemaApplyPreset`, `schemaInferTypes`, `schemaShowStatus`, `profile`, `profileList`, `profileShow`, `profileApply`, and `profileLint`
114
+ - Customization primitive option/result contracts: `InitCommandOptions` / `InitResult`, `ConfigCommandOptions` / `ConfigResult`, `SchemaSubcommand` / `SchemaResult` / `SchemaInspectResult`, `SchemaListResult`, `SchemaShowResult`, `SchemaAddTypeResult`, `SchemaRemoveTypeResult`, `SchemaAddStatusResult`, `SchemaRemoveStatusResult`, `SchemaAddFieldResult`, `SchemaRemoveFieldResult`, `SchemaListFieldsResult`, `SchemaShowFieldResult`, `SchemaApplyPresetResult`, `SchemaAddTypeInferResult`, `SchemaShowStatusResult`, `ProfileSubcommand` / `ProfileResult`, `ProfileListResult`, `ProfileShowResult`, `ProfileApplyResult`, `ProfileLintResult`
115
+ - Typed governance and maintenance primitives on `PmClient`: `validate`, `health`, and `gc`
116
+ - Governance and maintenance option/result contracts: `ValidateCommandOptions` / `ValidateResult`, `RunHealthOptions` / `HealthResult`, `GcCommandOptions` / `GcResult`
109
117
  - Typed package and extension lifecycle primitives on `PmClient`: `extension`, `extensionList`, `extensionActivate`, `extensionDeactivate`, `package`, `packageList`, `packageInstall`, `packageUninstall`, `packageDoctor`, `packageManage`, `packageDescribe`, `packageReload`, `packageCatalog`, `packageActivate`, `packageDeactivate`, and `upgrade`
110
118
  - Lifecycle primitive option/result contracts: `ExtensionCommandOptions` / `ExtensionCommandResult`, `PackageCommandOptions` / `PackageCommandResult`, `UpgradeCommandOptions` / `UpgradeResult`
111
119
  - `PM_CORE_COMMAND_NAMES`
@@ -450,6 +458,14 @@ const open = await pm.list({ status: "open", limit: "20" });
450
458
  const recommendation = await pm.next({ readyOnly: true });
451
459
  const grouped = await pm.aggregate({ groupBy: "status", count: true });
452
460
  const stats = await pm.stats({ metadataCoverage: true });
461
+ await pm.comments(created.item.id, { add: "Investigation context captured." });
462
+ await pm.files(created.item.id, { add: ["src/index.ts"], note: "entrypoint" });
463
+ await pm.docs(created.item.id, { add: ["docs/SDK.md"], note: "authoring reference" });
464
+ const graph = await pm.deps(created.item.id, { format: "graph" });
465
+ const types = await pm.schemaList();
466
+ const profiles = await pm.profileList();
467
+ const validation = await pm.validate({ checkResolution: true });
468
+ const health = await pm.health({ checkOnly: true, summary: true });
453
469
  const packages = await pm.packageList({ project: true });
454
470
  const doctor = await pm.packageDoctor({ project: true, isolated: true });
455
471
  const plannedUpgrade = await pm.upgrade(undefined, { dryRun: true, cliOnly: true });
@@ -501,6 +517,105 @@ payload shape with vocabulary-appropriate SDK signatures. `UpgradeResult` is the
501
517
  same structured payload rendered by the CLI, so embedded tools can own their
502
518
  presentation layer while sharing pm's package/install/doctor semantics.
503
519
 
520
+ Annotation and relationship convenience methods turn "project management =
521
+ context management" into a typed SDK surface. Use `pm.comments`, `pm.notes`,
522
+ `pm.learnings`, `pm.files`, `pm.docs`, `pm.deps`, and `pm.append` when an
523
+ embedded agent, package, or custom UI needs to add durable rationale, link
524
+ changed files/docs/tests, or inspect the item graph. `pm.filesDiscover` exposes
525
+ the same file-candidate discovery used by the CLI, so a custom tool can present
526
+ reviewable link suggestions instead of scraping git output itself.
527
+
528
+ Customization convenience methods are the SDK baseline for project-specific pm
529
+ tools. `pm.init` stages a tracker, `pm.config` reads/writes settings,
530
+ `pm.schema*` methods manage types/statuses/fields/presets, and `pm.profile*`
531
+ methods list, inspect, apply, and lint project archetypes. These helpers let a
532
+ package or app construct an opinionated project-management experience while
533
+ staying on the same schema/profile primitives the CLI and MCP use.
534
+ `pm.init` accepts `workspace` to initialize `<workspace>/.agents/pm`; path-target
535
+ calls retain tracker-root semantics. `InitResult.target` exposes the resolved
536
+ mode, tracker root, and optional workspace root, while every explicit-target
537
+ `next_steps` command carries `--pm-path` so embedded tools can display runnable
538
+ recovery without depending on the caller's current directory.
539
+
540
+ Package install results include `details.verification`, a light doctor-equivalent
541
+ projection of activation, registered commands/actions/item types, target tracker
542
+ root, and health verdict. Treat `ok: false` or `verification.status: "degraded"`
543
+ as an install failure even when files were copied successfully; use
544
+ `activation_diagnostics` and `command_discovery.next_steps` for remediation.
545
+
546
+ Governance and maintenance convenience methods expose the operational floor a
547
+ custom PM host should run before it trusts or publishes tracker state.
548
+ `pm.validate` checks resolution/history invariants, `pm.health` performs
549
+ read-only diagnostics, and `pm.gc` runs dry-run or explicit cleanup paths through
550
+ the same bounded maintenance engine as the CLI. Prefer these typed calls over
551
+ shelling out when building CI, editor integrations, or long-running agent
552
+ runtimes.
553
+
554
+ ### Context relevance and evaluation
555
+
556
+ Tracked by [pm-4k6b](../.agents/pm/features/pm-4k6b.toon),
557
+ [pm-h3no](../.agents/pm/tasks/pm-h3no.toon), and
558
+ [pm-atfm](../.agents/pm/features/pm-atfm.toon).
559
+
560
+ `pm context` and `pm next` share the public deterministic relevance model.
561
+ Candidate order is the structural baseline; normalized metadata signals add
562
+ explainable weighted contributions. Package authors can call
563
+ `scoreContextCandidates` with a scorer callback, while installed extensions can
564
+ register the governed `context_relevance` service override. A malformed or
565
+ throwing override degrades to the deterministic default and emits an
566
+ `extension_context_relevance_invalid_result` warning instead of breaking the
567
+ read path.
568
+
569
+ Use `--explain-ranking --json` on `pm context` or `pm next` to include the model,
570
+ available signals, baseline rank, final rank, score, and per-signal
571
+ contributions. Explanation data is opt-in so default agent output stays bounded.
572
+
573
+ Custom tools can evaluate the same behavior without shelling out:
574
+
575
+ ```ts
576
+ import {
577
+ PmClient,
578
+ runContextEvaluationCorpus,
579
+ type ContextEvaluationScenario,
580
+ type ContextEvaluationThresholds,
581
+ } from "@unbrained/pm-cli/sdk";
582
+
583
+ const pm = new PmClient({
584
+ pmRoot: ".agents/pm",
585
+ author: "context-quality-ci",
586
+ });
587
+
588
+ const scenarios: ContextEvaluationScenario[] = [
589
+ {
590
+ id: "returning-agent",
591
+ surface: "context",
592
+ options: { limit: "5" },
593
+ judgments: { "pm-current": 3, "pm-support": 2 },
594
+ required_ids: ["pm-current"],
595
+ continuity_ids: ["pm-current", "pm-support"],
596
+ token_budget: 1200,
597
+ rationale: "Resume claimed work with its supporting context.",
598
+ },
599
+ ];
600
+
601
+ const thresholds: ContextEvaluationThresholds = {
602
+ ndcg: 0.9,
603
+ reciprocal_rank: 0.9,
604
+ required_recall: 1,
605
+ continuity_coverage: 1,
606
+ token_budget_adherence: 1,
607
+ };
608
+
609
+ const report = await runContextEvaluationCorpus(scenarios, pm, thresholds);
610
+ if (!report.passed) throw new Error(report.failures.join(", "));
611
+ ```
612
+
613
+ The evaluator calls only the public `context()` / `next()` reader contract. It
614
+ scores nDCG, reciprocal rank, required-item recall, returning-agent continuity,
615
+ and deterministic `ceil(UTF-8 JSON bytes / 4)` token-budget adherence. Reports
616
+ retain attribution only for served items, while token accounting measures the
617
+ normal packet without the opt-in ranking explanation.
618
+
504
619
  `PmClient` and `runAction` share the same process-wide extension activation
505
620
  queue as MCP. Calls from one process are serialized across extension load,
506
621
  activation, dispatch, cleanup, and deactivate so active extension registries stay
package/docs/TESTING.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  This page describes safe local tests, linked tests, coverage, and release-readiness checks.
4
4
 
5
- Tracked implementation updates: [pm-52eh](../.agents/pm/features/pm-52eh.toon), [pm-mcxr](../.agents/pm/issues/pm-mcxr.toon), [pm-u42x](../.agents/pm/issues/pm-u42x.toon).
5
+ Tracked implementation updates: [pm-52eh](../.agents/pm/features/pm-52eh.toon), [pm-mcxr](../.agents/pm/issues/pm-mcxr.toon), [pm-u42x](../.agents/pm/issues/pm-u42x.toon), [pm-atfm](../.agents/pm/features/pm-atfm.toon), [pm-xmp5](../.agents/pm/tasks/pm-xmp5.toon).
6
6
 
7
7
  ## Agent Quick Context
8
8
 
@@ -109,6 +109,45 @@ Fixture authoring notes:
109
109
 
110
110
  CI currently runs this gate in advisory mode (`continue-on-error: true`), so failures do not block merges by default; treat failing nDCG as a quality signal to investigate, not as a silent ignore.
111
111
 
112
+ ## Context Quality Evaluation
113
+
114
+ The required context relevance gate proves that `pm context` and `pm next`
115
+ assemble the right bounded working set, not only that search returns relevant
116
+ documents.
117
+
118
+ Fixture and baseline sources:
119
+
120
+ - `tests/context-eval/golden-scenarios.json` — reviewable scratch,
121
+ real-shaped, synthetic-scale, and returning-agent continuity judgments.
122
+ - `tests/context-eval/baseline.json` — committed aggregate and per-scenario
123
+ metrics from the accepted structural/scorer behavior.
124
+
125
+ Run the required gate locally:
126
+
127
+ ```bash
128
+ pnpm build
129
+ pnpm quality:context-eval
130
+ ```
131
+
132
+ The gate creates isolated temporary trackers through `PmClient`, reads them only
133
+ through the public `context()` / `next()` SDK primitives, and reports nDCG,
134
+ reciprocal rank, required-item recall, continuity coverage, token-budget
135
+ adherence, and served-item signal attribution. It fails when an explicit corpus
136
+ threshold is missed or any aggregate metric regresses below the committed
137
+ baseline.
138
+
139
+ When a deliberate ranking change improves or intentionally redefines the golden
140
+ judgments, review the scenario-level diff first, then refresh the baseline:
141
+
142
+ ```bash
143
+ pnpm quality:context-eval -- --update
144
+ pnpm quality:context-eval
145
+ ```
146
+
147
+ Do not update the baseline merely to make CI green. Change judgments and
148
+ rationales in the corpus when product intent changes, and commit the corpus,
149
+ baseline, scorer tests, and SDK documentation together.
150
+
112
151
  ## Linked Tests
113
152
 
114
153
  Add tests to the item that owns the work:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.7.8",
3
+ "version": "2026.7.10",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@11.10.0",
@@ -80,7 +80,9 @@
80
80
  "lint:complexity:baseline": "eslint . --suppress-rule complexity",
81
81
  "lint:duplicates": "jscpd --config .jscpd.json",
82
82
  "lint:codefactor": "pnpm quality:static",
83
- "quality:static": "node scripts/release/static-quality-gate.mjs --min-docstring-coverage 92.93 --min-exported-docstring-coverage 84.41 --min-member-docstring-coverage 13.655",
83
+ "quality:static": "pnpm build && node scripts/release/static-quality-gate.mjs --min-docstring-coverage 92.93 --min-exported-docstring-coverage 84.41 --min-member-docstring-coverage 13.655 && node scripts/release/token-budget-gate.mjs",
84
+ "quality:token-budget": "node scripts/release/token-budget-gate.mjs",
85
+ "quality:context-eval": "node scripts/release/context-eval-gate.mjs",
84
86
  "quality:docs-skills": "node scripts/release/docs-skills-gate.mjs",
85
87
  "quality:docs-links": "node scripts/release/docs-skills-gate.mjs --links-only",
86
88
  "contracts:update": "node scripts/contracts-snapshot.mjs --update",
@@ -1,11 +0,0 @@
1
- import {
2
- runAppend
3
- } from "./chunk-GSQVQINP.js";
4
- import "./chunk-WW4E2DC3.js";
5
- import "./chunk-CGDUIPJL.js";
6
- import "./chunk-BPJ5NYSJ.js";
7
- import "./chunk-2BVD4ZD2.js";
8
- export {
9
- runAppend
10
- };
11
- //# sourceMappingURL=append-CDPAYYSB.js.map