@unbrained/pm-cli 2026.7.6 → 2026.7.8

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 (688) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/cli/commands/annotation-command.d.ts +1 -0
  3. package/dist/cli/commands/annotation-command.js +29 -2
  4. package/dist/cli/commands/annotation-command.js.map +1 -1
  5. package/dist/cli/commands/comments.js +3 -4
  6. package/dist/cli/commands/comments.js.map +1 -1
  7. package/dist/cli/commands/completion.js +10 -2
  8. package/dist/cli/commands/completion.js.map +1 -1
  9. package/dist/cli/commands/context.d.ts +1 -0
  10. package/dist/cli/commands/context.js +4 -4
  11. package/dist/cli/commands/context.js.map +1 -1
  12. package/dist/cli/commands/extension/bundled-catalog.d.ts +3 -0
  13. package/dist/cli/commands/extension/bundled-catalog.js +38 -28
  14. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  15. package/dist/cli/commands/extension/install-sources.js +81 -18
  16. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  17. package/dist/cli/commands/extension.d.ts +23 -19
  18. package/dist/cli/commands/extension.js +167 -57
  19. package/dist/cli/commands/extension.js.map +1 -1
  20. package/dist/cli/commands/health.js +9 -5
  21. package/dist/cli/commands/health.js.map +1 -1
  22. package/dist/cli/commands/learnings.js +5 -3
  23. package/dist/cli/commands/learnings.js.map +1 -1
  24. package/dist/cli/commands/notes.js +5 -3
  25. package/dist/cli/commands/notes.js.map +1 -1
  26. package/dist/cli/commands/reindex.js +4 -3
  27. package/dist/cli/commands/reindex.js.map +1 -1
  28. package/dist/cli/commands/search.js +4 -4
  29. package/dist/cli/commands/search.js.map +1 -1
  30. package/dist/cli/commands/test.d.ts +9 -0
  31. package/dist/cli/commands/test.js +144 -105
  32. package/dist/cli/commands/test.js.map +1 -1
  33. package/dist/cli/extension-command-help.js +10 -2
  34. package/dist/cli/extension-command-help.js.map +1 -1
  35. package/dist/cli/help-content.js +28 -2
  36. package/dist/cli/help-content.js.map +1 -1
  37. package/dist/cli/register-list-query.d.ts +1 -1
  38. package/dist/cli/register-list-query.js +19 -27
  39. package/dist/cli/register-list-query.js.map +1 -1
  40. package/dist/cli/register-operations.d.ts +0 -8
  41. package/dist/cli/register-operations.js +41 -46
  42. package/dist/cli/register-operations.js.map +1 -1
  43. package/dist/cli/register-setup.js +119 -13
  44. package/dist/cli/register-setup.js.map +1 -1
  45. package/dist/cli/registration-helpers.d.ts +5 -1
  46. package/dist/cli/registration-helpers.js +14 -2
  47. package/dist/cli/registration-helpers.js.map +1 -1
  48. package/dist/cli-bundle/chunks/append-CDPAYYSB.js +11 -0
  49. package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js → append-RSPHC423.js} +8 -9
  50. package/dist/cli-bundle/chunks/{chunk-LK6XLOGP.js → chunk-2BVD4ZD2.js} +288 -233
  51. package/dist/cli-bundle/chunks/chunk-2BVD4ZD2.js.map +7 -0
  52. package/dist/cli-bundle/chunks/{chunk-TKD5VCTD.js → chunk-2RADY7IB.js} +517 -195
  53. package/dist/cli-bundle/chunks/chunk-2RADY7IB.js.map +1 -0
  54. package/dist/cli-bundle/chunks/{chunk-COSPOP7H.js → chunk-3FRNNVWY.js} +518 -196
  55. package/dist/cli-bundle/chunks/chunk-3FRNNVWY.js.map +7 -0
  56. package/dist/cli-bundle/chunks/{chunk-24YG75HI.js → chunk-3FUXM574.js} +8 -8
  57. package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js → chunk-3SHDAKMF.js} +3 -3
  58. package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js → chunk-3UXIMY62.js} +4 -6
  59. package/dist/cli-bundle/chunks/{chunk-O6AWCQRQ.js.map → chunk-3UXIMY62.js.map} +1 -1
  60. package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js → chunk-3V5C7PUH.js} +2 -2
  61. package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js → chunk-3YJDIJIE.js} +4 -6
  62. package/dist/cli-bundle/chunks/{chunk-ALFPSEWO.js.map → chunk-3YJDIJIE.js.map} +1 -1
  63. package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js → chunk-4I7KS5ES.js} +2 -2
  64. package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js → chunk-4OCWJ2AP.js} +13 -17
  65. package/dist/cli-bundle/chunks/{chunk-CRVYGJUI.js.map → chunk-4OCWJ2AP.js.map} +1 -1
  66. package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js → chunk-5STY7NVM.js} +8 -8
  67. package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js → chunk-5VAZHYVQ.js} +2 -2
  68. package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js → chunk-6FU5BVRB.js} +12 -14
  69. package/dist/cli-bundle/chunks/{chunk-CFB33L7W.js.map → chunk-6FU5BVRB.js.map} +1 -1
  70. package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js → chunk-6RR4XM5H.js} +3 -3
  71. package/dist/cli-bundle/chunks/{chunk-K46RF36U.js → chunk-6TD5QGIB.js} +7 -7
  72. package/dist/cli-bundle/chunks/chunk-6TD5QGIB.js.map +1 -0
  73. package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js → chunk-6WCXSC5V.js} +12 -16
  74. package/dist/cli-bundle/chunks/{chunk-IX5BXEMX.js.map → chunk-6WCXSC5V.js.map} +1 -1
  75. package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js → chunk-6ZKDMEVT.js} +7 -9
  76. package/dist/cli-bundle/chunks/{chunk-ZWBEPGD7.js.map → chunk-6ZKDMEVT.js.map} +1 -1
  77. package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js → chunk-7QKSLAHB.js} +2 -2
  78. package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js → chunk-7TBUV7XS.js} +8 -12
  79. package/dist/cli-bundle/chunks/{chunk-MVSP7WGJ.js.map → chunk-7TBUV7XS.js.map} +1 -1
  80. package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js → chunk-7UCBLJDF.js} +2 -2
  81. package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js → chunk-AEOFBBWO.js} +6 -8
  82. package/dist/cli-bundle/chunks/{chunk-F3K4JGFD.js.map → chunk-AEOFBBWO.js.map} +1 -1
  83. package/dist/cli-bundle/chunks/chunk-ASMRSIDX.js +10498 -0
  84. package/dist/cli-bundle/chunks/chunk-ASMRSIDX.js.map +7 -0
  85. package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js → chunk-BFNFTHWQ.js} +3 -3
  86. package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js +5509 -0
  87. package/dist/cli-bundle/chunks/chunk-BPJ5NYSJ.js.map +7 -0
  88. package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js → chunk-C3YU3TXX.js} +2 -2
  89. package/dist/cli-bundle/chunks/{chunk-VPIM42PC.js → chunk-C6XSTACC.js} +11 -7
  90. package/dist/cli-bundle/chunks/chunk-C6XSTACC.js.map +7 -0
  91. package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js → chunk-CGDUIPJL.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js → chunk-CXH7EMSB.js} +5 -7
  93. package/dist/cli-bundle/chunks/{chunk-FT3QTERD.js.map → chunk-CXH7EMSB.js.map} +1 -1
  94. package/dist/cli-bundle/chunks/{chunk-DMRNBQOI.js → chunk-D63PEJTB.js} +256 -36
  95. package/dist/cli-bundle/chunks/chunk-D63PEJTB.js.map +1 -0
  96. package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js → chunk-D6J5673C.js} +7 -9
  97. package/dist/cli-bundle/chunks/{chunk-RCQZK2GO.js.map → chunk-D6J5673C.js.map} +1 -1
  98. package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js → chunk-DUBC6TI3.js} +28 -34
  99. package/dist/cli-bundle/chunks/{chunk-3UJRFJ5R.js.map → chunk-DUBC6TI3.js.map} +1 -1
  100. package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js → chunk-EEJKHF7M.js} +7 -6
  101. package/dist/cli-bundle/chunks/{chunk-NC33K5ZS.js.map → chunk-EEJKHF7M.js.map} +2 -2
  102. package/dist/cli-bundle/chunks/{chunk-XG625QP4.js → chunk-EP2CKDS7.js} +2 -2
  103. package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js → chunk-EYPIUFWJ.js} +24 -32
  104. package/dist/cli-bundle/chunks/{chunk-NZEHECMW.js.map → chunk-EYPIUFWJ.js.map} +1 -1
  105. package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js → chunk-F5DDGY6R.js} +6 -6
  106. package/dist/cli-bundle/chunks/{chunk-45FYNUFJ.js.map → chunk-F5DDGY6R.js.map} +1 -1
  107. package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js → chunk-FFB3WITE.js} +10 -16
  108. package/dist/cli-bundle/chunks/{chunk-4ZBE5GUN.js.map → chunk-FFB3WITE.js.map} +1 -1
  109. package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js → chunk-FJR2S7S4.js} +10 -14
  110. package/dist/cli-bundle/chunks/{chunk-7D7OOEYG.js.map → chunk-FJR2S7S4.js.map} +1 -1
  111. package/dist/cli-bundle/chunks/chunk-FL625JJM.js +6792 -0
  112. package/dist/cli-bundle/chunks/chunk-FL625JJM.js.map +7 -0
  113. package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js → chunk-FOJEBRDD.js} +16 -20
  114. package/dist/cli-bundle/chunks/{chunk-LPSSSDJR.js.map → chunk-FOJEBRDD.js.map} +1 -1
  115. package/dist/cli-bundle/chunks/{chunk-EOKXK3R3.js → chunk-G4FKP4ID.js} +1220 -398
  116. package/dist/cli-bundle/chunks/chunk-G4FKP4ID.js.map +1 -0
  117. package/dist/cli-bundle/chunks/chunk-GE44TQMC.js +6726 -0
  118. package/dist/cli-bundle/chunks/chunk-GE44TQMC.js.map +1 -0
  119. package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js → chunk-GLMJLBLR.js} +6 -10
  120. package/dist/cli-bundle/chunks/{chunk-XUC7PI2H.js.map → chunk-GLMJLBLR.js.map} +1 -1
  121. package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js → chunk-GO2X6ZRB.js} +4 -6
  122. package/dist/cli-bundle/chunks/{chunk-GANUTS7W.js.map → chunk-GO2X6ZRB.js.map} +1 -1
  123. package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js → chunk-GQOKFX2G.js} +22 -26
  124. package/dist/cli-bundle/chunks/{chunk-CFNGIXZP.js.map → chunk-GQOKFX2G.js.map} +1 -1
  125. package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js → chunk-GSQVQINP.js} +8 -10
  126. package/dist/cli-bundle/chunks/{chunk-XHET7YUZ.js.map → chunk-GSQVQINP.js.map} +1 -1
  127. package/dist/cli-bundle/chunks/chunk-HI27UADG.js +5434 -0
  128. package/dist/cli-bundle/chunks/chunk-HI27UADG.js.map +1 -0
  129. package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js → chunk-HZZ3AC27.js} +6 -6
  130. package/dist/cli-bundle/chunks/{chunk-I36Y7PCE.js.map → chunk-HZZ3AC27.js.map} +1 -1
  131. package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js → chunk-IINCZYM3.js} +8 -12
  132. package/dist/cli-bundle/chunks/{chunk-OGWQ2IEP.js.map → chunk-IINCZYM3.js.map} +1 -1
  133. package/dist/cli-bundle/chunks/{chunk-EKFNL33R.js → chunk-INOWVPUD.js} +37 -16
  134. package/dist/cli-bundle/chunks/chunk-INOWVPUD.js.map +1 -0
  135. package/dist/cli-bundle/chunks/{chunk-4LELACOL.js → chunk-IYRG5AEC.js} +15 -23
  136. package/dist/cli-bundle/chunks/{chunk-4LELACOL.js.map → chunk-IYRG5AEC.js.map} +1 -1
  137. package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js → chunk-J6AD3GWC.js} +2 -2
  138. package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js → chunk-JH5XDDYS.js} +14 -20
  139. package/dist/cli-bundle/chunks/{chunk-D2XRLB55.js.map → chunk-JH5XDDYS.js.map} +1 -1
  140. package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js → chunk-JYVPLGOW.js} +9 -11
  141. package/dist/cli-bundle/chunks/{chunk-HOVCGJSD.js.map → chunk-JYVPLGOW.js.map} +1 -1
  142. package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js → chunk-K52C6YPA.js} +12 -18
  143. package/dist/cli-bundle/chunks/{chunk-MA4SM3QZ.js.map → chunk-K52C6YPA.js.map} +1 -1
  144. package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js → chunk-KFL3XHMA.js} +2 -2
  145. package/dist/cli-bundle/chunks/chunk-KMXVZ2P7.js +10320 -0
  146. package/dist/cli-bundle/chunks/chunk-KMXVZ2P7.js.map +1 -0
  147. package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js → chunk-LD2NBQ5T.js} +6 -8
  148. package/dist/cli-bundle/chunks/{chunk-4CJFCTLM.js.map → chunk-LD2NBQ5T.js.map} +1 -1
  149. package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js → chunk-LG4N6YOK.js} +8 -7
  150. package/dist/cli-bundle/chunks/{chunk-6QBJLYBP.js.map → chunk-LG4N6YOK.js.map} +1 -1
  151. package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js → chunk-LHDHS4Z6.js} +10 -14
  152. package/dist/cli-bundle/chunks/{chunk-L5PSPMZ4.js.map → chunk-LHDHS4Z6.js.map} +1 -1
  153. package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js → chunk-MCH6IKK7.js} +4 -6
  154. package/dist/cli-bundle/chunks/{chunk-M7JNBQAD.js.map → chunk-MCH6IKK7.js.map} +1 -1
  155. package/dist/cli-bundle/chunks/{chunk-57NWPFF2.js → chunk-MFLLULHU.js} +281 -233
  156. package/dist/cli-bundle/chunks/chunk-MFLLULHU.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-EGAP5OWD.js → chunk-ML27MHNM.js} +35 -17
  158. package/dist/cli-bundle/chunks/chunk-ML27MHNM.js.map +1 -0
  159. package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js → chunk-MYHFZNBO.js} +20 -24
  160. package/dist/cli-bundle/chunks/{chunk-3N6RRO2Q.js.map → chunk-MYHFZNBO.js.map} +1 -1
  161. package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js → chunk-NGBWEYNY.js} +12 -18
  162. package/dist/cli-bundle/chunks/{chunk-6LLVNJXT.js.map → chunk-NGBWEYNY.js.map} +1 -1
  163. package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js → chunk-NRMDT4OV.js} +10 -14
  164. package/dist/cli-bundle/chunks/{chunk-GDDAGPWJ.js.map → chunk-NRMDT4OV.js.map} +1 -1
  165. package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js +5359 -0
  166. package/dist/cli-bundle/chunks/chunk-NTOOEVJ4.js.map +1 -0
  167. package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js → chunk-P2WE5KCU.js} +261 -34
  168. package/dist/cli-bundle/chunks/{chunk-W6DYWXPQ.js.map → chunk-P2WE5KCU.js.map} +4 -4
  169. package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js → chunk-PAWPLIWW.js} +14 -20
  170. package/dist/cli-bundle/chunks/{chunk-YN7Y6DQZ.js.map → chunk-PAWPLIWW.js.map} +1 -1
  171. package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js → chunk-PCBZ2VJD.js} +7 -7
  172. package/dist/cli-bundle/chunks/{chunk-ZSUS2OD3.js → chunk-PJPZTE7P.js} +1216 -387
  173. package/dist/cli-bundle/chunks/chunk-PJPZTE7P.js.map +7 -0
  174. package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js → chunk-Q3CFSOQZ.js} +7 -7
  175. package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js → chunk-QJZM5WO5.js} +5 -5
  176. package/dist/cli-bundle/chunks/{chunk-NO442GWJ.js.map → chunk-QJZM5WO5.js.map} +2 -2
  177. package/dist/cli-bundle/chunks/{chunk-QLMX7SRD.js → chunk-QLEH6FTQ.js} +6 -6
  178. package/dist/cli-bundle/chunks/chunk-QLEH6FTQ.js.map +7 -0
  179. package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js → chunk-QYZMZD4L.js} +10 -12
  180. package/dist/cli-bundle/chunks/{chunk-GBAX2ZAQ.js.map → chunk-QYZMZD4L.js.map} +1 -1
  181. package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js → chunk-RDJXIAJB.js} +7 -11
  182. package/dist/cli-bundle/chunks/{chunk-W3DSJQIO.js.map → chunk-RDJXIAJB.js.map} +1 -1
  183. package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js → chunk-RFHLRMLQ.js} +6 -8
  184. package/dist/cli-bundle/chunks/{chunk-7WBAJSS6.js.map → chunk-RFHLRMLQ.js.map} +1 -1
  185. package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js → chunk-RL24NAUX.js} +10 -12
  186. package/dist/cli-bundle/chunks/{chunk-SGMFPXKR.js.map → chunk-RL24NAUX.js.map} +1 -1
  187. package/dist/cli-bundle/chunks/{chunk-46CUF5L6.js → chunk-RLHQ3G4M.js} +99 -51
  188. package/dist/cli-bundle/chunks/chunk-RLHQ3G4M.js.map +7 -0
  189. package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js → chunk-SCJPFQQT.js} +12 -18
  190. package/dist/cli-bundle/chunks/{chunk-UH7T2DAX.js.map → chunk-SCJPFQQT.js.map} +1 -1
  191. package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js → chunk-SIQGG335.js} +12 -16
  192. package/dist/cli-bundle/chunks/{chunk-B6XS3R3O.js.map → chunk-SIQGG335.js.map} +1 -1
  193. package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js → chunk-SN5X5GTU.js} +8 -12
  194. package/dist/cli-bundle/chunks/{chunk-E42XTBSP.js.map → chunk-SN5X5GTU.js.map} +1 -1
  195. package/dist/cli-bundle/chunks/{chunk-CL36D4PC.js → chunk-TKWTJGD6.js} +36 -15
  196. package/dist/cli-bundle/chunks/chunk-TKWTJGD6.js.map +7 -0
  197. package/dist/cli-bundle/chunks/{chunk-VIIUS6N6.js → chunk-TR2C6V5T.js} +37 -19
  198. package/dist/cli-bundle/chunks/chunk-TR2C6V5T.js.map +7 -0
  199. package/dist/cli-bundle/chunks/chunk-TTCJCKUJ.js +5514 -0
  200. package/dist/cli-bundle/chunks/chunk-TTCJCKUJ.js.map +7 -0
  201. package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js → chunk-TU5P744I.js} +4 -4
  202. package/dist/cli-bundle/chunks/{chunk-TULGS6X6.js → chunk-TUDAYIO7.js} +529 -46
  203. package/dist/cli-bundle/chunks/chunk-TUDAYIO7.js.map +1 -0
  204. package/dist/cli-bundle/chunks/{chunk-MLIYFOE7.js → chunk-U72GF3I2.js} +12 -8
  205. package/dist/cli-bundle/chunks/chunk-U72GF3I2.js.map +1 -0
  206. package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js → chunk-UCRYCT5M.js} +30 -36
  207. package/dist/cli-bundle/chunks/{chunk-ZZD4J5XY.js.map → chunk-UCRYCT5M.js.map} +1 -1
  208. package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js → chunk-UEATYUZW.js} +2 -2
  209. package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js → chunk-UFNFHCAC.js} +2 -2
  210. package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js → chunk-UH6VFRV6.js} +5 -7
  211. package/dist/cli-bundle/chunks/{chunk-NB7RLQFW.js.map → chunk-UH6VFRV6.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js → chunk-UIHDZS6X.js} +11 -15
  213. package/dist/cli-bundle/chunks/{chunk-SQOIV3OQ.js.map → chunk-UIHDZS6X.js.map} +1 -1
  214. package/dist/cli-bundle/chunks/{chunk-W572BIEB.js → chunk-UURYLDDC.js} +14 -18
  215. package/dist/cli-bundle/chunks/{chunk-W572BIEB.js.map → chunk-UURYLDDC.js.map} +1 -1
  216. package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js → chunk-UVFJSKTF.js} +9 -13
  217. package/dist/cli-bundle/chunks/{chunk-G64OCSKU.js.map → chunk-UVFJSKTF.js.map} +1 -1
  218. package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js → chunk-W2VFNVSJ.js} +6 -8
  219. package/dist/cli-bundle/chunks/{chunk-SMB7RV23.js.map → chunk-W2VFNVSJ.js.map} +1 -1
  220. package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js → chunk-WVEMZZCR.js} +5 -5
  221. package/dist/cli-bundle/chunks/{chunk-HIHMT6WS.js.map → chunk-WVEMZZCR.js.map} +2 -2
  222. package/dist/cli-bundle/chunks/{chunk-3VHSI5FL.js → chunk-XN5BEN2B.js} +94 -53
  223. package/dist/cli-bundle/chunks/chunk-XN5BEN2B.js.map +1 -0
  224. package/dist/cli-bundle/chunks/{chunk-SCUR7K7N.js → chunk-XPSGJ4IV.js} +541 -44
  225. package/dist/cli-bundle/chunks/chunk-XPSGJ4IV.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js → chunk-YQEKE4FO.js} +13 -21
  227. package/dist/cli-bundle/chunks/{chunk-ZJ262CED.js.map → chunk-YQEKE4FO.js.map} +1 -1
  228. package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js → chunk-YR5R4FMQ.js} +26 -34
  229. package/dist/cli-bundle/chunks/{chunk-EBRZZ54H.js.map → chunk-YR5R4FMQ.js.map} +1 -1
  230. package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js → chunk-YSRXFGNV.js} +7 -9
  231. package/dist/cli-bundle/chunks/{chunk-XB7KFVFI.js.map → chunk-YSRXFGNV.js.map} +1 -1
  232. package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js → chunk-YUCKM3MD.js} +10 -14
  233. package/dist/cli-bundle/chunks/{chunk-HFDADVJZ.js.map → chunk-YUCKM3MD.js.map} +1 -1
  234. package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js → chunk-YUMNZS3X.js} +6 -8
  235. package/dist/cli-bundle/chunks/{chunk-SQYJ4HF2.js.map → chunk-YUMNZS3X.js.map} +1 -1
  236. package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js → chunk-Z2JQH2MG.js} +2 -2
  237. package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js → chunk-Z6RLSNUX.js} +4 -6
  238. package/dist/cli-bundle/chunks/{chunk-ZGK4L4JM.js.map → chunk-Z6RLSNUX.js.map} +1 -1
  239. package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js → chunk-ZMOPZFVT.js} +4 -4
  240. package/dist/cli-bundle/chunks/close-E3RLZSP2.js +12 -0
  241. package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js → close-K6BFI3OX.js} +5 -9
  242. package/dist/cli-bundle/chunks/close-many-6NBL3PM4.js +26 -0
  243. package/dist/cli-bundle/chunks/close-many-X4YKS3RO.js +22 -0
  244. package/dist/cli-bundle/chunks/comments-PLFK5ZKK.js +17 -0
  245. package/dist/cli-bundle/chunks/comments-ZNOD5PTV.js +13 -0
  246. package/dist/cli-bundle/chunks/copy-F7BUFY4J.js +9 -0
  247. package/dist/cli-bundle/chunks/{copy-32ROBIDL.js → copy-VH3L4MN2.js} +4 -8
  248. package/dist/cli-bundle/chunks/create-AMBMYP6F.js +25 -0
  249. package/dist/cli-bundle/chunks/{create-E77SDCUP.js → create-TRIBYORN.js} +9 -14
  250. package/dist/cli-bundle/chunks/delete-6KQHZYIP.js +10 -0
  251. package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js → delete-ZNXUNCZR.js} +4 -8
  252. package/dist/cli-bundle/chunks/deps-CVDY7FFK.js +13 -0
  253. package/dist/cli-bundle/chunks/{deps-32SU7HO5.js → deps-SZXQHV73.js} +4 -8
  254. package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js → docs-DR74ITCD.js} +6 -10
  255. package/dist/cli-bundle/chunks/docs-WCVYY6I7.js +14 -0
  256. package/dist/cli-bundle/chunks/files-H5YCA74Z.js +18 -0
  257. package/dist/cli-bundle/chunks/{files-PYKR2UUG.js → files-QEFQ2M3H.js} +6 -10
  258. package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js → focus-55TRYSNA.js} +7 -9
  259. package/dist/cli-bundle/chunks/focus-N2QGNS5D.js +10 -0
  260. package/dist/cli-bundle/chunks/history-compact-GWQ4UOEI.js +21 -0
  261. package/dist/cli-bundle/chunks/{history-compact-3MNXLKAT.js → history-compact-JJZ4EFL3.js} +9 -13
  262. package/dist/cli-bundle/chunks/history-redact-4GJOLXCM.js +17 -0
  263. package/dist/cli-bundle/chunks/{history-redact-P6DYF55G.js → history-redact-TPPUT3A5.js} +7 -11
  264. package/dist/cli-bundle/chunks/history-repair-HVCVCGUF.js +19 -0
  265. package/dist/cli-bundle/chunks/{history-repair-ZJQFMWPD.js → history-repair-J7PIZ6ZP.js} +9 -13
  266. package/dist/cli-bundle/chunks/{append-BGML6VLD.js → learnings-KB6BT4NR.js} +9 -11
  267. package/dist/cli-bundle/chunks/learnings-YYY3U2Y7.js +13 -0
  268. package/dist/cli-bundle/chunks/notes-BGG7VL72.js +13 -0
  269. package/dist/cli-bundle/chunks/notes-ZTHXVOKM.js +17 -0
  270. package/dist/cli-bundle/chunks/{plan-CHVE7PBR.js → plan-CJPKFRBK.js} +10 -15
  271. package/dist/cli-bundle/chunks/plan-MK2QY3GA.js +24 -0
  272. package/dist/cli-bundle/chunks/{profile-ZXGSKBJD.js → profile-AQNHXOYA.js} +9 -13
  273. package/dist/cli-bundle/chunks/{profile-LD23PSI6.js → profile-HTBFINKQ.js} +9 -13
  274. package/dist/cli-bundle/chunks/{register-list-query-B42JCCOI.js → register-list-query-EEF33SUJ.js} +43 -34
  275. package/dist/cli-bundle/chunks/register-list-query-EEF33SUJ.js.map +1 -0
  276. package/dist/cli-bundle/chunks/{register-list-query-OEYQHFXO.js → register-list-query-S4FBWIWN.js} +42 -33
  277. package/dist/cli-bundle/chunks/register-list-query-S4FBWIWN.js.map +7 -0
  278. package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js → register-mutation-L5Q7AUDN.js} +34 -39
  279. package/dist/cli-bundle/chunks/{register-mutation-3QXIHCQG.js.map → register-mutation-L5Q7AUDN.js.map} +1 -1
  280. package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js → register-mutation-QFLRBCI7.js} +36 -41
  281. package/dist/cli-bundle/chunks/{register-mutation-IAEST26S.js.map → register-mutation-QFLRBCI7.js.map} +1 -1
  282. package/dist/cli-bundle/chunks/{chunk-5BMM6XQY.js → register-operations-HDE4FVW4.js} +79 -46
  283. package/dist/cli-bundle/chunks/register-operations-HDE4FVW4.js.map +1 -0
  284. package/dist/cli-bundle/chunks/{chunk-Z3U3U5KD.js → register-operations-QDU43FCG.js} +78 -45
  285. package/dist/cli-bundle/chunks/register-operations-QDU43FCG.js.map +7 -0
  286. package/dist/cli-bundle/chunks/{register-setup-Q6KFNIOZ.js → register-setup-EGMTAXDC.js} +134 -32
  287. package/dist/cli-bundle/chunks/register-setup-EGMTAXDC.js.map +1 -0
  288. package/dist/cli-bundle/chunks/{register-setup-3ZVVX2VN.js → register-setup-PNIO3L2P.js} +133 -31
  289. package/dist/cli-bundle/chunks/register-setup-PNIO3L2P.js.map +7 -0
  290. package/dist/cli-bundle/chunks/{restore-5RQHAPMA.js → restore-BTBEZ5CK.js} +7 -11
  291. package/dist/cli-bundle/chunks/restore-EX4UUZL6.js +15 -0
  292. package/dist/cli-bundle/chunks/{schema-HBORFC6B.js → schema-DGSTYYQB.js} +6 -10
  293. package/dist/cli-bundle/chunks/{schema-245WW4G2.js → schema-HAIBEE24.js} +6 -10
  294. package/dist/cli-bundle/chunks/update-MP4XLU56.js +25 -0
  295. package/dist/cli-bundle/chunks/update-SDIRJGSY.js +21 -0
  296. package/dist/cli-bundle/chunks/update-many-34AIU6W7.js +31 -0
  297. package/dist/cli-bundle/chunks/update-many-JUPCNOKV.js +35 -0
  298. package/dist/cli-bundle/main.js +56 -32
  299. package/dist/cli-bundle/main.js.map +2 -2
  300. package/dist/cli-bundle/sdk-runtime.js +161 -107
  301. package/dist/cli-bundle/sdk-testing.js +7 -8
  302. package/dist/cli-bundle/sdk.js +154 -117
  303. package/dist/cli-bundle/sdk.js.map +2 -2
  304. package/dist/core/extensions/extension-types.d.ts +1 -0
  305. package/dist/core/extensions/extension-types.js +2 -2
  306. package/dist/core/extensions/extension-types.js.map +1 -1
  307. package/dist/core/extensions/loader.js +268 -231
  308. package/dist/core/extensions/loader.js.map +1 -1
  309. package/dist/core/history/drift-scan.js +3 -8
  310. package/dist/core/history/drift-scan.js.map +1 -1
  311. package/dist/core/output/mutation-projection.js +11 -5
  312. package/dist/core/output/mutation-projection.js.map +1 -1
  313. package/dist/core/search/cache.js +3 -3
  314. package/dist/core/search/cache.js.map +1 -1
  315. package/dist/core/search/semantic-defaults.d.ts +2 -0
  316. package/dist/core/search/semantic-defaults.js +11 -4
  317. package/dist/core/search/semantic-defaults.js.map +1 -1
  318. package/dist/core/search/vector-stores.d.ts +1 -1
  319. package/dist/core/search/vector-stores.js +33 -7
  320. package/dist/core/search/vector-stores.js.map +1 -1
  321. package/dist/mcp/server.d.ts +1 -1
  322. package/dist/sdk/cli-contracts/commander-types.js +3 -3
  323. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  324. package/dist/sdk/cli-contracts/flag-contracts.js +12 -8
  325. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  326. package/dist/sdk/cli-contracts/tool-parameter-tables.js +10 -2
  327. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  328. package/dist/sdk/cli-contracts/tool-schema.js +14 -8
  329. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  330. package/dist/sdk/index.d.ts +1 -1
  331. package/dist/sdk/index.js +3 -3
  332. package/dist/sdk/index.js.map +1 -1
  333. package/dist/sdk/runtime.d.ts +282 -8
  334. package/dist/sdk/runtime.js +453 -14
  335. package/dist/sdk/runtime.js.map +1 -1
  336. package/dist/sdk/start-task-status.d.ts +13 -0
  337. package/dist/sdk/start-task-status.js +19 -0
  338. package/dist/sdk/start-task-status.js.map +1 -0
  339. package/docs/COMMANDS.md +10 -1
  340. package/docs/EXTENSIONS.md +7 -20
  341. package/docs/RELEASING.md +6 -0
  342. package/docs/SDK.md +65 -0
  343. package/docs/TESTING.md +3 -0
  344. package/package.json +2 -1
  345. package/dist/cli-bundle/chunks/activity-WJCGCYPU.js +0 -18
  346. package/dist/cli-bundle/chunks/activity-Z6QUAUSG.js +0 -22
  347. package/dist/cli-bundle/chunks/aggregate-BDM6EIAR.js +0 -25
  348. package/dist/cli-bundle/chunks/aggregate-VQ2DHU3S.js +0 -21
  349. package/dist/cli-bundle/chunks/append-RKJYPU74.js +0 -15
  350. package/dist/cli-bundle/chunks/chunk-2XG4IZON.js +0 -218
  351. package/dist/cli-bundle/chunks/chunk-2XG4IZON.js.map +0 -7
  352. package/dist/cli-bundle/chunks/chunk-37E72CNS.js +0 -217
  353. package/dist/cli-bundle/chunks/chunk-37E72CNS.js.map +0 -1
  354. package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js +0 -228
  355. package/dist/cli-bundle/chunks/chunk-3GCS5SKL.js.map +0 -1
  356. package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js +0 -2330
  357. package/dist/cli-bundle/chunks/chunk-3KTN6IBA.js.map +0 -7
  358. package/dist/cli-bundle/chunks/chunk-3VHSI5FL.js.map +0 -1
  359. package/dist/cli-bundle/chunks/chunk-425E4QL5.js +0 -278
  360. package/dist/cli-bundle/chunks/chunk-425E4QL5.js.map +0 -7
  361. package/dist/cli-bundle/chunks/chunk-46CUF5L6.js.map +0 -7
  362. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +0 -87
  363. package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +0 -7
  364. package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js +0 -249
  365. package/dist/cli-bundle/chunks/chunk-4HIFVN7N.js.map +0 -7
  366. package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js +0 -819
  367. package/dist/cli-bundle/chunks/chunk-4IWYTWGF.js.map +0 -1
  368. package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js +0 -279
  369. package/dist/cli-bundle/chunks/chunk-4MZVRJOE.js.map +0 -1
  370. package/dist/cli-bundle/chunks/chunk-57NWPFF2.js.map +0 -1
  371. package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js +0 -268
  372. package/dist/cli-bundle/chunks/chunk-5AJXHQM7.js.map +0 -1
  373. package/dist/cli-bundle/chunks/chunk-5BMM6XQY.js.map +0 -1
  374. package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js +0 -1868
  375. package/dist/cli-bundle/chunks/chunk-5GZ7TDD6.js.map +0 -7
  376. package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js +0 -1749
  377. package/dist/cli-bundle/chunks/chunk-5VAA4YHR.js.map +0 -7
  378. package/dist/cli-bundle/chunks/chunk-64YKRTSV.js +0 -1961
  379. package/dist/cli-bundle/chunks/chunk-64YKRTSV.js.map +0 -1
  380. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +0 -23
  381. package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +0 -7
  382. package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js +0 -421
  383. package/dist/cli-bundle/chunks/chunk-B7FRNMYN.js.map +0 -1
  384. package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js +0 -1985
  385. package/dist/cli-bundle/chunks/chunk-C5JBZRPU.js.map +0 -7
  386. package/dist/cli-bundle/chunks/chunk-CL36D4PC.js.map +0 -7
  387. package/dist/cli-bundle/chunks/chunk-COSPOP7H.js.map +0 -7
  388. package/dist/cli-bundle/chunks/chunk-COWTDV6B.js +0 -3461
  389. package/dist/cli-bundle/chunks/chunk-COWTDV6B.js.map +0 -7
  390. package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js +0 -1858
  391. package/dist/cli-bundle/chunks/chunk-DEWEK6AN.js.map +0 -1
  392. package/dist/cli-bundle/chunks/chunk-DMRNBQOI.js.map +0 -1
  393. package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js +0 -1932
  394. package/dist/cli-bundle/chunks/chunk-E3SZTQ4K.js.map +0 -1
  395. package/dist/cli-bundle/chunks/chunk-EGAP5OWD.js.map +0 -1
  396. package/dist/cli-bundle/chunks/chunk-EKFNL33R.js.map +0 -1
  397. package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js +0 -1704
  398. package/dist/cli-bundle/chunks/chunk-ENGQOEUY.js.map +0 -1
  399. package/dist/cli-bundle/chunks/chunk-EOKXK3R3.js.map +0 -1
  400. package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js +0 -231
  401. package/dist/cli-bundle/chunks/chunk-FLZSGSQR.js.map +0 -7
  402. package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js +0 -2090
  403. package/dist/cli-bundle/chunks/chunk-FOUYJE4A.js.map +0 -1
  404. package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js +0 -1570
  405. package/dist/cli-bundle/chunks/chunk-G24G7ZAV.js.map +0 -1
  406. package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js +0 -239
  407. package/dist/cli-bundle/chunks/chunk-GEYZ4G4O.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js +0 -530
  409. package/dist/cli-bundle/chunks/chunk-GPLPTGOV.js.map +0 -7
  410. package/dist/cli-bundle/chunks/chunk-GZRDYONU.js +0 -1005
  411. package/dist/cli-bundle/chunks/chunk-GZRDYONU.js.map +0 -7
  412. package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js +0 -277
  413. package/dist/cli-bundle/chunks/chunk-HN6NSXNW.js.map +0 -7
  414. package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js +0 -309
  415. package/dist/cli-bundle/chunks/chunk-IQNVQHOP.js.map +0 -7
  416. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js +0 -371
  417. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +0 -7
  418. package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js +0 -2257
  419. package/dist/cli-bundle/chunks/chunk-JQXPY7DN.js.map +0 -7
  420. package/dist/cli-bundle/chunks/chunk-K46RF36U.js.map +0 -1
  421. package/dist/cli-bundle/chunks/chunk-KERMZVY5.js +0 -371
  422. package/dist/cli-bundle/chunks/chunk-KERMZVY5.js.map +0 -7
  423. package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js +0 -76
  424. package/dist/cli-bundle/chunks/chunk-KSRUHV2H.js.map +0 -1
  425. package/dist/cli-bundle/chunks/chunk-LK6XLOGP.js.map +0 -7
  426. package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js +0 -140
  427. package/dist/cli-bundle/chunks/chunk-LP3HSFZ2.js.map +0 -1
  428. package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js +0 -1601
  429. package/dist/cli-bundle/chunks/chunk-MAWDPCJW.js.map +0 -1
  430. package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js +0 -1031
  431. package/dist/cli-bundle/chunks/chunk-MFAZSEM5.js.map +0 -1
  432. package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js +0 -995
  433. package/dist/cli-bundle/chunks/chunk-MFSCBT5Q.js.map +0 -1
  434. package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js +0 -296
  435. package/dist/cli-bundle/chunks/chunk-ML5X7DP2.js.map +0 -1
  436. package/dist/cli-bundle/chunks/chunk-MLIYFOE7.js.map +0 -1
  437. package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js +0 -2043
  438. package/dist/cli-bundle/chunks/chunk-MR6FJ7LL.js.map +0 -7
  439. package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js +0 -2033
  440. package/dist/cli-bundle/chunks/chunk-MXYA5SAJ.js.map +0 -1
  441. package/dist/cli-bundle/chunks/chunk-N745W3B3.js +0 -1604
  442. package/dist/cli-bundle/chunks/chunk-N745W3B3.js.map +0 -7
  443. package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js +0 -1615
  444. package/dist/cli-bundle/chunks/chunk-NMP5I3I5.js.map +0 -7
  445. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +0 -20
  446. package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +0 -1
  447. package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js +0 -143
  448. package/dist/cli-bundle/chunks/chunk-PZUGEOPS.js.map +0 -7
  449. package/dist/cli-bundle/chunks/chunk-QLMX7SRD.js.map +0 -7
  450. package/dist/cli-bundle/chunks/chunk-QX6HM775.js +0 -398
  451. package/dist/cli-bundle/chunks/chunk-QX6HM775.js.map +0 -7
  452. package/dist/cli-bundle/chunks/chunk-QZ342C63.js +0 -220
  453. package/dist/cli-bundle/chunks/chunk-QZ342C63.js.map +0 -7
  454. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js +0 -368
  455. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +0 -1
  456. package/dist/cli-bundle/chunks/chunk-RFNYTESG.js +0 -520
  457. package/dist/cli-bundle/chunks/chunk-RFNYTESG.js.map +0 -1
  458. package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js +0 -79
  459. package/dist/cli-bundle/chunks/chunk-RKQOO2UM.js.map +0 -7
  460. package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js +0 -282
  461. package/dist/cli-bundle/chunks/chunk-RQLT6ZWB.js.map +0 -7
  462. package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js +0 -274
  463. package/dist/cli-bundle/chunks/chunk-S3JS6YVZ.js.map +0 -1
  464. package/dist/cli-bundle/chunks/chunk-SCUR7K7N.js.map +0 -7
  465. package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js +0 -1977
  466. package/dist/cli-bundle/chunks/chunk-SHQY2IDC.js.map +0 -7
  467. package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js +0 -1041
  468. package/dist/cli-bundle/chunks/chunk-SPZ6DOGY.js.map +0 -7
  469. package/dist/cli-bundle/chunks/chunk-T42JWV3F.js +0 -822
  470. package/dist/cli-bundle/chunks/chunk-T42JWV3F.js.map +0 -7
  471. package/dist/cli-bundle/chunks/chunk-TKD5VCTD.js.map +0 -1
  472. package/dist/cli-bundle/chunks/chunk-TULGS6X6.js.map +0 -1
  473. package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js +0 -2306
  474. package/dist/cli-bundle/chunks/chunk-TZXRBVAM.js.map +0 -1
  475. package/dist/cli-bundle/chunks/chunk-VIIUS6N6.js.map +0 -7
  476. package/dist/cli-bundle/chunks/chunk-VPIM42PC.js.map +0 -7
  477. package/dist/cli-bundle/chunks/chunk-VQRSPVME.js +0 -368
  478. package/dist/cli-bundle/chunks/chunk-VQRSPVME.js.map +0 -1
  479. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +0 -84
  480. package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +0 -1
  481. package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js +0 -3423
  482. package/dist/cli-bundle/chunks/chunk-WG34ZNQQ.js.map +0 -1
  483. package/dist/cli-bundle/chunks/chunk-WLSM645P.js +0 -2247
  484. package/dist/cli-bundle/chunks/chunk-WLSM645P.js.map +0 -1
  485. package/dist/cli-bundle/chunks/chunk-WRTENIX3.js +0 -215
  486. package/dist/cli-bundle/chunks/chunk-WRTENIX3.js.map +0 -1
  487. package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js +0 -388
  488. package/dist/cli-bundle/chunks/chunk-WSBLYDWV.js.map +0 -1
  489. package/dist/cli-bundle/chunks/chunk-XC5BURG2.js +0 -306
  490. package/dist/cli-bundle/chunks/chunk-XC5BURG2.js.map +0 -1
  491. package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js +0 -424
  492. package/dist/cli-bundle/chunks/chunk-XDB7RWQT.js.map +0 -7
  493. package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js +0 -2128
  494. package/dist/cli-bundle/chunks/chunk-Y6BK55A3.js.map +0 -7
  495. package/dist/cli-bundle/chunks/chunk-Z3U3U5KD.js.map +0 -7
  496. package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js +0 -299
  497. package/dist/cli-bundle/chunks/chunk-ZO3XKAOP.js.map +0 -7
  498. package/dist/cli-bundle/chunks/chunk-ZSUS2OD3.js.map +0 -7
  499. package/dist/cli-bundle/chunks/claim-RFS7BROJ.js +0 -19
  500. package/dist/cli-bundle/chunks/claim-XP5AWZ5H.js +0 -23
  501. package/dist/cli-bundle/chunks/close-GEANHQ2J.js +0 -16
  502. package/dist/cli-bundle/chunks/close-many-CMZW7ITN.js +0 -31
  503. package/dist/cli-bundle/chunks/close-many-ZFDIG6M7.js +0 -27
  504. package/dist/cli-bundle/chunks/comments-MFSYVNNU.js +0 -21
  505. package/dist/cli-bundle/chunks/comments-XUBPXDYX.js +0 -17
  506. package/dist/cli-bundle/chunks/config-D7XQMONX.js +0 -18
  507. package/dist/cli-bundle/chunks/config-T4FHBSYN.js +0 -22
  508. package/dist/cli-bundle/chunks/context-DIU275XI.js +0 -48
  509. package/dist/cli-bundle/chunks/context-JCOYB4LZ.js +0 -44
  510. package/dist/cli-bundle/chunks/contracts-BVO7CSLK.js +0 -12
  511. package/dist/cli-bundle/chunks/copy-NAGLGMHZ.js +0 -13
  512. package/dist/cli-bundle/chunks/create-4V7SWNBB.js +0 -30
  513. package/dist/cli-bundle/chunks/delete-NQI5OSKN.js +0 -14
  514. package/dist/cli-bundle/chunks/deps-T7SCWXEX.js +0 -17
  515. package/dist/cli-bundle/chunks/docs-WL2IWGWV.js +0 -18
  516. package/dist/cli-bundle/chunks/eval-NF2J5SHR.js +0 -23
  517. package/dist/cli-bundle/chunks/eval-SKDT3MZU.js +0 -27
  518. package/dist/cli-bundle/chunks/extension-LAXKCAYE.js +0 -42
  519. package/dist/cli-bundle/chunks/extension-ZISPBRBC.js +0 -38
  520. package/dist/cli-bundle/chunks/files-EWRQHGIS.js +0 -22
  521. package/dist/cli-bundle/chunks/focus-4T7TM4MT.js +0 -18
  522. package/dist/cli-bundle/chunks/focus-L3YUASOD.js +0 -14
  523. package/dist/cli-bundle/chunks/gc-2PCTYYRI.js +0 -12
  524. package/dist/cli-bundle/chunks/get-7DMITJ3G.js +0 -23
  525. package/dist/cli-bundle/chunks/get-VKQXCXLL.js +0 -19
  526. package/dist/cli-bundle/chunks/health-CVSTAR2F.js +0 -31
  527. package/dist/cli-bundle/chunks/health-TV3GKTFN.js +0 -35
  528. package/dist/cli-bundle/chunks/history-D4JUX5XV.js +0 -20
  529. package/dist/cli-bundle/chunks/history-D4JUX5XV.js.map +0 -7
  530. package/dist/cli-bundle/chunks/history-LQ2UWZTE.js +0 -24
  531. package/dist/cli-bundle/chunks/history-LQ2UWZTE.js.map +0 -1
  532. package/dist/cli-bundle/chunks/history-compact-3MNXLKAT.js.map +0 -1
  533. package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js +0 -25
  534. package/dist/cli-bundle/chunks/history-compact-QWEO32FP.js.map +0 -7
  535. package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js +0 -21
  536. package/dist/cli-bundle/chunks/history-redact-3OIVBVIY.js.map +0 -7
  537. package/dist/cli-bundle/chunks/history-redact-P6DYF55G.js.map +0 -1
  538. package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js +0 -23
  539. package/dist/cli-bundle/chunks/history-repair-I3E73UGQ.js.map +0 -7
  540. package/dist/cli-bundle/chunks/history-repair-ZJQFMWPD.js.map +0 -1
  541. package/dist/cli-bundle/chunks/init-C3LJPWQZ.js +0 -30
  542. package/dist/cli-bundle/chunks/init-C3LJPWQZ.js.map +0 -1
  543. package/dist/cli-bundle/chunks/init-J3DPGWQI.js +0 -26
  544. package/dist/cli-bundle/chunks/init-J3DPGWQI.js.map +0 -7
  545. package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js +0 -21
  546. package/dist/cli-bundle/chunks/learnings-5BO2SNDW.js.map +0 -1
  547. package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js +0 -17
  548. package/dist/cli-bundle/chunks/learnings-OGP4JB4I.js.map +0 -7
  549. package/dist/cli-bundle/chunks/list-O5NZVSPN.js +0 -36
  550. package/dist/cli-bundle/chunks/list-O5NZVSPN.js.map +0 -1
  551. package/dist/cli-bundle/chunks/list-Z55YCNTC.js +0 -32
  552. package/dist/cli-bundle/chunks/list-Z55YCNTC.js.map +0 -7
  553. package/dist/cli-bundle/chunks/next-GBNTGXFC.js +0 -28
  554. package/dist/cli-bundle/chunks/next-GBNTGXFC.js.map +0 -7
  555. package/dist/cli-bundle/chunks/next-QKW7PTKE.js +0 -32
  556. package/dist/cli-bundle/chunks/next-QKW7PTKE.js.map +0 -1
  557. package/dist/cli-bundle/chunks/notes-R5FZTKWF.js +0 -17
  558. package/dist/cli-bundle/chunks/notes-R5FZTKWF.js.map +0 -7
  559. package/dist/cli-bundle/chunks/notes-WCGIULVG.js +0 -21
  560. package/dist/cli-bundle/chunks/notes-WCGIULVG.js.map +0 -1
  561. package/dist/cli-bundle/chunks/plan-ADISFYH4.js +0 -29
  562. package/dist/cli-bundle/chunks/plan-ADISFYH4.js.map +0 -7
  563. package/dist/cli-bundle/chunks/plan-CHVE7PBR.js.map +0 -1
  564. package/dist/cli-bundle/chunks/profile-LD23PSI6.js.map +0 -7
  565. package/dist/cli-bundle/chunks/profile-ZXGSKBJD.js.map +0 -1
  566. package/dist/cli-bundle/chunks/register-list-query-B42JCCOI.js.map +0 -1
  567. package/dist/cli-bundle/chunks/register-list-query-OEYQHFXO.js.map +0 -7
  568. package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js +0 -19
  569. package/dist/cli-bundle/chunks/register-operations-I3M3U7DS.js.map +0 -7
  570. package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js +0 -23
  571. package/dist/cli-bundle/chunks/register-operations-UHKENLZV.js.map +0 -1
  572. package/dist/cli-bundle/chunks/register-setup-3ZVVX2VN.js.map +0 -7
  573. package/dist/cli-bundle/chunks/register-setup-Q6KFNIOZ.js.map +0 -1
  574. package/dist/cli-bundle/chunks/restore-5RQHAPMA.js.map +0 -1
  575. package/dist/cli-bundle/chunks/restore-PNEIBBLW.js +0 -19
  576. package/dist/cli-bundle/chunks/restore-PNEIBBLW.js.map +0 -7
  577. package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js +0 -29
  578. package/dist/cli-bundle/chunks/scheduling-shortcuts-4G56YHVQ.js.map +0 -1
  579. package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js +0 -25
  580. package/dist/cli-bundle/chunks/scheduling-shortcuts-75DULBYP.js.map +0 -7
  581. package/dist/cli-bundle/chunks/schema-245WW4G2.js.map +0 -1
  582. package/dist/cli-bundle/chunks/schema-HBORFC6B.js.map +0 -7
  583. package/dist/cli-bundle/chunks/search-AOZC5SIK.js +0 -34
  584. package/dist/cli-bundle/chunks/search-AOZC5SIK.js.map +0 -7
  585. package/dist/cli-bundle/chunks/search-DRXPGHD7.js +0 -38
  586. package/dist/cli-bundle/chunks/search-DRXPGHD7.js.map +0 -1
  587. package/dist/cli-bundle/chunks/stats-NJG4NLHG.js +0 -21
  588. package/dist/cli-bundle/chunks/stats-NJG4NLHG.js.map +0 -1
  589. package/dist/cli-bundle/chunks/stats-RG6AG4N2.js +0 -17
  590. package/dist/cli-bundle/chunks/stats-RG6AG4N2.js.map +0 -7
  591. package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js +0 -14
  592. package/dist/cli-bundle/chunks/telemetry-HQC2JJIF.js.map +0 -7
  593. package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js +0 -18
  594. package/dist/cli-bundle/chunks/telemetry-MPNL3HHY.js.map +0 -1
  595. package/dist/cli-bundle/chunks/test-6CMOCWUC.js +0 -39
  596. package/dist/cli-bundle/chunks/test-6CMOCWUC.js.map +0 -7
  597. package/dist/cli-bundle/chunks/test-RI7XHBZL.js +0 -43
  598. package/dist/cli-bundle/chunks/test-RI7XHBZL.js.map +0 -1
  599. package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js +0 -29
  600. package/dist/cli-bundle/chunks/test-all-7R7YRZIA.js.map +0 -7
  601. package/dist/cli-bundle/chunks/test-all-QEIORFYW.js +0 -33
  602. package/dist/cli-bundle/chunks/test-all-QEIORFYW.js.map +0 -1
  603. package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js +0 -28
  604. package/dist/cli-bundle/chunks/test-runs-5Y2BOU2S.js.map +0 -1
  605. package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js +0 -24
  606. package/dist/cli-bundle/chunks/test-runs-PVGC3GRZ.js.map +0 -7
  607. package/dist/cli-bundle/chunks/update-QVJDFEAP.js +0 -30
  608. package/dist/cli-bundle/chunks/update-QVJDFEAP.js.map +0 -1
  609. package/dist/cli-bundle/chunks/update-VQVHAY6X.js +0 -26
  610. package/dist/cli-bundle/chunks/update-VQVHAY6X.js.map +0 -7
  611. package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js +0 -37
  612. package/dist/cli-bundle/chunks/update-many-S7XWBSB3.js.map +0 -7
  613. package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js +0 -41
  614. package/dist/cli-bundle/chunks/update-many-YIYW6XQ6.js.map +0 -1
  615. package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js +0 -24
  616. package/dist/cli-bundle/chunks/upgrade-OPRXA56R.js.map +0 -7
  617. package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js +0 -28
  618. package/dist/cli-bundle/chunks/upgrade-WH4BTQLX.js.map +0 -1
  619. package/dist/cli-bundle/chunks/validate-4NTXSB62.js +0 -36
  620. package/dist/cli-bundle/chunks/validate-4NTXSB62.js.map +0 -1
  621. package/dist/cli-bundle/chunks/validate-MUFXQZMI.js +0 -32
  622. package/dist/cli-bundle/chunks/validate-MUFXQZMI.js.map +0 -7
  623. /package/dist/cli-bundle/chunks/{activity-WJCGCYPU.js.map → append-CDPAYYSB.js.map} +0 -0
  624. /package/dist/cli-bundle/chunks/{activity-Z6QUAUSG.js.map → append-RSPHC423.js.map} +0 -0
  625. /package/dist/cli-bundle/chunks/{chunk-24YG75HI.js.map → chunk-3FUXM574.js.map} +0 -0
  626. /package/dist/cli-bundle/chunks/{chunk-IWVU4C2F.js.map → chunk-3SHDAKMF.js.map} +0 -0
  627. /package/dist/cli-bundle/chunks/{chunk-MUH7A3FD.js.map → chunk-3V5C7PUH.js.map} +0 -0
  628. /package/dist/cli-bundle/chunks/{chunk-EGY6JBQ3.js.map → chunk-4I7KS5ES.js.map} +0 -0
  629. /package/dist/cli-bundle/chunks/{chunk-GJ7QC5DJ.js.map → chunk-5STY7NVM.js.map} +0 -0
  630. /package/dist/cli-bundle/chunks/{chunk-JJP45OEI.js.map → chunk-5VAZHYVQ.js.map} +0 -0
  631. /package/dist/cli-bundle/chunks/{chunk-22KBU3MW.js.map → chunk-6RR4XM5H.js.map} +0 -0
  632. /package/dist/cli-bundle/chunks/{chunk-KUOOJR35.js.map → chunk-7QKSLAHB.js.map} +0 -0
  633. /package/dist/cli-bundle/chunks/{chunk-NGXQ3PFT.js.map → chunk-7UCBLJDF.js.map} +0 -0
  634. /package/dist/cli-bundle/chunks/{chunk-7DT4WSH2.js.map → chunk-BFNFTHWQ.js.map} +0 -0
  635. /package/dist/cli-bundle/chunks/{chunk-Y46GD4IX.js.map → chunk-C3YU3TXX.js.map} +0 -0
  636. /package/dist/cli-bundle/chunks/{chunk-AZYGZGGI.js.map → chunk-CGDUIPJL.js.map} +0 -0
  637. /package/dist/cli-bundle/chunks/{chunk-XG625QP4.js.map → chunk-EP2CKDS7.js.map} +0 -0
  638. /package/dist/cli-bundle/chunks/{chunk-MVYWGY2A.js.map → chunk-J6AD3GWC.js.map} +0 -0
  639. /package/dist/cli-bundle/chunks/{chunk-R5BMJX33.js.map → chunk-KFL3XHMA.js.map} +0 -0
  640. /package/dist/cli-bundle/chunks/{chunk-MWMVPCIE.js.map → chunk-PCBZ2VJD.js.map} +0 -0
  641. /package/dist/cli-bundle/chunks/{chunk-B6DUFX6H.js.map → chunk-Q3CFSOQZ.js.map} +0 -0
  642. /package/dist/cli-bundle/chunks/{chunk-KGFUY7WN.js.map → chunk-TU5P744I.js.map} +0 -0
  643. /package/dist/cli-bundle/chunks/{chunk-JDDLOQAE.js.map → chunk-UEATYUZW.js.map} +0 -0
  644. /package/dist/cli-bundle/chunks/{chunk-JVH7QBVV.js.map → chunk-UFNFHCAC.js.map} +0 -0
  645. /package/dist/cli-bundle/chunks/{chunk-AGHMOTGM.js.map → chunk-Z2JQH2MG.js.map} +0 -0
  646. /package/dist/cli-bundle/chunks/{chunk-Y4M7CPQP.js.map → chunk-ZMOPZFVT.js.map} +0 -0
  647. /package/dist/cli-bundle/chunks/{aggregate-VQ2DHU3S.js.map → close-E3RLZSP2.js.map} +0 -0
  648. /package/dist/cli-bundle/chunks/{aggregate-BDM6EIAR.js.map → close-K6BFI3OX.js.map} +0 -0
  649. /package/dist/cli-bundle/chunks/{append-BGML6VLD.js.map → close-many-6NBL3PM4.js.map} +0 -0
  650. /package/dist/cli-bundle/chunks/{append-RKJYPU74.js.map → close-many-X4YKS3RO.js.map} +0 -0
  651. /package/dist/cli-bundle/chunks/{claim-XP5AWZ5H.js.map → comments-PLFK5ZKK.js.map} +0 -0
  652. /package/dist/cli-bundle/chunks/{claim-RFS7BROJ.js.map → comments-ZNOD5PTV.js.map} +0 -0
  653. /package/dist/cli-bundle/chunks/{close-GEANHQ2J.js.map → copy-F7BUFY4J.js.map} +0 -0
  654. /package/dist/cli-bundle/chunks/{close-2SSSHHUZ.js.map → copy-VH3L4MN2.js.map} +0 -0
  655. /package/dist/cli-bundle/chunks/{close-many-ZFDIG6M7.js.map → create-AMBMYP6F.js.map} +0 -0
  656. /package/dist/cli-bundle/chunks/{close-many-CMZW7ITN.js.map → create-TRIBYORN.js.map} +0 -0
  657. /package/dist/cli-bundle/chunks/{comments-XUBPXDYX.js.map → delete-6KQHZYIP.js.map} +0 -0
  658. /package/dist/cli-bundle/chunks/{comments-MFSYVNNU.js.map → delete-ZNXUNCZR.js.map} +0 -0
  659. /package/dist/cli-bundle/chunks/{config-D7XQMONX.js.map → deps-CVDY7FFK.js.map} +0 -0
  660. /package/dist/cli-bundle/chunks/{config-T4FHBSYN.js.map → deps-SZXQHV73.js.map} +0 -0
  661. /package/dist/cli-bundle/chunks/{context-DIU275XI.js.map → docs-DR74ITCD.js.map} +0 -0
  662. /package/dist/cli-bundle/chunks/{context-JCOYB4LZ.js.map → docs-WCVYY6I7.js.map} +0 -0
  663. /package/dist/cli-bundle/chunks/{contracts-BVO7CSLK.js.map → files-H5YCA74Z.js.map} +0 -0
  664. /package/dist/cli-bundle/chunks/{contracts-NYPEW2G4.js.map → files-QEFQ2M3H.js.map} +0 -0
  665. /package/dist/cli-bundle/chunks/{copy-32ROBIDL.js.map → focus-55TRYSNA.js.map} +0 -0
  666. /package/dist/cli-bundle/chunks/{copy-NAGLGMHZ.js.map → focus-N2QGNS5D.js.map} +0 -0
  667. /package/dist/cli-bundle/chunks/{create-4V7SWNBB.js.map → history-compact-GWQ4UOEI.js.map} +0 -0
  668. /package/dist/cli-bundle/chunks/{create-E77SDCUP.js.map → history-compact-JJZ4EFL3.js.map} +0 -0
  669. /package/dist/cli-bundle/chunks/{delete-NQI5OSKN.js.map → history-redact-4GJOLXCM.js.map} +0 -0
  670. /package/dist/cli-bundle/chunks/{delete-RA5KTCLB.js.map → history-redact-TPPUT3A5.js.map} +0 -0
  671. /package/dist/cli-bundle/chunks/{deps-T7SCWXEX.js.map → history-repair-HVCVCGUF.js.map} +0 -0
  672. /package/dist/cli-bundle/chunks/{deps-32SU7HO5.js.map → history-repair-J7PIZ6ZP.js.map} +0 -0
  673. /package/dist/cli-bundle/chunks/{docs-RRUPT7O2.js.map → learnings-KB6BT4NR.js.map} +0 -0
  674. /package/dist/cli-bundle/chunks/{docs-WL2IWGWV.js.map → learnings-YYY3U2Y7.js.map} +0 -0
  675. /package/dist/cli-bundle/chunks/{eval-NF2J5SHR.js.map → notes-BGG7VL72.js.map} +0 -0
  676. /package/dist/cli-bundle/chunks/{eval-SKDT3MZU.js.map → notes-ZTHXVOKM.js.map} +0 -0
  677. /package/dist/cli-bundle/chunks/{extension-LAXKCAYE.js.map → plan-CJPKFRBK.js.map} +0 -0
  678. /package/dist/cli-bundle/chunks/{extension-ZISPBRBC.js.map → plan-MK2QY3GA.js.map} +0 -0
  679. /package/dist/cli-bundle/chunks/{files-PYKR2UUG.js.map → profile-AQNHXOYA.js.map} +0 -0
  680. /package/dist/cli-bundle/chunks/{files-EWRQHGIS.js.map → profile-HTBFINKQ.js.map} +0 -0
  681. /package/dist/cli-bundle/chunks/{focus-4T7TM4MT.js.map → restore-BTBEZ5CK.js.map} +0 -0
  682. /package/dist/cli-bundle/chunks/{focus-L3YUASOD.js.map → restore-EX4UUZL6.js.map} +0 -0
  683. /package/dist/cli-bundle/chunks/{gc-2PCTYYRI.js.map → schema-DGSTYYQB.js.map} +0 -0
  684. /package/dist/cli-bundle/chunks/{gc-2DNMPXMC.js.map → schema-HAIBEE24.js.map} +0 -0
  685. /package/dist/cli-bundle/chunks/{get-7DMITJ3G.js.map → update-MP4XLU56.js.map} +0 -0
  686. /package/dist/cli-bundle/chunks/{get-VKQXCXLL.js.map → update-SDIRJGSY.js.map} +0 -0
  687. /package/dist/cli-bundle/chunks/{health-CVSTAR2F.js.map → update-many-34AIU6W7.js.map} +0 -0
  688. /package/dist/cli-bundle/chunks/{health-TV3GKTFN.js.map → update-many-JUPCNOKV.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sources":["cli/commands/health.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/health\n *\n * Implements the pm health command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { activateExtensions, getActiveExtensionRegistrations, loadExtensions, runActiveOnReadHooks } from \"../../core/extensions/index.js\";\nimport { collectRegisteredItemFieldNames } from \"../../core/extensions/item-fields.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n type LoadedExtension,\n} from \"../../core/extensions/loader.js\";\nimport { enforceHistoryStreamPolicyForItems } from \"../../core/history/history-stream-policy.js\";\nimport { scanHistoryDrift } from \"../../core/history/drift-scan.js\";\nimport { scanLockHealth } from \"../../core/lock/lock-gc.js\";\nimport {\n readVectorizationStatusLedger,\n refreshSemanticEmbeddingsForMutatedItems,\n} from \"../../core/search/cache.js\";\nimport { resolveEmbeddingProviders, resolveProviderConfigSource } from \"../../core/search/providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"../../core/search/semantic-defaults.js\";\nimport { collectStaleVectorizationIds } from \"../../core/search/staleness.js\";\nimport {\n buildVectorizationEmbeddingIdentity,\n hasVectorizationEmbeddingIdentityChanged,\n} from \"../../core/search/vectorization-metadata.js\";\nimport { resolveVectorStores } from \"../../core/search/vector-stores.js\";\nimport { EXIT_CODE, PM_CORE_REQUIRED_SUBDIRS, PM_OPTIONAL_TYPE_SUBDIRS } from \"../../core/shared/constants.js\";\nimport { findFirstMergeConflictMarker } from \"../../core/shared/conflict-markers.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toNonEmptyStringOrUndefined } from \"../../core/shared/primitives.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { parseItemDocument } from \"../../core/item/item-format.js\";\nimport { effectiveItemFormatVersion, scanItemFormatVersions } from \"../../core/item/item-format-version.js\";\nimport { listAllFrontMatter, listAllFrontMatterWithBody } from \"../../core/store/item-store.js\";\nimport {\n PM_TELEMETRY_SOURCE_CONTEXT_VALUES,\n TELEMETRY_MAX_QUEUE_ENTRY_ATTEMPTS,\n TELEMETRY_SCHEMA_VERSION,\n} from \"../../core/telemetry/runtime.js\";\n\nconst PM_TELEMETRY_SOURCE_CONTEXT_SET = new Set<string>(PM_TELEMETRY_SOURCE_CONTEXT_VALUES);\nimport {\n getItemFormatFromPath,\n getSettingsPath,\n ITEM_FILE_EXTENSIONS,\n resolveGlobalPmRoot,\n resolvePmRoot,\n} from \"../../core/store/paths.js\";\nimport { readSettingsWithMetadata } from \"../../core/store/settings.js\";\nimport { buildRemediationMap } from \"../../core/diagnostics/remediation.js\";\nimport type { HistoryCompactPolicy, ItemFormat, ItemMetadata, PmSettings } from \"../../types/index.js\";\nimport { readManagedExtensionState } from \"./extension.js\";\nimport {\n buildCapabilityContractMetadata,\n buildRegistrationCollisionRemediation,\n collectUnknownCapabilityGuidance,\n} from \"./extension/doctor.js\";\n\ntype HealthStatus = \"ok\" | \"warn\";\ntype MigrationRuntimeStatus = \"pending\" | \"failed\" | \"applied\";\n\n/**\n * Documents the health check payload exchanged by command, SDK, and package integrations.\n */\nexport interface HealthCheck {\n name:\n | \"settings\"\n | \"directories\"\n | \"settings_values\"\n | \"telemetry\"\n | \"extensions\"\n | \"storage\"\n | \"locks\"\n | \"integrity\"\n | \"history_drift\"\n | \"vectorization\";\n status: HealthStatus;\n details: Record<string, unknown>;\n}\n\n/**\n * Documents the health result payload exchanged by command, SDK, and package integrations.\n */\nexport interface HealthResult {\n ok: boolean;\n checks: HealthCheck[];\n warning_count?: number;\n warnings: string[];\n projection?: {\n mode: \"brief\" | \"summary\" | \"full\";\n warning_count: number;\n warnings_truncated: boolean;\n detail_limit: number;\n omitted_checks?: HealthCheck[\"name\"][];\n };\n generated_at: string;\n}\n\n/**\n * Documents the run health options payload exchanged by command, SDK, and package integrations.\n */\nexport interface RunHealthOptions {\n strictDirectories?: boolean;\n checkOnly?: boolean;\n checkTelemetry?: boolean;\n noRefresh?: boolean;\n refreshVectors?: boolean;\n verboseStaleItems?: boolean;\n skipVectors?: boolean;\n skipIntegrity?: boolean;\n skipDrift?: boolean;\n full?: boolean;\n brief?: boolean;\n summary?: boolean;\n}\n\ninterface VectorRefreshPolicy {\n enabled: boolean;\n checkOnly: boolean;\n noRefresh: boolean;\n refreshVectors: boolean;\n}\n\ninterface MigrationStatusEntry {\n layer: \"global\" | \"project\";\n name: string;\n id: string;\n status: MigrationRuntimeStatus;\n reason?: string;\n}\n\ninterface MigrationStatusSummary {\n applied: MigrationStatusEntry[];\n pending: MigrationStatusEntry[];\n failed: MigrationStatusEntry[];\n applied_count: number;\n pending_count: number;\n failed_count: number;\n}\n\ninterface ExtensionHealthTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n load_failure_count: number;\n activation_failure_count: number;\n migration_failed_count: number;\n migration_pending_count: number;\n managed_state_warning_count: number;\n managed_extension_entries_count: number;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unknown_capability_count: number;\n top_warnings: string[];\n remediation: string[];\n}\n\ntype ItemWithBody = Awaited<ReturnType<typeof listAllFrontMatterWithBody>>[number];\nconst STALE_VECTORIZATION_SUMMARY_LIMIT = 25;\nconst BRIEF_HEALTH_DETAIL_LIMIT = 8;\nconst TELEMETRY_QUEUE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"events.jsonl\");\nconst TELEMETRY_STATE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"state.json\");\nconst TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS = 2_500;\nconst TELEMETRY_QUEUE_HIGH_WATER_MARK = 500;\nconst TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD = TELEMETRY_MAX_QUEUE_ENTRY_ATTEMPTS - 3;\nconst TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS = [\n \"x-pm-telemetry-max-schema-version\",\n \"x-pm-telemetry-max-version\",\n] as const;\n\n/**\n * Advisory warnings are surfaced for visibility but never flip overall health to\n * not-ok. Telemetry is opt-out, non-critical observability: a queued/unreachable\n * telemetry endpoint or corrupt local telemetry state is not a project-health\n * failure and must not block agents that gate on `pm health` `ok`. History\n * over-compaction-threshold warnings are likewise advisory maintenance hints —\n * a deep stream is healthy, just a candidate for `pm history-compact`.\n */\nfunction isAdvisoryHealthWarning(warning: string): boolean {\n return warning.startsWith(\"telemetry_\") || warning.startsWith(\"history_stream_over_compact_threshold:\");\n}\n\nfunction warningCode(value: string): string {\n const normalized = value.trim();\n const separator = normalized.indexOf(\":\");\n if (separator === -1) {\n return normalized;\n }\n return normalized.slice(0, separator);\n}\n\nfunction normalizeExtensionNameForMatch(value: string): string {\n return value.trim().toLowerCase();\n}\n\nfunction isExpectedUnmanagedExtension(name: string, directory: string): boolean {\n const normalizedName = normalizeExtensionNameForMatch(name);\n const normalizedDirectory = normalizeExtensionNameForMatch(directory);\n if (normalizedName.startsWith(\"builtin-\")) {\n return true;\n }\n return normalizedDirectory === \"beads\" || normalizedDirectory === \"todos\";\n}\n\nasync function isDirectory(targetPath: string): Promise<boolean> {\n try {\n const stats = await fs.stat(targetPath);\n return stats.isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Summary of the history-stream directory used by the storage health check.\n * `over_threshold` is populated only when the compaction policy is enabled —\n * counting entries requires reading every stream, so the default (policy-off)\n * path stays a cheap directory listing.\n */\ninterface HistoryStreamSummary {\n count: number;\n warnings: string[];\n over_threshold: string[];\n max_entries: number | null;\n}\n\nasync function countHistoryStreams(\n pmRoot: string,\n compactPolicy: HistoryCompactPolicy,\n): Promise<HistoryStreamSummary> {\n const historyDir = path.join(pmRoot, \"history\");\n if (!(await isDirectory(historyDir))) {\n return { count: 0, warnings: [], over_threshold: [], max_entries: null };\n }\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((left, right) => left.localeCompare(right));\n\n const policyActive = compactPolicy.enabled;\n const maxEntries = policyActive ? compactPolicy.max_entries : null;\n const warnings: string[] = [];\n const overThreshold: string[] = [];\n for (const fileName of historyFiles) {\n const streamPath = path.join(historyDir, fileName);\n warnings.push(...(await runActiveOnReadHooks({ path: streamPath, scope: \"project\" })));\n if (!policyActive) {\n continue;\n }\n const raw = await fs.readFile(streamPath, \"utf8\");\n let entries = 0;\n for (const line of raw.split(/\\r?\\n/)) {\n if (line.trim().length > 0) {\n entries += 1;\n }\n }\n if (entries > compactPolicy.max_entries) {\n overThreshold.push(fileName.slice(0, -\".jsonl\".length));\n }\n }\n\n return {\n count: historyFiles.length,\n warnings: [...warnings, ...overThreshold.map((id) => `history_stream_over_compact_threshold:${id}`)],\n over_threshold: overThreshold,\n max_entries: maxEntries,\n };\n}\n\nfunction normalizeRelativePath(pmRoot: string, targetPath: string): string {\n return path.relative(pmRoot, targetPath).replaceAll(\"\\\\\", \"/\");\n}\n\nasync function listItemDocumentPaths(pmRoot: string, typeToFolder: Record<string, string>): Promise<string[]> {\n const folders = [...new Set(Object.values(typeToFolder))].sort((left, right) => left.localeCompare(right));\n const itemPaths: string[] = [];\n for (const folder of folders) {\n const directoryPath = path.join(pmRoot, folder);\n let entries: string[] = [];\n try {\n entries = await fs.readdir(directoryPath);\n } catch (error: unknown) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\") {\n continue;\n }\n continue;\n }\n for (const entry of entries) {\n if (!ITEM_FILE_EXTENSIONS.some((extension) => entry.toLowerCase().endsWith(extension))) {\n continue;\n }\n itemPaths.push(path.join(directoryPath, entry));\n }\n }\n itemPaths.sort((left, right) => normalizeRelativePath(pmRoot, left).localeCompare(normalizeRelativePath(pmRoot, right)));\n return itemPaths;\n}\n\nfunction shouldReportHistoryDirectoryUnreadable(error: unknown): boolean {\n return !(typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\");\n}\n\nasync function buildIntegrityCheck(\n pmRoot: string,\n typeToFolder: Record<string, string>,\n schema: PmSettings[\"schema\"],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const itemPaths = await listItemDocumentPaths(pmRoot, typeToFolder);\n const itemUnreadable: string[] = [];\n const itemConflictMarkers: Array<{ path: string; line: number; marker: string }> = [];\n const itemParseFailures: string[] = [];\n const formatVersionEntries: Array<{ ref: string; version: number }> = [];\n const extensionFieldNames = collectRegisteredItemFieldNames(getActiveExtensionRegistrations());\n\n for (const itemPath of itemPaths) {\n const relativePath = normalizeRelativePath(pmRoot, itemPath);\n let raw = \"\";\n try {\n raw = await fs.readFile(itemPath, \"utf8\");\n } catch {\n itemUnreadable.push(relativePath);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n itemConflictMarkers.push({\n path: relativePath,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n try {\n const parsed = parseItemDocument(raw, { format: getItemFormatFromPath(itemPath) as ItemFormat, schema, extensionFieldNames });\n formatVersionEntries.push({ ref: relativePath, version: effectiveItemFormatVersion(parsed.metadata) });\n } catch {\n itemParseFailures.push(relativePath);\n }\n }\n const formatVersionScan = scanItemFormatVersions(formatVersionEntries);\n\n const historyDir = path.join(pmRoot, \"history\");\n const historyUnreadable: string[] = [];\n const historyConflictMarkers: Array<{ id: string; line: number; marker: string }> = [];\n const historyInvalidJson: Array<{ id: string; line: number }> = [];\n let historyFiles: string[] = [];\n try {\n historyFiles = (await fs.readdir(historyDir)).filter((entry) => entry.endsWith(\".jsonl\")).sort((left, right) => left.localeCompare(right));\n } catch (error: unknown) {\n /* c8 ignore start -- ENOENT/non-ENOENT differentiation requires filesystem fault injection */\n if (shouldReportHistoryDirectoryUnreadable(error)) {\n historyUnreadable.push(\"history\");\n }\n /* c8 ignore stop */\n }\n for (const fileName of historyFiles) {\n const itemId = fileName.slice(0, -\".jsonl\".length);\n const historyPath = path.join(historyDir, fileName);\n let raw = \"\";\n try {\n raw = await fs.readFile(historyPath, \"utf8\");\n } catch {\n historyUnreadable.push(itemId);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n historyConflictMarkers.push({\n id: itemId,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n const lines = raw.split(/\\r?\\n/);\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index]?.trim();\n if (!line) {\n continue;\n }\n try {\n JSON.parse(line);\n } catch {\n historyInvalidJson.push({\n id: itemId,\n line: index + 1,\n });\n }\n }\n }\n\n const warnings = [\n ...itemUnreadable.map((entry) => `integrity_item_unreadable:${entry}`),\n ...itemConflictMarkers.map((entry) => `integrity_item_conflict_marker:${entry.path}:L${entry.line}`),\n ...itemParseFailures.map((entry) => `integrity_item_parse_failed:${entry}`),\n ...historyUnreadable.map((entry) => `integrity_history_unreadable:${entry}`),\n ...historyConflictMarkers.map((entry) => `integrity_history_conflict_marker:${entry.id}:L${entry.line}`),\n ...historyInvalidJson.map((entry) => `integrity_history_invalid_json:${entry.id}:L${entry.line}`),\n /* c8 ignore start -- outdated-version items are unreachable until CURRENT_ITEM_FORMAT_VERSION advances past the baseline (an effective version below 1 cannot occur); the per-item mapping is covered in item-format-version.spec, and the ahead path below is covered by health-command.spec */\n ...formatVersionScan.outdated.map((entry) => `integrity_item_outdated_format_version:${entry}`),\n /* c8 ignore stop */\n ...formatVersionScan.ahead.map((entry) => `integrity_item_ahead_format_version:${entry}`),\n ];\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n\n return {\n check: {\n name: \"integrity\",\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_item_files: itemPaths.length,\n checked_history_streams: historyFiles.length,\n counts: {\n item_unreadable: itemUnreadable.length,\n item_conflict_markers: itemConflictMarkers.length,\n item_parse_failures: itemParseFailures.length,\n history_unreadable: historyUnreadable.length,\n history_conflict_markers: historyConflictMarkers.length,\n history_invalid_json: historyInvalidJson.length,\n item_outdated_format_version: formatVersionScan.outdated.length,\n item_ahead_format_version: formatVersionScan.ahead.length,\n },\n item_unreadable: itemUnreadable,\n item_conflict_markers: itemConflictMarkers,\n item_parse_failures: itemParseFailures,\n item_outdated_format_version: formatVersionScan.outdated,\n item_ahead_format_version: formatVersionScan.ahead,\n history_unreadable: historyUnreadable,\n history_conflict_markers: historyConflictMarkers,\n history_invalid_json: historyInvalidJson,\n },\n },\n warnings: normalizedWarnings,\n };\n}\n\n/* c8 ignore start -- activate export shape variants are exercised through integration load tests */\nfunction hasActivateExport(moduleRecord: Record<string, unknown>): boolean {\n if (typeof moduleRecord.activate === \"function\") {\n return true;\n }\n const defaultExport = moduleRecord.default;\n if (typeof defaultExport !== \"object\" || defaultExport === null) {\n return false;\n }\n return typeof (defaultExport as Record<string, unknown>).activate === \"function\";\n}\n/* c8 ignore stop */\n\nfunction summarizeLoadedExtension(extension: LoadedExtension): Record<string, unknown> {\n const summary: Record<string, unknown> = {\n layer: extension.layer,\n directory: extension.directory,\n manifest_path: extension.manifest_path,\n name: extension.name,\n version: extension.version,\n entry: extension.entry,\n priority: extension.priority,\n entry_path: extension.entry_path,\n has_activate: hasActivateExport(extension.module as Record<string, unknown>),\n };\n /* c8 ignore start -- capability list optionality is exercised by extension load integration suites */\n if (Array.isArray(extension.capabilities)) {\n summary.capabilities = [...extension.capabilities];\n }\n /* c8 ignore stop */\n return summary;\n}\n\nfunction resolveMigrationId(definition: Record<string, unknown>, fallbackIndex: number): string {\n const explicitId = toNonEmptyStringOrUndefined(definition.id);\n if (explicitId) {\n return explicitId;\n }\n return `migration-${String(fallbackIndex + 1).padStart(3, \"0\")}`;\n}\n\nfunction resolveMigrationStatus(definition: Record<string, unknown>): MigrationRuntimeStatus {\n const rawStatus = toNonEmptyStringOrUndefined(definition.status);\n const normalized = rawStatus?.toLowerCase();\n if (normalized === \"failed\") {\n return \"failed\";\n }\n if (normalized === \"applied\") {\n return \"applied\";\n }\n return \"pending\";\n}\n\nfunction resolveMigrationFailureReason(definition: Record<string, unknown>): string | undefined {\n return toNonEmptyStringOrUndefined(definition.reason) ?? toNonEmptyStringOrUndefined(definition.error) ?? toNonEmptyStringOrUndefined(definition.message);\n}\n\n/* c8 ignore start -- comparator tie-break branches are deterministic ordering glue exercised via migration integration tests */\nfunction compareMigrationEntries(left: MigrationStatusEntry, right: MigrationStatusEntry): number {\n const byLayer = (left.layer ?? \"\").localeCompare(right.layer ?? \"\");\n if (byLayer !== 0) {\n return byLayer;\n }\n const byName = (left.name ?? \"\").localeCompare(right.name ?? \"\");\n if (byName !== 0) {\n return byName;\n }\n return (left.id ?? \"\").localeCompare(right.id ?? \"\");\n}\n/* c8 ignore stop */\n\nfunction summarizeMigrationStatuses(\n migrations: Array<{\n layer: \"global\" | \"project\";\n name: string;\n definition: Record<string, unknown>;\n }>,\n): { summary: MigrationStatusSummary; warnings: string[] } {\n const applied: MigrationStatusEntry[] = [];\n const pending: MigrationStatusEntry[] = [];\n const failed: MigrationStatusEntry[] = [];\n\n migrations.forEach((migration, index) => {\n const id = resolveMigrationId(migration.definition, index);\n const status = resolveMigrationStatus(migration.definition);\n if (status === \"applied\") {\n applied.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n return;\n }\n if (status === \"failed\") {\n failed.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n reason: resolveMigrationFailureReason(migration.definition),\n });\n return;\n }\n pending.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n });\n\n applied.sort(compareMigrationEntries);\n pending.sort(compareMigrationEntries);\n failed.sort(compareMigrationEntries);\n\n const warnings = [\n ...failed.map((entry) => `extension_migration_failed:${entry.layer}:${entry.name}:${entry.id}`),\n ...pending.map((entry) => `extension_migration_pending:${entry.layer}:${entry.name}:${entry.id}`),\n ];\n\n return {\n summary: {\n applied,\n pending,\n failed,\n applied_count: applied.length,\n pending_count: pending.length,\n failed_count: failed.length,\n },\n warnings,\n };\n}\n\nfunction buildExtensionHealthTriageSummary(\n warnings: string[],\n loadFailureCount: number,\n activationFailureCount: number,\n migrationStatus: MigrationStatusSummary,\n managedStateWarningCount: number,\n managedExtensionEntriesCount: number,\n unmanagedLoadedExtensions: string[],\n unmanagedExpectedExtensions: string[],\n unmanagedActionRequiredExtensions: string[],\n): ExtensionHealthTriageSummary {\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n const warningCodes = [...new Set(normalizedWarnings.map((value) => warningCode(value)))].sort((left, right) =>\n left.localeCompare(right),\n );\n const unknownCapabilityCount = normalizedWarnings.filter((warning) => warning.startsWith(\"extension_capability_unknown:\")).length;\n const updateHealthPartial = unmanagedActionRequiredExtensions.length > 0;\n const updateHealthCoverage = updateHealthPartial ? \"partial\" : \"full\";\n const remediation: string[] = [];\n const registrationCollisionRemediation = buildRegistrationCollisionRemediation(normalizedWarnings, {\n deactivate: \"pm extension --deactivate <name> --project/--global\",\n doctor: \"pm extension --doctor --project/--global --detail deep --trace\",\n });\n if (registrationCollisionRemediation) {\n remediation.push(registrationCollisionRemediation);\n }\n if (loadFailureCount > 0) {\n remediation.push(\"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\");\n }\n if (activationFailureCount > 0) {\n remediation.push(\"Review checks[name=extensions].details.activation.failed in pm health --json for activation error details.\");\n }\n if (migrationStatus.failed_count > 0 || migrationStatus.pending_count > 0) {\n remediation.push(\"Resolve pending/failed extension migrations before write commands; use --force only when policy allows.\");\n }\n if (managedStateWarningCount > 0) {\n remediation.push(\"Run pm extension --manage --project and pm extension --manage --global to refresh managed-state diagnostics.\");\n }\n if (unknownCapabilityCount > 0) {\n remediation.push(\n `Unknown extension capabilities detected. Allowed capabilities: ${KNOWN_EXTENSION_CAPABILITIES.join(\", \")}. ` +\n \"Review extension_capability_unknown warning details for suggested replacements.\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_capability_legacy_alias:\"))) {\n remediation.push(\n \"Legacy extension capability aliases were auto-remapped to canonical capabilities. \" +\n \"Update manifests to canonical names (migration/validation -> schema).\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_command_definition_legacy_handler_alias:\"))) {\n remediation.push(\n \"Extension command definitions using legacy handler were auto-remapped. \" +\n \"Update command definitions to use run: (context) => ... for forward compatibility.\",\n );\n }\n if (updateHealthPartial) {\n remediation.push(\n \"Update-check coverage is partial because unmanaged extensions need adoption. Adopt existing installs via pm extension --manage --project/--global --fix-managed-state, pm extension --adopt-all --project/--global, or pm extension --adopt <name>.\",\n );\n } else if (unmanagedLoadedExtensions.length > 0) {\n remediation.push(\n \"Loaded unmanaged extensions are currently treated as informational. Use pm extension --manage --project/--global --fix-managed-state to adopt them for update checks.\",\n );\n }\n if (remediation.length === 0) {\n remediation.push(\"No immediate action required. Re-run pm health after extension configuration changes.\");\n }\n return {\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n warning_count: normalizedWarnings.length,\n warning_codes: warningCodes,\n load_failure_count: loadFailureCount,\n activation_failure_count: activationFailureCount,\n migration_failed_count: migrationStatus.failed_count,\n migration_pending_count: migrationStatus.pending_count,\n managed_state_warning_count: managedStateWarningCount,\n managed_extension_entries_count: managedExtensionEntriesCount,\n unmanaged_loaded_extension_count: unmanagedLoadedExtensions.length,\n unmanaged_loaded_extensions: unmanagedLoadedExtensions,\n unmanaged_expected_extension_count: unmanagedExpectedExtensions.length,\n unmanaged_expected_extensions: unmanagedExpectedExtensions,\n unmanaged_action_required_extension_count: unmanagedActionRequiredExtensions.length,\n unmanaged_action_required_extensions: unmanagedActionRequiredExtensions,\n update_health_coverage: updateHealthCoverage,\n update_health_partial: updateHealthPartial,\n unknown_capability_count: unknownCapabilityCount,\n top_warnings: normalizedWarnings.slice(0, 8),\n remediation,\n };\n}\n\nasync function buildExtensionCheck(\n pmRoot: string,\n settings: PmSettings,\n noExtensionsFlag: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: noExtensionsFlag,\n });\n const loadedSummaries = loadResult.loaded.map((extension) => summarizeLoadedExtension(extension));\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n const [projectManagedState, globalManagedState] = await Promise.all([\n readManagedExtensionState(loadResult.roots.project),\n readManagedExtensionState(loadResult.roots.global),\n ]);\n const migrationStatus = summarizeMigrationStatuses(activationResult.registrations.migrations);\n const activationDetails = {\n failed: activationResult.failed,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n command_override_count: activationResult.command_override_count,\n command_handler_count: activationResult.command_handler_count,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n registration_counts: activationResult.registration_counts,\n registrations: activationResult.registrations,\n migration_status: migrationStatus.summary,\n managed_extensions: {\n project: {\n path: projectManagedState.path,\n count: projectManagedState.state.entries.length,\n entries: projectManagedState.state.entries,\n },\n global: {\n path: globalManagedState.path,\n count: globalManagedState.state.entries.length,\n entries: globalManagedState.state.entries,\n },\n },\n };\n /* c8 ignore start -- unmanaged/expected grouping matrices are exercised in doctor + extension integration suites */\n const managedProjectNames = new Set(\n projectManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)),\n );\n const managedGlobalNames = new Set(globalManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)));\n const unmanagedLoadedEntries = [\n ...new Map(\n loadResult.loaded\n .filter((entry) => {\n const managedNames = entry.layer === \"project\" ? managedProjectNames : managedGlobalNames;\n return !managedNames.has(normalizeExtensionNameForMatch(entry.name));\n })\n .map((entry) => [\n `${entry.layer}:${entry.name}`,\n {\n layer: entry.layer,\n name: entry.name,\n directory: entry.directory,\n },\n ]),\n ).values(),\n ].sort((left, right) => {\n const leftKey = `${left.layer}:${left.name}`;\n const rightKey = `${right.layer}:${right.name}`;\n return leftKey.localeCompare(rightKey);\n });\n const unmanagedLoadedExtensions = unmanagedLoadedEntries\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedExpectedExtensions = unmanagedLoadedEntries\n .filter((entry) => isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedActionRequiredExtensions = unmanagedLoadedEntries\n .filter((entry) => !isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n /* c8 ignore stop */\n const updateCoverageWarnings =\n unmanagedActionRequiredExtensions.length > 0\n ? [`extension_update_health_partial_coverage:skipped_unmanaged:${unmanagedActionRequiredExtensions.length}`]\n : [];\n const extensionWarnings = [\n ...loadResult.warnings,\n ...activationDetails.warnings,\n ...migrationStatus.warnings,\n ...projectManagedState.warnings,\n ...globalManagedState.warnings,\n ...updateCoverageWarnings,\n ];\n const capabilityGuidance = collectUnknownCapabilityGuidance(extensionWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const extensionTriage = buildExtensionHealthTriageSummary(\n extensionWarnings,\n loadResult.failed.length,\n activationResult.failed.length,\n migrationStatus.summary,\n projectManagedState.warnings.length + globalManagedState.warnings.length,\n projectManagedState.state.entries.length + globalManagedState.state.entries.length,\n unmanagedLoadedExtensions,\n unmanagedExpectedExtensions,\n unmanagedActionRequiredExtensions,\n );\n\n return {\n check: {\n name: \"extensions\",\n status: extensionWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n ...loadResult,\n loaded: loadedSummaries,\n warnings: extensionWarnings,\n activation: activationDetails,\n triage: extensionTriage,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n } as Record<string, unknown>,\n },\n warnings: extensionWarnings,\n };\n}\n\nfunction summarizeList(values: string[], limit: number): { values: string[]; truncated: boolean } {\n if (values.length <= limit) {\n return { values, truncated: false };\n }\n return {\n values: values.slice(0, limit),\n truncated: true,\n };\n}\n\nfunction summarizeRecordList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n return {\n count: value.length,\n sample: value.slice(0, limit),\n truncated: value.length > limit,\n };\n}\n\nfunction summarizeExtensionRecord(value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {};\n }\n const record = value as Record<string, unknown>;\n return {\n layer: record.layer,\n directory: record.directory,\n name: record.name,\n version: record.version,\n enabled: record.enabled,\n status: record.status,\n has_activate: record.has_activate,\n capabilities: record.capabilities,\n };\n}\n\nfunction summarizeExtensionList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n const summary = summarizeRecordList(value, limit);\n return {\n ...summary,\n sample: summary.sample.map((entry) => summarizeExtensionRecord(entry)),\n };\n}\n\nfunction summarizeStringList(value: unknown, limit: number): { count: number; sample: string[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n const strings = value.filter((entry): entry is string => typeof entry === \"string\");\n return {\n count: strings.length,\n sample: strings.slice(0, limit),\n truncated: strings.length > limit,\n };\n}\n\ntype HealthDetailSummarizer = (details: Record<string, unknown>, limit: number) => Record<string, unknown>;\n\nfunction summarizeActivationMigrationStatus(value: unknown): Record<string, unknown> | null {\n if (typeof value !== \"object\" || value === null) {\n return null;\n }\n const status = value as Record<string, unknown>;\n return {\n applied_count: status.applied_count,\n pending_count: status.pending_count,\n failed_count: status.failed_count,\n };\n}\n\nconst HEALTH_DETAIL_SUMMARIZERS = {\n settings: (details, limit) => ({\n version: details.version,\n id_prefix: details.id_prefix,\n locks_ttl_seconds: details.locks_ttl_seconds,\n warnings: summarizeStringList(details.warnings, limit),\n }),\n directories: (details, limit) => ({\n required_count: Array.isArray(details.required) ? details.required.length : 0,\n optional_count: Array.isArray(details.optional) ? details.optional.length : 0,\n missing_required: summarizeStringList(details.missing_required, limit),\n missing_optional: summarizeStringList(details.missing_optional, limit),\n missing: summarizeStringList(details.missing, limit),\n strict_directories: details.strict_directories,\n }),\n settings_values: (details, limit) => ({\n warnings: summarizeStringList(details.warnings, limit),\n }),\n telemetry: (details) => ({\n enabled: details.enabled,\n capture_level: details.capture_level,\n endpoint: details.endpoint,\n queue_exists: details.queue_exists,\n queue_entries: details.queue_entries,\n queue_draining: details.queue_draining,\n queue_invalid_rows: details.queue_invalid_rows,\n queue_rows_total: details.queue_rows_total,\n last_successful_flush_at: details.last_successful_flush_at,\n last_failed_flush_at: details.last_failed_flush_at,\n endpoint_probe: details.endpoint_probe,\n env_overrides: details.env_overrides,\n }),\n extensions: (details, limit) => {\n const activation = typeof details.activation === \"object\" && details.activation !== null ? (details.activation as Record<string, unknown>) : {};\n return {\n disabled_by_flag: details.disabled_by_flag,\n discovered: summarizeExtensionList(details.discovered, limit),\n effective: summarizeExtensionList(details.effective, limit),\n loaded: summarizeExtensionList(details.loaded, limit),\n failed: summarizeRecordList(details.failed, limit),\n warnings: summarizeStringList(details.warnings, limit),\n activation: {\n failed: summarizeRecordList(activation.failed, limit),\n warnings: summarizeStringList(activation.warnings, limit),\n hook_counts: activation.hook_counts,\n command_handler_count: activation.command_handler_count,\n service_override_count: activation.service_override_count,\n renderer_override_count: activation.renderer_override_count,\n registration_counts: activation.registration_counts,\n migration_status: summarizeActivationMigrationStatus(activation.migration_status),\n },\n triage: details.triage,\n capability_contract: details.capability_contract,\n capability_guidance: summarizeRecordList(details.capability_guidance, limit),\n };\n },\n // Storage details are already compact counters; keep the pre-refactor pass-through shape.\n storage: (details) => details,\n locks: (details) => ({\n active_lock_count: details.active_lock_count,\n stale_lock_count: details.stale_lock_count,\n unreadable_lock_count: details.unreadable_lock_count,\n unparseable_lock_count: details.unparseable_lock_count,\n }),\n integrity: (details, limit) => ({\n checked_item_files: details.checked_item_files,\n checked_history_streams: details.checked_history_streams,\n counts: details.counts,\n item_unreadable: summarizeStringList(details.item_unreadable, limit),\n item_conflict_markers: summarizeRecordList(details.item_conflict_markers, limit),\n item_parse_failures: summarizeStringList(details.item_parse_failures, limit),\n history_unreadable: summarizeStringList(details.history_unreadable, limit),\n history_conflict_markers: summarizeRecordList(details.history_conflict_markers, limit),\n history_invalid_json: summarizeRecordList(details.history_invalid_json, limit),\n skipped: details.skipped,\n }),\n history_drift: (details, limit) => ({\n checked_items: details.checked_items,\n counts: details.counts,\n drifted_items: summarizeStringList(details.drifted_items, limit),\n missing_streams: summarizeStringList(details.missing_streams, limit),\n unreadable_streams: summarizeStringList(details.unreadable_streams, limit),\n hash_mismatches: summarizeStringList(details.hash_mismatches, limit),\n chain_mismatches: summarizeStringList(details.chain_mismatches, limit),\n skipped: details.skipped,\n }),\n vectorization: (details, limit) => ({\n semantic_runtime_available: details.semantic_runtime_available,\n compatibility_mode_auto_defaults: details.compatibility_mode_auto_defaults,\n auto_ollama_defaults_applied: details.auto_ollama_defaults_applied,\n refresh_policy: details.refresh_policy,\n provider_active: details.provider_active,\n vector_store_active: details.vector_store_active,\n items: details.items,\n ledger_entries_before: details.ledger_entries_before,\n stale_items_before_total: details.stale_items_before_total,\n stale_items_before: summarizeStringList(details.stale_items_before, limit),\n refresh_attempted: details.refresh_attempted,\n refresh_skipped_reason: details.refresh_skipped_reason,\n refresh_result: details.refresh_result,\n ledger_entries_after: details.ledger_entries_after,\n stale_items_after_total: details.stale_items_after_total,\n stale_items_after: summarizeStringList(details.stale_items_after, limit),\n skipped: details.skipped,\n }),\n} satisfies Record<HealthCheck[\"name\"], HealthDetailSummarizer>;\n\n/* c8 ignore start -- brief/summary projection matrix branches are validated in projection integration tests */\nfunction summarizeHealthCheckDetails(check: HealthCheck, limit: number): Record<string, unknown> {\n const summarize = HEALTH_DETAIL_SUMMARIZERS[check.name];\n return summarize ? summarize(check.details, limit) : check.details;\n}\n/* c8 ignore stop */\n\nfunction applyBriefHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n return {\n ok: result.ok,\n checks: result.checks.map((check) => ({\n name: check.name,\n status: check.status,\n details: summarizeHealthCheckDetails(check, BRIEF_HEALTH_DETAIL_LIMIT),\n })),\n warnings: warningsSummary.sample,\n projection: {\n mode: \"brief\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction isSkippedHealthCheck(check: HealthCheck): boolean {\n return check.details.skipped === true;\n}\n\nfunction applySummaryHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n const omittedChecks = result.checks.filter(isSkippedHealthCheck).map((check) => check.name);\n return {\n ok: result.ok,\n checks: result.checks\n .filter((check) => !isSkippedHealthCheck(check))\n .map((check) => ({\n name: check.name,\n status: check.status,\n details: {},\n })),\n warning_count: warningsSummary.count,\n warnings: warningsSummary.sample,\n projection: {\n mode: \"summary\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n omitted_checks: omittedChecks,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction selectStaleItemDetail(\n values: string[],\n verboseStaleItems: boolean,\n): {\n values: string[];\n truncated: boolean;\n total: number;\n} {\n if (verboseStaleItems) {\n return {\n values,\n truncated: false,\n total: values.length,\n };\n }\n const summary = summarizeList(values, STALE_VECTORIZATION_SUMMARY_LIMIT);\n return {\n values: summary.values,\n truncated: summary.truncated,\n total: values.length,\n };\n}\n\ntype VectorizationRuntimeDefaults = ReturnType<typeof resolveSettingsWithSemanticRuntimeDefaults>;\ntype VectorizationProviderResolution = ReturnType<typeof resolveEmbeddingProviders>;\ntype VectorizationStoreResolution = ReturnType<typeof resolveVectorStores>;\ntype VectorizationLedger = Awaited<ReturnType<typeof readVectorizationStatusLedger>>;\ntype VectorizationRefreshResult = Awaited<ReturnType<typeof refreshSemanticEmbeddingsForMutatedItems>>;\n\ninterface VectorizationRuntimeSnapshot {\n runtimeDefaults: VectorizationRuntimeDefaults;\n providerResolution: VectorizationProviderResolution;\n vectorStoreResolution: VectorizationStoreResolution;\n runtimeEmbeddingIdentity: ReturnType<typeof buildVectorizationEmbeddingIdentity> | null;\n semanticRuntimeAvailable: boolean;\n}\n\ninterface TelemetryRuntimeStateRecord {\n endpoint?: string;\n queue_entries?: number;\n last_attempted_flush_at?: string;\n last_successful_flush_at?: string;\n last_failed_flush_at?: string;\n last_failed_flush_error?: string;\n pending_otel_spans?: number;\n last_otel_attempt_at?: string;\n last_otel_success_at?: string;\n last_otel_failure_at?: string;\n last_otel_failure_error?: string;\n}\n\nfunction telemetryEnvFlagEnabled(\n envKey: \"PM_TELEMETRY_DISABLED\" | \"PM_TELEMETRY_OTEL_DISABLED\" | \"PM_NO_TELEMETRY\" | \"PM_TELEMETRY_INLINE_FLUSH\",\n): boolean {\n const value = (process.env[envKey] ?? \"\").trim().toLowerCase();\n return value === \"1\" || value === \"true\" || value === \"yes\" || value === \"on\";\n}\n\n/* c8 ignore start -- environment override permutations are covered by runtime integration tests */\nfunction telemetrySourceContextOverride(): string | null {\n // Only report an override the runtime actually honours: runtime.ts ignores any\n // value outside the enum and falls back to the inferred context, so health must\n // report null for an unrecognized value rather than implying it took effect.\n const value = (process.env.PM_TELEMETRY_SOURCE_CONTEXT ?? \"\").trim().toLowerCase();\n return PM_TELEMETRY_SOURCE_CONTEXT_SET.has(value) ? value : null;\n}\n/* c8 ignore stop */\n\nfunction normalizeEndpointForDisplay(rawEndpoint: string): string {\n const trimmed = rawEndpoint.trim();\n if (trimmed.length === 0) {\n return \"\";\n }\n try {\n const parsed = new URL(trimmed);\n parsed.username = \"\";\n parsed.password = \"\";\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString();\n } catch {\n return trimmed;\n }\n}\n\nfunction parseTelemetryQueue(raw: string): {\n validEntries: number;\n invalidRows: number;\n totalRows: number;\n highRetryEntries: number;\n maxAttempts: number;\n} {\n let validEntries = 0;\n let invalidRows = 0;\n let totalRows = 0;\n let highRetryEntries = 0;\n let maxAttempts = 0;\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n totalRows += 1;\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n typeof parsed.attempts === \"number\" &&\n Number.isFinite(parsed.attempts)\n ) {\n const attempts = Math.max(0, Math.trunc(parsed.attempts));\n validEntries += 1;\n maxAttempts = Math.max(maxAttempts, attempts);\n if (attempts >= TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD) {\n highRetryEntries += 1;\n }\n } else {\n /* c8 ignore next -- invalid queue rows are covered by end-to-end telemetry fixtures */\n invalidRows += 1;\n }\n } catch {\n invalidRows += 1;\n }\n }\n return {\n validEntries,\n invalidRows,\n totalRows,\n highRetryEntries,\n maxAttempts,\n };\n}\n\ntype TelemetryQueueSummary = ReturnType<typeof parseTelemetryQueue>;\n\ninterface TelemetryEndpointProbeSummary {\n attempted: boolean;\n probe_url?: string;\n ok?: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n}\n\nfunction emptyTelemetryQueueSummary(): TelemetryQueueSummary {\n return { validEntries: 0, invalidRows: 0, totalRows: 0, highRetryEntries: 0, maxAttempts: 0 };\n}\n\n/* c8 ignore start -- telemetry state corruption and otel-failure branches require runtime-coordinated fixture mutation */\nfunction parseTelemetryRuntimeState(stateRaw: string | null): { runtimeState: TelemetryRuntimeStateRecord; stateParseFailed: boolean } {\n if (!stateRaw || stateRaw.trim().length === 0) {\n return { runtimeState: {}, stateParseFailed: false };\n }\n try {\n const parsed = JSON.parse(stateRaw) as TelemetryRuntimeStateRecord;\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return { runtimeState: parsed, stateParseFailed: false };\n }\n return { runtimeState: {}, stateParseFailed: true };\n } catch {\n return { runtimeState: {}, stateParseFailed: true };\n }\n}\n\nasync function maybeProbeTelemetryEndpoint(\n settings: PmSettings,\n checkTelemetry: boolean,\n): Promise<TelemetryEndpointProbeSummary | undefined> {\n const endpoint = settings.telemetry.endpoint.trim();\n if (!checkTelemetry || !settings.telemetry.enabled || endpoint.length === 0) {\n return undefined;\n }\n const probe = await probeTelemetryEndpointHealth(endpoint);\n return {\n attempted: true,\n ...probe,\n };\n}\n\nfunction collectTelemetryQueueWarnings(\n settings: PmSettings,\n queueSummary: TelemetryQueueSummary,\n runtimeState: TelemetryRuntimeStateRecord,\n): string[] {\n const warnings: string[] = [];\n if (queueSummary.invalidRows > 0) {\n warnings.push(`telemetry_queue_invalid_rows:${queueSummary.invalidRows}`);\n }\n if (!settings.telemetry.enabled || queueSummary.validEntries === 0) {\n return warnings;\n }\n const lastSuccess = runtimeState.last_successful_flush_at;\n const lastFailure = runtimeState.last_failed_flush_at;\n const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);\n const neverFlushed = !lastSuccess;\n const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;\n if (activeFailure || neverFlushed || highWater) {\n warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);\n }\n if (queueSummary.highRetryEntries > 0) {\n warnings.push(`telemetry_queue_high_retries:${queueSummary.highRetryEntries}`);\n }\n return warnings;\n}\n\nfunction collectTelemetryEndpointWarnings(endpointProbe: TelemetryEndpointProbeSummary | undefined): string[] {\n if (!endpointProbe || endpointProbe.ok !== false) {\n return [];\n }\n return typeof endpointProbe.status === \"number\"\n ? [`telemetry_endpoint_probe_http_status:${endpointProbe.status}`]\n : [\"telemetry_endpoint_probe_failed\"];\n}\n\nfunction collectTelemetrySchemaWarnings(endpointProbe: TelemetryEndpointProbeSummary | undefined): string[] {\n const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? \"\", 10);\n if (endpointProbe?.ok === true && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {\n return [`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`];\n }\n return [];\n}\n\nfunction collectTelemetryOtelWarnings(settings: PmSettings, runtimeState: TelemetryRuntimeStateRecord): string[] {\n const pendingOtelSpans = typeof runtimeState.pending_otel_spans === \"number\" ? runtimeState.pending_otel_spans : 0;\n const lastOtelSuccess = runtimeState.last_otel_success_at;\n const lastOtelFailure = runtimeState.last_otel_failure_at;\n const otelExportFailing =\n settings.telemetry.enabled &&\n pendingOtelSpans > 0 &&\n Boolean(lastOtelFailure) &&\n // >= so a mixed-outcome batch (success + failure share the same attempt\n // timestamp) still surfaces the warning rather than being masked by the tie.\n (!lastOtelSuccess || (lastOtelFailure as string) >= lastOtelSuccess);\n return otelExportFailing ? [`telemetry_otel_export_failing:${pendingOtelSpans}`] : [];\n}\n\nfunction buildTelemetryEnvOverrideDetails(): Record<string, unknown> {\n return {\n telemetry_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_DISABLED\") || telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n pm_no_telemetry: telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n telemetry_otel_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_OTEL_DISABLED\"),\n telemetry_inline_flush: telemetryEnvFlagEnabled(\"PM_TELEMETRY_INLINE_FLUSH\"),\n telemetry_source_context: telemetrySourceContextOverride(),\n };\n}\n/* c8 ignore stop */\n\nfunction telemetryQueueHasEntries(settings: PmSettings, queueSummary: TelemetryQueueSummary): boolean {\n return settings.telemetry.enabled && queueSummary.validEntries > 0;\n}\n\nfunction isTelemetryQueueDraining(queueHasEntries: boolean, warnings: string[]): boolean {\n return (\n queueHasEntries &&\n warnings.every(\n (warning) => !warning.startsWith(\"telemetry_queue_pending:\") && !warning.startsWith(\"telemetry_queue_high_retries:\"),\n )\n );\n}\n\nasync function probeTelemetryEndpointHealth(endpoint: string): Promise<{\n probe_url: string;\n ok: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n}> {\n let probeUrl = endpoint;\n try {\n const parsed = new URL(endpoint);\n parsed.pathname = \"/healthz\";\n parsed.search = \"\";\n parsed.hash = \"\";\n probeUrl = parsed.toString();\n } catch {\n // keep original endpoint when URL parsing fails\n }\n try {\n const response = await fetch(probeUrl, {\n method: \"GET\",\n signal: AbortSignal.timeout(TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS),\n });\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: response.ok,\n status: response.status,\n max_schema_version: (() => {\n for (const headerName of TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS) {\n const value = response.headers.get(headerName)?.trim();\n if (value && value.length > 0) {\n return value;\n }\n }\n return undefined;\n })(),\n };\n } catch (error: unknown) {\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: false,\n /* c8 ignore next -- non-Error throwables require transport-layer fault injection */\n error: error instanceof Error ? error.message : \"probe_failed\",\n };\n }\n}\n\nasync function buildTelemetryCheck(\n settings: PmSettings,\n options: { checkTelemetry: boolean },\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n\n const queueRaw = await readFileIfExists(queuePath);\n const queueExists = queueRaw !== null;\n const queueSizeBytes = queueRaw ? Buffer.byteLength(queueRaw, \"utf8\") : 0;\n const queueSummary = queueRaw ? parseTelemetryQueue(queueRaw) : emptyTelemetryQueueSummary();\n\n const stateRaw = await readFileIfExists(statePath);\n const { runtimeState, stateParseFailed } = parseTelemetryRuntimeState(stateRaw);\n\n const endpoint = settings.telemetry.endpoint.trim();\n const endpointDisplay = normalizeEndpointForDisplay(endpoint);\n const endpointProbe = await maybeProbeTelemetryEndpoint(settings, options.checkTelemetry);\n\n const warnings: string[] = [];\n if (stateParseFailed) {\n warnings.push(\"telemetry_state_invalid_json\");\n }\n warnings.push(\n ...collectTelemetryQueueWarnings(settings, queueSummary, runtimeState),\n ...collectTelemetryEndpointWarnings(endpointProbe),\n ...collectTelemetrySchemaWarnings(endpointProbe),\n ...collectTelemetryOtelWarnings(settings, runtimeState),\n );\n const queueHasEntries = telemetryQueueHasEntries(settings, queueSummary);\n const pendingOtelSpans = typeof runtimeState.pending_otel_spans === \"number\" ? runtimeState.pending_otel_spans : 0;\n\n return {\n check: {\n name: \"telemetry\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n enabled: settings.telemetry.enabled,\n capture_level: settings.telemetry.capture_level,\n endpoint: endpointDisplay,\n global_pm_root: globalPmRoot,\n queue_path: queuePath,\n queue_exists: queueExists,\n queue_entries: queueSummary.validEntries,\n queue_draining: isTelemetryQueueDraining(queueHasEntries, warnings),\n queue_invalid_rows: queueSummary.invalidRows,\n queue_rows_total: queueSummary.totalRows,\n queue_size_bytes: queueSizeBytes,\n queue_high_retry_entries: queueSummary.highRetryEntries,\n queue_high_retry_threshold: TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD,\n queue_max_attempts: queueSummary.maxAttempts,\n runtime_state_path: statePath,\n last_attempted_flush_at: runtimeState.last_attempted_flush_at ?? null,\n last_successful_flush_at: runtimeState.last_successful_flush_at ?? null,\n last_failed_flush_at: runtimeState.last_failed_flush_at ?? null,\n last_failed_flush_error: runtimeState.last_failed_flush_error ?? null,\n pending_otel_spans: pendingOtelSpans,\n last_otel_attempt_at: runtimeState.last_otel_attempt_at ?? null,\n last_otel_success_at: runtimeState.last_otel_success_at ?? null,\n last_otel_failure_at: runtimeState.last_otel_failure_at ?? null,\n last_otel_failure_error: runtimeState.last_otel_failure_error ?? null,\n endpoint_probe: endpointProbe ?? { attempted: false },\n env_overrides: buildTelemetryEnvOverrideDetails(),\n },\n },\n warnings,\n };\n}\n\n/**\n * Read-only locks check (pm-xo1n): surfaces active/stale/unreadable/unparseable\n * lock counts using the exact classification `pm gc --scope locks` acts on, so\n * agents can gate on stale item-claim locks before running gc speculatively.\n */\nasync function buildLocksCheck(pmRoot: string): Promise<{ check: HealthCheck; warnings: string[] }> {\n /* c8 ignore start -- scan failure branches require filesystem-level fault injection */\n let scan: Awaited<ReturnType<typeof scanLockHealth>>;\n try {\n scan = await scanLockHealth(pmRoot);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n check: {\n name: \"locks\",\n status: \"warn\",\n details: {\n active_lock_count: 0,\n stale_lock_count: 0,\n unreadable_lock_count: 0,\n unparseable_lock_count: 0,\n scan_failed: true,\n error: message,\n pm_root: pmRoot,\n },\n },\n warnings: [`locks_scan_failed:${message}`],\n };\n }\n const warnings: string[] = [];\n if (scan.stale_lock_count > 0) {\n warnings.push(`locks_stale_count:${scan.stale_lock_count}`);\n }\n if (scan.unreadable_lock_count > 0) {\n warnings.push(`locks_unreadable:${scan.unreadable_lock_count}`);\n }\n /* c8 ignore stop */\n return {\n check: {\n name: \"locks\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n active_lock_count: scan.active_lock_count,\n stale_lock_count: scan.stale_lock_count,\n unreadable_lock_count: scan.unreadable_lock_count,\n unparseable_lock_count: scan.unparseable_lock_count,\n },\n },\n warnings,\n };\n}\n\nasync function buildHistoryDriftCheck(\n pmRoot: string,\n items: ItemWithBody[],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const cacheHitVerification = \"metadata\" as const;\n const { missingStreams, unreadableStreams, hashMismatches, chainMismatches, driftedItems } = await scanHistoryDrift(\n pmRoot,\n items,\n { cacheHitVerification },\n );\n const warnings = [\n ...missingStreams.map((id) => `history_drift_missing_stream:${id}`),\n ...unreadableStreams.map((id) => `history_drift_unreadable_stream:${id}`),\n ...hashMismatches.map((id) => `history_drift_hash_mismatch:${id}`),\n ...chainMismatches.map((id) => `history_drift_chain_mismatch:${id}`),\n ];\n return {\n check: {\n name: \"history_drift\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_items: items.length,\n cache_hit_verification: cacheHitVerification,\n drifted_items: driftedItems,\n counts: {\n drifted: driftedItems.length,\n missing_streams: missingStreams.length,\n unreadable_streams: unreadableStreams.length,\n hash_mismatches: hashMismatches.length,\n chain_mismatches: chainMismatches.length,\n },\n missing_streams: missingStreams,\n unreadable_streams: unreadableStreams,\n hash_mismatches: hashMismatches,\n chain_mismatches: chainMismatches,\n },\n },\n warnings,\n };\n}\n\nfunction buildVectorizationRuntimeSnapshot(settings: PmSettings): VectorizationRuntimeSnapshot {\n const runtimeDefaults = resolveSettingsWithSemanticRuntimeDefaults(settings);\n const providerResolution = resolveEmbeddingProviders(runtimeDefaults.settings);\n const vectorStoreResolution = resolveVectorStores(runtimeDefaults.settings);\n const runtimeEmbeddingIdentity = providerResolution.active\n ? buildVectorizationEmbeddingIdentity(providerResolution.active.name, providerResolution.active.model)\n : null;\n return {\n runtimeDefaults,\n providerResolution,\n vectorStoreResolution,\n runtimeEmbeddingIdentity,\n semanticRuntimeAvailable: Boolean(providerResolution.active && vectorStoreResolution.active),\n };\n}\n\nfunction emptyVectorizationRefreshResult(): VectorizationRefreshResult {\n return {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n}\n\nasync function refreshStaleVectorizationItems(params: {\n pmRoot: string;\n snapshot: VectorizationRuntimeSnapshot;\n refreshPolicy: VectorRefreshPolicy;\n staleBefore: string[];\n}): Promise<VectorizationRefreshResult> {\n if (!params.refreshPolicy.enabled || !params.snapshot.semanticRuntimeAvailable || params.staleBefore.length === 0) {\n return emptyVectorizationRefreshResult();\n }\n return refreshSemanticEmbeddingsForMutatedItems(params.pmRoot, params.staleBefore, {\n settings: params.snapshot.runtimeDefaults.settings,\n apply_runtime_defaults: false,\n });\n}\n\nfunction vectorizationEmbeddingIdentityChanged(params: {\n strictVectorizationWarnings: boolean;\n semanticRuntimeAvailable: boolean;\n ledgerBefore: VectorizationLedger;\n runtimeEmbeddingIdentity: VectorizationRuntimeSnapshot[\"runtimeEmbeddingIdentity\"];\n}): boolean {\n return (\n params.strictVectorizationWarnings &&\n params.semanticRuntimeAvailable &&\n Boolean(\n params.ledgerBefore.embedding &&\n params.runtimeEmbeddingIdentity &&\n hasVectorizationEmbeddingIdentityChanged(params.ledgerBefore.embedding, params.runtimeEmbeddingIdentity),\n )\n );\n}\n\n/* c8 ignore start -- strict-vectorization warning synthesis branches are integration-only policy permutations */\nfunction collectVectorizationWarnings(params: {\n ledgerBefore: VectorizationLedger;\n ledgerAfter: VectorizationLedger;\n refreshResult: VectorizationRefreshResult;\n strictVectorizationWarnings: boolean;\n semanticRuntimeAvailable: boolean;\n embeddingIdentityChanged: boolean;\n staleAfter: string[];\n}): string[] {\n const warningSet = new Set<string>([...params.ledgerBefore.warnings, ...params.ledgerAfter.warnings]);\n if (params.strictVectorizationWarnings) {\n for (const warning of params.refreshResult.warnings) {\n warningSet.add(warning);\n }\n }\n if (params.embeddingIdentityChanged) {\n warningSet.add(\"vectorization_embedding_identity_changed\");\n }\n if (params.strictVectorizationWarnings && params.semanticRuntimeAvailable && params.staleAfter.length > 0) {\n warningSet.add(`vectorization_stale_items_remaining:${params.staleAfter.length}`);\n }\n return [...warningSet].sort((left, right) => left.localeCompare(right));\n}\n/* c8 ignore stop */\n\nfunction resolveVectorizationRefreshSkippedReason(\n refreshPolicy: VectorRefreshPolicy,\n semanticRuntimeAvailable: boolean,\n staleBefore: string[],\n): string | null {\n if (refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0) {\n return null;\n }\n if (!refreshPolicy.enabled) {\n return \"refresh_disabled\";\n }\n return semanticRuntimeAvailable ? \"no_stale_items\" : \"semantic_runtime_unavailable\";\n}\n\nfunction buildVectorizationProviderDetails(settings: PmSettings, snapshot: VectorizationRuntimeSnapshot): Record<string, unknown> {\n const activeProvider = snapshot.providerResolution.active?.name ?? null;\n const activeVectorStore = snapshot.vectorStoreResolution.active?.name ?? null;\n return {\n provider_active: activeProvider,\n // GH-244: surface the persisted (possibly empty) configured value and\n // how the active resolution was sourced, so a config audit can tell\n // \"auto-detected\" apart from a genuine misconfiguration when\n // settings.search.provider / vector_store.adapter are empty strings.\n provider_configured: typeof settings.search?.provider === \"string\" ? settings.search.provider : null,\n provider_source: resolveProviderConfigSource(activeProvider, settings.search?.provider ?? null),\n vector_store_active: activeVectorStore,\n vector_store_configured: typeof settings.vector_store?.adapter === \"string\" ? settings.vector_store.adapter : null,\n vector_store_source: resolveProviderConfigSource(activeVectorStore, settings.vector_store?.adapter ?? null),\n };\n}\n\nfunction buildVectorizationRefreshPolicyDetails(refreshPolicy: VectorRefreshPolicy): Record<string, unknown> {\n return {\n enabled: refreshPolicy.enabled,\n check_only: refreshPolicy.checkOnly,\n no_refresh: refreshPolicy.noRefresh,\n refresh_vectors: refreshPolicy.refreshVectors,\n };\n}\n\nfunction vectorizationRefreshAttempted(\n refreshPolicy: VectorRefreshPolicy,\n semanticRuntimeAvailable: boolean,\n staleBefore: string[],\n): boolean {\n return refreshPolicy.enabled && staleBefore.length > 0 && semanticRuntimeAvailable;\n}\n\nasync function buildVectorizationCheck(\n pmRoot: string,\n settings: PmSettings,\n items: ItemWithBody[],\n refreshPolicy: VectorRefreshPolicy,\n verboseStaleItems: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const snapshot = buildVectorizationRuntimeSnapshot(settings);\n const ledgerBefore = await readVectorizationStatusLedger(pmRoot);\n const staleBefore = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerBefore.entries) : [];\n const refreshResult = await refreshStaleVectorizationItems({ pmRoot, snapshot, refreshPolicy, staleBefore });\n const ledgerAfter = await readVectorizationStatusLedger(pmRoot);\n const staleAfter = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerAfter.entries) : [];\n const strictVectorizationWarnings = !snapshot.runtimeDefaults.auto_ollama_defaults_applied;\n const embeddingIdentityChanged = vectorizationEmbeddingIdentityChanged({\n strictVectorizationWarnings,\n semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,\n ledgerBefore,\n runtimeEmbeddingIdentity: snapshot.runtimeEmbeddingIdentity,\n });\n const warnings = collectVectorizationWarnings({\n ledgerBefore,\n ledgerAfter,\n refreshResult,\n strictVectorizationWarnings,\n semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,\n embeddingIdentityChanged,\n staleAfter,\n });\n const staleBeforeDetail = selectStaleItemDetail(staleBefore, verboseStaleItems);\n const staleAfterDetail = selectStaleItemDetail(staleAfter, verboseStaleItems);\n const refreshAttempted = vectorizationRefreshAttempted(refreshPolicy, snapshot.semanticRuntimeAvailable, staleBefore);\n\n return {\n check: {\n name: \"vectorization\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n semantic_runtime_available: snapshot.semanticRuntimeAvailable,\n compatibility_mode_auto_defaults: snapshot.runtimeDefaults.auto_ollama_defaults_applied,\n auto_ollama_defaults_applied: snapshot.runtimeDefaults.auto_ollama_defaults_applied,\n refresh_policy: buildVectorizationRefreshPolicyDetails(refreshPolicy),\n ...buildVectorizationProviderDetails(settings, snapshot),\n embedding_identity_changed: embeddingIdentityChanged,\n embedding_identity_before: ledgerBefore.embedding ?? null,\n embedding_identity_runtime: snapshot.runtimeEmbeddingIdentity ?? null,\n items: items.length,\n ledger_entries_before: Object.keys(ledgerBefore.entries).length,\n stale_items_detail_mode: verboseStaleItems ? \"full\" : \"summary\",\n stale_items_summary_limit: STALE_VECTORIZATION_SUMMARY_LIMIT,\n stale_items_before_total: staleBeforeDetail.total,\n stale_items_before: staleBeforeDetail.values,\n stale_items_before_truncated: staleBeforeDetail.truncated,\n refresh_attempted: refreshAttempted,\n refresh_skipped_reason: resolveVectorizationRefreshSkippedReason(\n refreshPolicy,\n snapshot.semanticRuntimeAvailable,\n staleBefore,\n ),\n refresh_result: refreshResult,\n ledger_entries_after: Object.keys(ledgerAfter.entries).length,\n stale_items_after_total: staleAfterDetail.total,\n stale_items_after: staleAfterDetail.values,\n stale_items_after_truncated: staleAfterDetail.truncated,\n },\n },\n warnings,\n };\n}\n\nfunction validateSettingsValues(settings: PmSettings): string[] {\n const warnings: string[] = [];\n if (settings.id_prefix.trim().length === 0) {\n warnings.push(\"settings:id_prefix_empty\");\n }\n if (settings.locks.ttl_seconds <= 0) {\n warnings.push(\"settings:locks_ttl_non_positive\");\n }\n return warnings;\n}\n\nfunction resolveVectorRefreshPolicy(options: RunHealthOptions): VectorRefreshPolicy {\n const checkOnly = options.checkOnly === true;\n const noRefresh = options.noRefresh === true || checkOnly;\n const refreshVectors = options.refreshVectors === true;\n if (refreshVectors && checkOnly) {\n throw new PmCliError(\"--check-only cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n if (refreshVectors && options.noRefresh === true) {\n throw new PmCliError(\"--no-refresh cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n return {\n enabled: refreshVectors || !noRefresh,\n checkOnly,\n noRefresh,\n refreshVectors,\n };\n}\n\ntype HealthCheckResult = { check: HealthCheck; warnings: string[] };\ntype HealthTypeRegistry = ReturnType<typeof resolveItemTypeRegistry>;\n\ninterface HealthDirectoryState {\n requiredDirs: string[];\n optionalDirs: string[];\n missingRequiredDirs: string[];\n missingOptionalDirs: string[];\n missingDirs: string[];\n hookWarnings: string[];\n}\n\ninterface HealthSkipPolicy {\n summaryMode: boolean;\n skipIntegrity: boolean;\n skipDrift: boolean;\n skipVectors: boolean;\n}\n\nfunction resolveHealthDirectoryLists(typeRegistry: HealthTypeRegistry): {\n requiredDirs: string[];\n optionalDirs: string[];\n optionalDirSet: Set<string>;\n} {\n const optionalBuiltinDirs = new Set<string>(PM_OPTIONAL_TYPE_SUBDIRS.filter((entry) => entry.length > 0));\n const requiredDirSet = new Set<string>(PM_CORE_REQUIRED_SUBDIRS.filter((entry) => entry.length > 0));\n const optionalDirSet = new Set<string>();\n for (const folder of typeRegistry.folders) {\n if (optionalBuiltinDirs.has(folder)) {\n optionalDirSet.add(folder);\n continue;\n }\n requiredDirSet.add(folder);\n }\n return {\n requiredDirs: [...requiredDirSet].sort((left, right) => left.localeCompare(right)),\n optionalDirs: [...optionalDirSet].sort((left, right) => left.localeCompare(right)),\n optionalDirSet,\n };\n}\n\nasync function scanHealthDirectories(\n pmRoot: string,\n typeRegistry: HealthTypeRegistry,\n strictDirectories: boolean,\n): Promise<HealthDirectoryState> {\n const { requiredDirs, optionalDirs, optionalDirSet } = resolveHealthDirectoryLists(typeRegistry);\n const missingRequiredDirs: string[] = [];\n const missingOptionalDirs: string[] = [];\n const hookWarnings: string[] = [];\n for (const relativeDir of [...requiredDirs, ...optionalDirs]) {\n const directoryPath = path.join(pmRoot, relativeDir);\n hookWarnings.push(...(await runActiveOnReadHooks({ path: directoryPath, scope: \"project\" })));\n if (await isDirectory(directoryPath)) {\n continue;\n }\n if (optionalDirSet.has(relativeDir)) {\n missingOptionalDirs.push(relativeDir);\n } else {\n missingRequiredDirs.push(relativeDir);\n }\n }\n return {\n requiredDirs,\n optionalDirs,\n missingRequiredDirs,\n missingOptionalDirs,\n missingDirs: strictDirectories ? [...missingRequiredDirs, ...missingOptionalDirs] : [...missingRequiredDirs],\n hookWarnings,\n };\n}\n\nfunction resolveHealthSkipPolicy(options: RunHealthOptions): HealthSkipPolicy {\n const summaryMode = options.summary === true && options.full !== true;\n const fastProjectionCheckOnly =\n options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;\n return {\n summaryMode,\n skipIntegrity: (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true,\n skipDrift: (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true,\n skipVectors: (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true,\n };\n}\n\nasync function readHealthItems(params: {\n pmRoot: string;\n settings: PmSettings;\n typeRegistry: HealthTypeRegistry;\n skipPolicy: HealthSkipPolicy;\n itemReadWarnings: string[];\n}): Promise<Array<ItemMetadata | ItemWithBody>> {\n if (params.skipPolicy.skipDrift && params.skipPolicy.skipVectors) {\n return listAllFrontMatter(\n params.pmRoot,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n params.itemReadWarnings,\n params.settings.schema,\n );\n }\n return listAllFrontMatterWithBody(\n params.pmRoot,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n params.itemReadWarnings,\n params.settings.schema,\n );\n}\n\nfunction buildSkippedHealthCheck(name: Extract<HealthCheck[\"name\"], \"integrity\" | \"history_drift\" | \"vectorization\">): HealthCheckResult {\n return { check: { name, status: \"ok\", details: { skipped: true } }, warnings: [] };\n}\n\nfunction buildSettingsHealthCheck(\n settingsPath: string,\n settings: PmSettings,\n normalizedSettingsReadWarnings: string[],\n): HealthCheck {\n return {\n name: \"settings\",\n /* c8 ignore next -- settings read-warning status split is covered in broader read-settings integration tests */\n status: normalizedSettingsReadWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n path: settingsPath,\n version: settings.version,\n id_prefix: settings.id_prefix,\n locks_ttl_seconds: settings.locks.ttl_seconds,\n warnings: normalizedSettingsReadWarnings,\n },\n };\n}\n\nfunction buildDirectoriesHealthCheck(directoryState: HealthDirectoryState, strictDirectories: boolean): HealthCheck {\n return {\n name: \"directories\",\n status: directoryState.missingDirs.length === 0 ? \"ok\" : \"warn\",\n details: {\n required: directoryState.requiredDirs,\n optional: directoryState.optionalDirs,\n missing_required: directoryState.missingRequiredDirs,\n missing_optional: directoryState.missingOptionalDirs,\n missing: directoryState.missingDirs,\n strict_directories: strictDirectories,\n },\n };\n}\n\nfunction buildSettingsValuesHealthCheck(settingWarnings: string[]): HealthCheck {\n return {\n name: \"settings_values\",\n status: settingWarnings.length === 0 ? \"ok\" : \"warn\",\n details: { warnings: settingWarnings },\n };\n}\n\nfunction buildStorageHealthCheck(\n items: Array<ItemMetadata | ItemWithBody>,\n settings: PmSettings,\n historySummary: HistoryStreamSummary,\n): HealthCheck {\n return {\n name: \"storage\",\n status: historySummary.over_threshold.length === 0 ? \"ok\" : \"warn\",\n details: {\n items: items.length,\n history_streams: historySummary.count,\n ...(historySummary.max_entries !== null\n ? {\n compact_policy: {\n enabled: settings.history.compact_policy.enabled,\n max_entries: historySummary.max_entries,\n trigger: settings.history.compact_policy.trigger,\n over_threshold_count: historySummary.over_threshold.length,\n over_threshold: historySummary.over_threshold,\n },\n }\n : {}),\n },\n };\n}\n\nfunction collectHealthWarnings(params: {\n directoryState: HealthDirectoryState;\n normalizedSettingsReadWarnings: string[];\n settingWarnings: string[];\n normalizedItemReadWarnings: string[];\n telemetryCheck: HealthCheckResult;\n extensionCheck: HealthCheckResult;\n historyPolicyWarnings: string[];\n historySummary: HistoryStreamSummary;\n locksCheck: HealthCheckResult;\n integrityCheck: HealthCheckResult;\n historyDriftCheck: HealthCheckResult;\n vectorizationCheck: HealthCheckResult;\n}): string[] {\n const warnings = [\n ...params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),\n ...params.normalizedSettingsReadWarnings,\n ...params.settingWarnings,\n ...params.normalizedItemReadWarnings,\n ...params.telemetryCheck.warnings,\n ...params.extensionCheck.warnings,\n ...params.historyPolicyWarnings,\n ...params.historySummary.warnings,\n ...params.locksCheck.warnings,\n ...params.integrityCheck.warnings,\n ...params.historyDriftCheck.warnings,\n ...params.vectorizationCheck.warnings,\n ...params.directoryState.hookWarnings,\n ];\n return [...new Set(warnings)];\n}\n\nfunction extractHistoryDriftedCount(historyDriftCheck: HealthCheckResult): number {\n const counts = historyDriftCheck.check.details.counts as { drifted?: unknown } | undefined;\n return typeof counts?.drifted === \"number\" ? counts.drifted : 0;\n}\n\nfunction buildHealthRemediationSources(params: {\n directoryState: HealthDirectoryState;\n normalizedSettingsReadWarnings: string[];\n settingWarnings: string[];\n telemetryCheck: HealthCheckResult;\n extensionCheck: HealthCheckResult;\n historySummary: HistoryStreamSummary;\n locksCheck: HealthCheckResult;\n integrityCheck: HealthCheckResult;\n historyDriftCheck: HealthCheckResult;\n vectorizationCheck: HealthCheckResult;\n}): Record<HealthCheck[\"name\"], string[]> {\n return {\n settings: params.normalizedSettingsReadWarnings,\n directories: params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),\n settings_values: params.settingWarnings,\n telemetry: params.telemetryCheck.warnings,\n extensions: params.extensionCheck.warnings,\n storage: params.historySummary.over_threshold.map((id) => `history_stream_over_compact_threshold:${id}`),\n locks: params.locksCheck.warnings,\n integrity: params.integrityCheck.warnings,\n history_drift: params.historyDriftCheck.warnings,\n vectorization: params.vectorizationCheck.warnings,\n };\n}\n\nfunction rewriteBulkHealthRemediation(params: {\n check: HealthCheck;\n remediationMap: Record<string, string>;\n historyDriftedCount: number;\n overThresholdCount: number;\n}): void {\n if (params.check.name === \"history_drift\" && params.historyDriftedCount > 1) {\n for (const code of Object.keys(params.remediationMap)) {\n params.remediationMap[code] = \"pm history-repair --all\";\n }\n }\n if (params.check.name === \"storage\" && params.overThresholdCount > 1) {\n for (const code of Object.keys(params.remediationMap)) {\n params.remediationMap[code] = \"pm history-compact --all-streams\";\n }\n }\n}\n\nfunction attachHealthRemediationMaps(params: {\n checks: HealthCheck[];\n remediationSources: Record<HealthCheck[\"name\"], string[]>;\n historyDriftedCount: number;\n overThresholdCount: number;\n}): void {\n for (const check of params.checks) {\n const remediationMap = buildRemediationMap(params.remediationSources[check.name]);\n rewriteBulkHealthRemediation({\n check,\n remediationMap,\n historyDriftedCount: params.historyDriftedCount,\n overThresholdCount: params.overThresholdCount,\n });\n if (Object.keys(remediationMap).length > 0) {\n check.details = { ...check.details, remediation_map: remediationMap };\n }\n }\n}\n\nfunction projectHealthResult(result: HealthResult, options: RunHealthOptions, summaryMode: boolean): HealthResult {\n if (summaryMode) {\n return applySummaryHealthProjection(result);\n }\n return options.brief === true ? applyBriefHealthProjection(result) : result;\n}\n\n/**\n * Implements run health for the public runtime surface of this module.\n */\nexport async function runHealth(global: GlobalOptions, options: RunHealthOptions = {}): Promise<HealthResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const settingsPath = getSettingsPath(pmRoot);\n if (!(await pathExists(settingsPath))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);\n const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const strictDirectories = options.strictDirectories === true;\n const refreshPolicy = resolveVectorRefreshPolicy(options);\n const directoryState = await scanHealthDirectories(pmRoot, typeRegistry, strictDirectories);\n const settingWarnings = validateSettingsValues(settings);\n const telemetryCheck = await buildTelemetryCheck(settings, {\n checkTelemetry: options.checkTelemetry === true,\n });\n const extensionCheck = await buildExtensionCheck(pmRoot, settings, Boolean(global.noExtensions));\n const skipPolicy = resolveHealthSkipPolicy(options);\n const itemReadWarnings: string[] = [];\n const items = await readHealthItems({ pmRoot, settings, typeRegistry, skipPolicy, itemReadWarnings });\n const itemsWithBody = items as Array<ItemMetadata & { body: string }>;\n const normalizedItemReadWarnings = [...new Set(itemReadWarnings)];\n const historyPolicy = skipPolicy.skipDrift\n ? { warnings: [] }\n : await enforceHistoryStreamPolicyForItems({\n pmRoot,\n settings,\n itemIds: items.map((item) => item.id),\n commandLabel: \"health\",\n });\n const historySummary = await countHistoryStreams(pmRoot, settings.history.compact_policy);\n const locksCheck = await buildLocksCheck(pmRoot);\n const integrityCheck = skipPolicy.skipIntegrity\n ? buildSkippedHealthCheck(\"integrity\")\n : await buildIntegrityCheck(pmRoot, typeRegistry.type_to_folder, settings.schema);\n const historyDriftCheck = skipPolicy.skipDrift\n ? buildSkippedHealthCheck(\"history_drift\")\n : await buildHistoryDriftCheck(pmRoot, itemsWithBody);\n const vectorizationCheck = skipPolicy.skipVectors\n ? buildSkippedHealthCheck(\"vectorization\")\n : await buildVectorizationCheck(pmRoot, settings, itemsWithBody, refreshPolicy, options.verboseStaleItems === true);\n\n const checks: HealthCheck[] = [\n buildSettingsHealthCheck(settingsPath, settings, normalizedSettingsReadWarnings),\n buildDirectoriesHealthCheck(directoryState, strictDirectories),\n buildSettingsValuesHealthCheck(settingWarnings),\n telemetryCheck.check,\n extensionCheck.check,\n buildStorageHealthCheck(items, settings, historySummary),\n locksCheck.check,\n integrityCheck.check,\n historyDriftCheck.check,\n vectorizationCheck.check,\n ];\n\n const normalizedWarnings = collectHealthWarnings({\n directoryState,\n normalizedSettingsReadWarnings,\n settingWarnings,\n normalizedItemReadWarnings,\n telemetryCheck,\n extensionCheck,\n historyPolicyWarnings: historyPolicy.warnings,\n historySummary,\n locksCheck,\n integrityCheck,\n historyDriftCheck,\n vectorizationCheck,\n });\n attachHealthRemediationMaps({\n checks,\n remediationSources: buildHealthRemediationSources({\n directoryState,\n normalizedSettingsReadWarnings,\n settingWarnings,\n telemetryCheck,\n extensionCheck,\n historySummary,\n locksCheck,\n integrityCheck,\n historyDriftCheck,\n vectorizationCheck,\n }),\n historyDriftedCount: extractHistoryDriftedCount(historyDriftCheck),\n overThresholdCount: historySummary.over_threshold.length,\n });\n // Telemetry is an opt-out, non-critical observability feature. Its operational\n // state (queue backlog, unreachable endpoint, corrupt local state) is advisory:\n // it must never flip overall project health to not-ok. Such warnings are still\n // surfaced in `warnings` and the telemetry check's own `warn` status.\n const blockingWarnings = normalizedWarnings.filter((warning) => !isAdvisoryHealthWarning(warning));\n const result: HealthResult = {\n ok: blockingWarnings.length === 0,\n checks,\n warnings: normalizedWarnings,\n generated_at: nowIso(),\n };\n return projectHealthResult(result, options, skipPolicy.summaryMode);\n}\n\nexport const _testOnlyHealthCommand = {\n buildExtensionHealthTriageSummary,\n buildCapabilityContractMetadata,\n buildVectorizationProviderDetails,\n collectUnknownCapabilityGuidance,\n isAdvisoryHealthWarning,\n isDirectory,\n isExpectedUnmanagedExtension,\n listItemDocumentPaths,\n normalizeEndpointForDisplay,\n normalizeExtensionNameForMatch,\n parseTelemetryQueue,\n probeTelemetryEndpointHealth,\n selectStaleItemDetail,\n summarizeHealthCheckDetails,\n summarizeExtensionList,\n summarizeRecordList,\n summarizeStringList,\n telemetryEnvFlagEnabled,\n warningCode,\n};\n"],"names":[],"mappings":"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","debugId":"d078e1a2-2f92-566c-8ecd-542b2730a9b6"}
1
+ {"version":3,"file":"health.js","sources":["cli/commands/health.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/health\n *\n * Implements the pm health command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { activateExtensions, getActiveExtensionRegistrations, loadExtensions, runActiveOnReadHooks } from \"../../core/extensions/index.js\";\nimport { collectRegisteredItemFieldNames } from \"../../core/extensions/item-fields.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n type LoadedExtension,\n} from \"../../core/extensions/loader.js\";\nimport { enforceHistoryStreamPolicyForItems } from \"../../core/history/history-stream-policy.js\";\nimport { scanHistoryDrift } from \"../../core/history/drift-scan.js\";\nimport { scanLockHealth } from \"../../core/lock/lock-gc.js\";\nimport {\n readVectorizationStatusLedger,\n refreshSemanticEmbeddingsForMutatedItems,\n} from \"../../core/search/cache.js\";\nimport { resolveEmbeddingProviders, resolveProviderConfigSource } from \"../../core/search/providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"../../core/search/semantic-defaults.js\";\nimport { collectStaleVectorizationIds } from \"../../core/search/staleness.js\";\nimport {\n buildVectorizationEmbeddingIdentity,\n hasVectorizationEmbeddingIdentityChanged,\n} from \"../../core/search/vectorization-metadata.js\";\nimport { resolveVectorStores } from \"../../core/search/vector-stores.js\";\nimport { EXIT_CODE, PM_CORE_REQUIRED_SUBDIRS, PM_OPTIONAL_TYPE_SUBDIRS } from \"../../core/shared/constants.js\";\nimport { findFirstMergeConflictMarker } from \"../../core/shared/conflict-markers.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toNonEmptyStringOrUndefined } from \"../../core/shared/primitives.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { parseItemDocument } from \"../../core/item/item-format.js\";\nimport { effectiveItemFormatVersion, scanItemFormatVersions } from \"../../core/item/item-format-version.js\";\nimport { listAllFrontMatter, listAllFrontMatterWithBody } from \"../../core/store/item-store.js\";\nimport {\n PM_TELEMETRY_SOURCE_CONTEXT_VALUES,\n TELEMETRY_MAX_QUEUE_ENTRY_ATTEMPTS,\n TELEMETRY_SCHEMA_VERSION,\n} from \"../../core/telemetry/runtime.js\";\n\nconst PM_TELEMETRY_SOURCE_CONTEXT_SET = new Set<string>(PM_TELEMETRY_SOURCE_CONTEXT_VALUES);\nimport {\n getItemFormatFromPath,\n getSettingsPath,\n ITEM_FILE_EXTENSIONS,\n resolveGlobalPmRoot,\n resolvePmRoot,\n} from \"../../core/store/paths.js\";\nimport { readSettingsWithMetadata } from \"../../core/store/settings.js\";\nimport { buildRemediationMap } from \"../../core/diagnostics/remediation.js\";\nimport type { HistoryCompactPolicy, ItemFormat, ItemMetadata, PmSettings } from \"../../types/index.js\";\nimport { readManagedExtensionState } from \"./extension.js\";\nimport {\n buildCapabilityContractMetadata,\n buildRegistrationCollisionRemediation,\n collectUnknownCapabilityGuidance,\n} from \"./extension/doctor.js\";\n\ntype HealthStatus = \"ok\" | \"warn\";\ntype MigrationRuntimeStatus = \"pending\" | \"failed\" | \"applied\";\n\n/**\n * Documents the health check payload exchanged by command, SDK, and package integrations.\n */\nexport interface HealthCheck {\n name:\n | \"settings\"\n | \"directories\"\n | \"settings_values\"\n | \"telemetry\"\n | \"extensions\"\n | \"storage\"\n | \"locks\"\n | \"integrity\"\n | \"history_drift\"\n | \"vectorization\";\n status: HealthStatus;\n details: Record<string, unknown>;\n}\n\n/**\n * Documents the health result payload exchanged by command, SDK, and package integrations.\n */\nexport interface HealthResult {\n ok: boolean;\n checks: HealthCheck[];\n warning_count?: number;\n warnings: string[];\n projection?: {\n mode: \"brief\" | \"summary\" | \"full\";\n warning_count: number;\n warnings_truncated: boolean;\n detail_limit: number;\n omitted_checks?: HealthCheck[\"name\"][];\n };\n generated_at: string;\n}\n\n/**\n * Documents the run health options payload exchanged by command, SDK, and package integrations.\n */\nexport interface RunHealthOptions {\n strictDirectories?: boolean;\n checkOnly?: boolean;\n checkTelemetry?: boolean;\n noRefresh?: boolean;\n refreshVectors?: boolean;\n verboseStaleItems?: boolean;\n skipVectors?: boolean;\n skipIntegrity?: boolean;\n skipDrift?: boolean;\n full?: boolean;\n brief?: boolean;\n summary?: boolean;\n}\n\ninterface VectorRefreshPolicy {\n enabled: boolean;\n checkOnly: boolean;\n noRefresh: boolean;\n refreshVectors: boolean;\n}\n\ninterface MigrationStatusEntry {\n layer: \"global\" | \"project\";\n name: string;\n id: string;\n status: MigrationRuntimeStatus;\n reason?: string;\n}\n\ninterface MigrationStatusSummary {\n applied: MigrationStatusEntry[];\n pending: MigrationStatusEntry[];\n failed: MigrationStatusEntry[];\n applied_count: number;\n pending_count: number;\n failed_count: number;\n}\n\ninterface ExtensionHealthTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n load_failure_count: number;\n activation_failure_count: number;\n migration_failed_count: number;\n migration_pending_count: number;\n managed_state_warning_count: number;\n managed_extension_entries_count: number;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unknown_capability_count: number;\n top_warnings: string[];\n remediation: string[];\n}\n\ntype ItemWithBody = Awaited<ReturnType<typeof listAllFrontMatterWithBody>>[number];\nconst STALE_VECTORIZATION_SUMMARY_LIMIT = 25;\nconst BRIEF_HEALTH_DETAIL_LIMIT = 8;\nconst TELEMETRY_QUEUE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"events.jsonl\");\nconst TELEMETRY_STATE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"state.json\");\nconst TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS = 2_500;\nconst TELEMETRY_QUEUE_HIGH_WATER_MARK = 500;\nconst TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD = TELEMETRY_MAX_QUEUE_ENTRY_ATTEMPTS - 3;\nconst TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS = [\n \"x-pm-telemetry-max-schema-version\",\n \"x-pm-telemetry-max-version\",\n] as const;\n\n/**\n * Advisory warnings are surfaced for visibility but never flip overall health to\n * not-ok. Telemetry is opt-out, non-critical observability: a queued/unreachable\n * telemetry endpoint or corrupt local telemetry state is not a project-health\n * failure and must not block agents that gate on `pm health` `ok`. History\n * over-compaction-threshold warnings are likewise advisory maintenance hints —\n * a deep stream is healthy, just a candidate for `pm history-compact`.\n */\nfunction isAdvisoryHealthWarning(warning: string): boolean {\n return warning.startsWith(\"telemetry_\") || warning.startsWith(\"history_stream_over_compact_threshold:\");\n}\n\nfunction warningCode(value: string): string {\n const normalized = value.trim();\n const separator = normalized.indexOf(\":\");\n if (separator === -1) {\n return normalized;\n }\n return normalized.slice(0, separator);\n}\n\nfunction normalizeExtensionNameForMatch(value: string): string {\n return value.trim().toLowerCase();\n}\n\nfunction isExpectedUnmanagedExtension(name: string, directory: string): boolean {\n const normalizedName = normalizeExtensionNameForMatch(name);\n const normalizedDirectory = normalizeExtensionNameForMatch(directory);\n if (normalizedName.startsWith(\"builtin-\")) {\n return true;\n }\n return normalizedDirectory === \"beads\" || normalizedDirectory === \"todos\";\n}\n\nasync function isDirectory(targetPath: string): Promise<boolean> {\n try {\n const stats = await fs.stat(targetPath);\n return stats.isDirectory();\n } catch {\n return false;\n }\n}\n\n/**\n * Summary of the history-stream directory used by the storage health check.\n * `over_threshold` is populated only when the compaction policy is enabled —\n * counting entries requires reading every stream, so the default (policy-off)\n * path stays a cheap directory listing.\n */\ninterface HistoryStreamSummary {\n count: number;\n warnings: string[];\n over_threshold: string[];\n max_entries: number | null;\n}\n\nasync function countHistoryStreams(\n pmRoot: string,\n compactPolicy: HistoryCompactPolicy,\n): Promise<HistoryStreamSummary> {\n const historyDir = path.join(pmRoot, \"history\");\n if (!(await isDirectory(historyDir))) {\n return { count: 0, warnings: [], over_threshold: [], max_entries: null };\n }\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((left, right) => left.localeCompare(right));\n\n const policyActive = compactPolicy.enabled;\n const maxEntries = policyActive ? compactPolicy.max_entries : null;\n const warnings: string[] = [];\n const overThreshold: string[] = [];\n for (const fileName of historyFiles) {\n const streamPath = path.join(historyDir, fileName);\n warnings.push(...(await runActiveOnReadHooks({ path: streamPath, scope: \"project\" })));\n if (!policyActive) {\n continue;\n }\n const raw = await fs.readFile(streamPath, \"utf8\");\n let entries = 0;\n for (const line of raw.split(/\\r?\\n/)) {\n if (line.trim().length > 0) {\n entries += 1;\n }\n }\n if (entries > compactPolicy.max_entries) {\n overThreshold.push(fileName.slice(0, -\".jsonl\".length));\n }\n }\n\n return {\n count: historyFiles.length,\n warnings: [...warnings, ...overThreshold.map((id) => `history_stream_over_compact_threshold:${id}`)],\n over_threshold: overThreshold,\n max_entries: maxEntries,\n };\n}\n\nfunction normalizeRelativePath(pmRoot: string, targetPath: string): string {\n return path.relative(pmRoot, targetPath).replaceAll(\"\\\\\", \"/\");\n}\n\nasync function listItemDocumentPaths(pmRoot: string, typeToFolder: Record<string, string>): Promise<string[]> {\n const folders = [...new Set(Object.values(typeToFolder))].sort((left, right) => left.localeCompare(right));\n const itemPaths: string[] = [];\n for (const folder of folders) {\n const directoryPath = path.join(pmRoot, folder);\n let entries: string[] = [];\n try {\n entries = await fs.readdir(directoryPath);\n } catch (error: unknown) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\") {\n continue;\n }\n continue;\n }\n for (const entry of entries) {\n if (!ITEM_FILE_EXTENSIONS.some((extension) => entry.toLowerCase().endsWith(extension))) {\n continue;\n }\n itemPaths.push(path.join(directoryPath, entry));\n }\n }\n itemPaths.sort((left, right) => normalizeRelativePath(pmRoot, left).localeCompare(normalizeRelativePath(pmRoot, right)));\n return itemPaths;\n}\n\nfunction shouldReportHistoryDirectoryUnreadable(error: unknown): boolean {\n return !(typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\");\n}\n\nasync function buildIntegrityCheck(\n pmRoot: string,\n typeToFolder: Record<string, string>,\n schema: PmSettings[\"schema\"],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const itemPaths = await listItemDocumentPaths(pmRoot, typeToFolder);\n const itemUnreadable: string[] = [];\n const itemConflictMarkers: Array<{ path: string; line: number; marker: string }> = [];\n const itemParseFailures: string[] = [];\n const formatVersionEntries: Array<{ ref: string; version: number }> = [];\n const extensionFieldNames = collectRegisteredItemFieldNames(getActiveExtensionRegistrations());\n\n for (const itemPath of itemPaths) {\n const relativePath = normalizeRelativePath(pmRoot, itemPath);\n let raw = \"\";\n try {\n raw = await fs.readFile(itemPath, \"utf8\");\n } catch {\n itemUnreadable.push(relativePath);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n itemConflictMarkers.push({\n path: relativePath,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n try {\n const parsed = parseItemDocument(raw, { format: getItemFormatFromPath(itemPath) as ItemFormat, schema, extensionFieldNames });\n formatVersionEntries.push({ ref: relativePath, version: effectiveItemFormatVersion(parsed.metadata) });\n } catch {\n itemParseFailures.push(relativePath);\n }\n }\n const formatVersionScan = scanItemFormatVersions(formatVersionEntries);\n\n const historyDir = path.join(pmRoot, \"history\");\n const historyUnreadable: string[] = [];\n const historyConflictMarkers: Array<{ id: string; line: number; marker: string }> = [];\n const historyInvalidJson: Array<{ id: string; line: number }> = [];\n let historyFiles: string[] = [];\n try {\n historyFiles = (await fs.readdir(historyDir)).filter((entry) => entry.endsWith(\".jsonl\")).sort((left, right) => left.localeCompare(right));\n } catch (error: unknown) {\n /* c8 ignore start -- ENOENT/non-ENOENT differentiation requires filesystem fault injection */\n if (shouldReportHistoryDirectoryUnreadable(error)) {\n historyUnreadable.push(\"history\");\n }\n /* c8 ignore stop */\n }\n for (const fileName of historyFiles) {\n const itemId = fileName.slice(0, -\".jsonl\".length);\n const historyPath = path.join(historyDir, fileName);\n let raw = \"\";\n try {\n raw = await fs.readFile(historyPath, \"utf8\");\n } catch {\n historyUnreadable.push(itemId);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n historyConflictMarkers.push({\n id: itemId,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n const lines = raw.split(/\\r?\\n/);\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index]?.trim();\n if (!line) {\n continue;\n }\n try {\n JSON.parse(line);\n } catch {\n historyInvalidJson.push({\n id: itemId,\n line: index + 1,\n });\n }\n }\n }\n\n const warnings = [\n ...itemUnreadable.map((entry) => `integrity_item_unreadable:${entry}`),\n ...itemConflictMarkers.map((entry) => `integrity_item_conflict_marker:${entry.path}:L${entry.line}`),\n ...itemParseFailures.map((entry) => `integrity_item_parse_failed:${entry}`),\n ...historyUnreadable.map((entry) => `integrity_history_unreadable:${entry}`),\n ...historyConflictMarkers.map((entry) => `integrity_history_conflict_marker:${entry.id}:L${entry.line}`),\n ...historyInvalidJson.map((entry) => `integrity_history_invalid_json:${entry.id}:L${entry.line}`),\n /* c8 ignore start -- outdated-version items are unreachable until CURRENT_ITEM_FORMAT_VERSION advances past the baseline (an effective version below 1 cannot occur); the per-item mapping is covered in item-format-version.spec, and the ahead path below is covered by health-command.spec */\n ...formatVersionScan.outdated.map((entry) => `integrity_item_outdated_format_version:${entry}`),\n /* c8 ignore stop */\n ...formatVersionScan.ahead.map((entry) => `integrity_item_ahead_format_version:${entry}`),\n ];\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n\n return {\n check: {\n name: \"integrity\",\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_item_files: itemPaths.length,\n checked_history_streams: historyFiles.length,\n counts: {\n item_unreadable: itemUnreadable.length,\n item_conflict_markers: itemConflictMarkers.length,\n item_parse_failures: itemParseFailures.length,\n history_unreadable: historyUnreadable.length,\n history_conflict_markers: historyConflictMarkers.length,\n history_invalid_json: historyInvalidJson.length,\n item_outdated_format_version: formatVersionScan.outdated.length,\n item_ahead_format_version: formatVersionScan.ahead.length,\n },\n item_unreadable: itemUnreadable,\n item_conflict_markers: itemConflictMarkers,\n item_parse_failures: itemParseFailures,\n item_outdated_format_version: formatVersionScan.outdated,\n item_ahead_format_version: formatVersionScan.ahead,\n history_unreadable: historyUnreadable,\n history_conflict_markers: historyConflictMarkers,\n history_invalid_json: historyInvalidJson,\n },\n },\n warnings: normalizedWarnings,\n };\n}\n\n/* c8 ignore start -- activate export shape variants are exercised through integration load tests */\nfunction hasActivateExport(moduleRecord: Record<string, unknown>): boolean {\n if (typeof moduleRecord.activate === \"function\") {\n return true;\n }\n const defaultExport = moduleRecord.default;\n if (typeof defaultExport !== \"object\" || defaultExport === null) {\n return false;\n }\n return typeof (defaultExport as Record<string, unknown>).activate === \"function\";\n}\n/* c8 ignore stop */\n\nfunction summarizeLoadedExtension(extension: LoadedExtension): Record<string, unknown> {\n const summary: Record<string, unknown> = {\n layer: extension.layer,\n directory: extension.directory,\n manifest_path: extension.manifest_path,\n name: extension.name,\n version: extension.version,\n entry: extension.entry,\n priority: extension.priority,\n entry_path: extension.entry_path,\n has_activate: hasActivateExport(extension.module as Record<string, unknown>),\n };\n /* c8 ignore start -- capability list optionality is exercised by extension load integration suites */\n if (Array.isArray(extension.capabilities)) {\n summary.capabilities = [...extension.capabilities];\n }\n /* c8 ignore stop */\n return summary;\n}\n\nfunction resolveMigrationId(definition: Record<string, unknown>, fallbackIndex: number): string {\n const explicitId = toNonEmptyStringOrUndefined(definition.id);\n if (explicitId) {\n return explicitId;\n }\n return `migration-${String(fallbackIndex + 1).padStart(3, \"0\")}`;\n}\n\nfunction resolveMigrationStatus(definition: Record<string, unknown>): MigrationRuntimeStatus {\n const rawStatus = toNonEmptyStringOrUndefined(definition.status);\n const normalized = rawStatus?.toLowerCase();\n if (normalized === \"failed\") {\n return \"failed\";\n }\n if (normalized === \"applied\") {\n return \"applied\";\n }\n return \"pending\";\n}\n\nfunction resolveMigrationFailureReason(definition: Record<string, unknown>): string | undefined {\n return toNonEmptyStringOrUndefined(definition.reason) ?? toNonEmptyStringOrUndefined(definition.error) ?? toNonEmptyStringOrUndefined(definition.message);\n}\n\n/* c8 ignore start -- comparator tie-break branches are deterministic ordering glue exercised via migration integration tests */\nfunction compareMigrationEntries(left: MigrationStatusEntry, right: MigrationStatusEntry): number {\n const byLayer = (left.layer ?? \"\").localeCompare(right.layer ?? \"\");\n if (byLayer !== 0) {\n return byLayer;\n }\n const byName = (left.name ?? \"\").localeCompare(right.name ?? \"\");\n if (byName !== 0) {\n return byName;\n }\n return (left.id ?? \"\").localeCompare(right.id ?? \"\");\n}\n/* c8 ignore stop */\n\nfunction summarizeMigrationStatuses(\n migrations: Array<{\n layer: \"global\" | \"project\";\n name: string;\n definition: Record<string, unknown>;\n }>,\n): { summary: MigrationStatusSummary; warnings: string[] } {\n const applied: MigrationStatusEntry[] = [];\n const pending: MigrationStatusEntry[] = [];\n const failed: MigrationStatusEntry[] = [];\n\n migrations.forEach((migration, index) => {\n const id = resolveMigrationId(migration.definition, index);\n const status = resolveMigrationStatus(migration.definition);\n if (status === \"applied\") {\n applied.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n return;\n }\n if (status === \"failed\") {\n failed.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n reason: resolveMigrationFailureReason(migration.definition),\n });\n return;\n }\n pending.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n });\n\n applied.sort(compareMigrationEntries);\n pending.sort(compareMigrationEntries);\n failed.sort(compareMigrationEntries);\n\n const warnings = [\n ...failed.map((entry) => `extension_migration_failed:${entry.layer}:${entry.name}:${entry.id}`),\n ...pending.map((entry) => `extension_migration_pending:${entry.layer}:${entry.name}:${entry.id}`),\n ];\n\n return {\n summary: {\n applied,\n pending,\n failed,\n applied_count: applied.length,\n pending_count: pending.length,\n failed_count: failed.length,\n },\n warnings,\n };\n}\n\nfunction buildExtensionHealthTriageSummary(\n warnings: string[],\n loadFailureCount: number,\n activationFailureCount: number,\n migrationStatus: MigrationStatusSummary,\n managedStateWarningCount: number,\n managedExtensionEntriesCount: number,\n unmanagedLoadedExtensions: string[],\n unmanagedExpectedExtensions: string[],\n unmanagedActionRequiredExtensions: string[],\n): ExtensionHealthTriageSummary {\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n const warningCodes = [...new Set(normalizedWarnings.map((value) => warningCode(value)))].sort((left, right) =>\n left.localeCompare(right),\n );\n const unknownCapabilityCount = normalizedWarnings.filter((warning) => warning.startsWith(\"extension_capability_unknown:\")).length;\n const updateHealthPartial = unmanagedActionRequiredExtensions.length > 0;\n const updateHealthCoverage = updateHealthPartial ? \"partial\" : \"full\";\n const remediation: string[] = [];\n const registrationCollisionRemediation = buildRegistrationCollisionRemediation(normalizedWarnings, {\n deactivate: \"pm extension --deactivate <name> --project/--global\",\n doctor: \"pm extension --doctor --project/--global --detail deep --trace\",\n });\n if (registrationCollisionRemediation) {\n remediation.push(registrationCollisionRemediation);\n }\n if (loadFailureCount > 0) {\n remediation.push(\"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\");\n }\n if (activationFailureCount > 0) {\n remediation.push(\"Review checks[name=extensions].details.activation.failed in pm health --json for activation error details.\");\n }\n if (migrationStatus.failed_count > 0 || migrationStatus.pending_count > 0) {\n remediation.push(\"Resolve pending/failed extension migrations before write commands; use --force only when policy allows.\");\n }\n if (managedStateWarningCount > 0) {\n remediation.push(\"Run pm extension --manage --project and pm extension --manage --global to refresh managed-state diagnostics.\");\n }\n if (unknownCapabilityCount > 0) {\n remediation.push(\n `Unknown extension capabilities detected. Allowed capabilities: ${KNOWN_EXTENSION_CAPABILITIES.join(\", \")}. ` +\n \"Review extension_capability_unknown warning details for suggested replacements.\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_capability_legacy_alias:\"))) {\n remediation.push(\n \"Legacy extension capability aliases were auto-remapped to canonical capabilities. \" +\n \"Update manifests to canonical names (migration/validation -> schema).\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_command_definition_legacy_handler_alias:\"))) {\n remediation.push(\n \"Extension command definitions using legacy handler were auto-remapped. \" +\n \"Update command definitions to use run: (context) => ... for forward compatibility.\",\n );\n }\n if (updateHealthPartial) {\n remediation.push(\n \"Update-check coverage is partial because unmanaged extensions need adoption. Adopt existing installs via pm extension --manage --project/--global --fix-managed-state, pm extension --adopt-all --project/--global, or pm extension --adopt <name>.\",\n );\n } else if (unmanagedLoadedExtensions.length > 0) {\n remediation.push(\n \"Loaded unmanaged extensions are currently treated as informational. Use pm extension --manage --project/--global --fix-managed-state to adopt them for update checks.\",\n );\n }\n if (remediation.length === 0) {\n remediation.push(\"No immediate action required. Re-run pm health after extension configuration changes.\");\n }\n return {\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n warning_count: normalizedWarnings.length,\n warning_codes: warningCodes,\n load_failure_count: loadFailureCount,\n activation_failure_count: activationFailureCount,\n migration_failed_count: migrationStatus.failed_count,\n migration_pending_count: migrationStatus.pending_count,\n managed_state_warning_count: managedStateWarningCount,\n managed_extension_entries_count: managedExtensionEntriesCount,\n unmanaged_loaded_extension_count: unmanagedLoadedExtensions.length,\n unmanaged_loaded_extensions: unmanagedLoadedExtensions,\n unmanaged_expected_extension_count: unmanagedExpectedExtensions.length,\n unmanaged_expected_extensions: unmanagedExpectedExtensions,\n unmanaged_action_required_extension_count: unmanagedActionRequiredExtensions.length,\n unmanaged_action_required_extensions: unmanagedActionRequiredExtensions,\n update_health_coverage: updateHealthCoverage,\n update_health_partial: updateHealthPartial,\n unknown_capability_count: unknownCapabilityCount,\n top_warnings: normalizedWarnings.slice(0, 8),\n remediation,\n };\n}\n\nasync function buildExtensionCheck(\n pmRoot: string,\n settings: PmSettings,\n noExtensionsFlag: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: noExtensionsFlag,\n });\n const loadedSummaries = loadResult.loaded.map((extension) => summarizeLoadedExtension(extension));\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n const [projectManagedState, globalManagedState] = await Promise.all([\n readManagedExtensionState(loadResult.roots.project),\n readManagedExtensionState(loadResult.roots.global),\n ]);\n const migrationStatus = summarizeMigrationStatuses(activationResult.registrations.migrations);\n const activationDetails = {\n failed: activationResult.failed,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n command_override_count: activationResult.command_override_count,\n command_handler_count: activationResult.command_handler_count,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n registration_counts: activationResult.registration_counts,\n registrations: activationResult.registrations,\n migration_status: migrationStatus.summary,\n managed_extensions: {\n project: {\n path: projectManagedState.path,\n count: projectManagedState.state.entries.length,\n entries: projectManagedState.state.entries,\n },\n global: {\n path: globalManagedState.path,\n count: globalManagedState.state.entries.length,\n entries: globalManagedState.state.entries,\n },\n },\n };\n /* c8 ignore start -- unmanaged/expected grouping matrices are exercised in doctor + extension integration suites */\n const managedProjectNames = new Set(\n projectManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)),\n );\n const managedGlobalNames = new Set(globalManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)));\n const unmanagedLoadedEntries = [\n ...new Map(\n loadResult.loaded\n .filter((entry) => {\n const managedNames = entry.layer === \"project\" ? managedProjectNames : managedGlobalNames;\n return !managedNames.has(normalizeExtensionNameForMatch(entry.name));\n })\n .map((entry) => [\n `${entry.layer}:${entry.name}`,\n {\n layer: entry.layer,\n name: entry.name,\n directory: entry.directory,\n },\n ]),\n ).values(),\n ].sort((left, right) => {\n const leftKey = `${left.layer}:${left.name}`;\n const rightKey = `${right.layer}:${right.name}`;\n return leftKey.localeCompare(rightKey);\n });\n const unmanagedLoadedExtensions = unmanagedLoadedEntries\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedExpectedExtensions = unmanagedLoadedEntries\n .filter((entry) => isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedActionRequiredExtensions = unmanagedLoadedEntries\n .filter((entry) => !isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n /* c8 ignore stop */\n const updateCoverageWarnings =\n unmanagedActionRequiredExtensions.length > 0\n ? [`extension_update_health_partial_coverage:skipped_unmanaged:${unmanagedActionRequiredExtensions.length}`]\n : [];\n const extensionWarnings = [\n ...loadResult.warnings,\n ...activationDetails.warnings,\n ...migrationStatus.warnings,\n ...projectManagedState.warnings,\n ...globalManagedState.warnings,\n ...updateCoverageWarnings,\n ];\n const capabilityGuidance = collectUnknownCapabilityGuidance(extensionWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const extensionTriage = buildExtensionHealthTriageSummary(\n extensionWarnings,\n loadResult.failed.length,\n activationResult.failed.length,\n migrationStatus.summary,\n projectManagedState.warnings.length + globalManagedState.warnings.length,\n projectManagedState.state.entries.length + globalManagedState.state.entries.length,\n unmanagedLoadedExtensions,\n unmanagedExpectedExtensions,\n unmanagedActionRequiredExtensions,\n );\n\n return {\n check: {\n name: \"extensions\",\n status: extensionWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n ...loadResult,\n loaded: loadedSummaries,\n warnings: extensionWarnings,\n activation: activationDetails,\n triage: extensionTriage,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n } as Record<string, unknown>,\n },\n warnings: extensionWarnings,\n };\n}\n\nfunction summarizeList(values: string[], limit: number): { values: string[]; truncated: boolean } {\n if (values.length <= limit) {\n return { values, truncated: false };\n }\n return {\n values: values.slice(0, limit),\n truncated: true,\n };\n}\n\nfunction summarizeRecordList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n return {\n count: value.length,\n sample: value.slice(0, limit),\n truncated: value.length > limit,\n };\n}\n\nfunction summarizeExtensionRecord(value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {};\n }\n const record = value as Record<string, unknown>;\n return {\n layer: record.layer,\n directory: record.directory,\n name: record.name,\n version: record.version,\n enabled: record.enabled,\n status: record.status,\n has_activate: record.has_activate,\n capabilities: record.capabilities,\n };\n}\n\nfunction summarizeExtensionList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n const summary = summarizeRecordList(value, limit);\n return {\n ...summary,\n sample: summary.sample.map((entry) => summarizeExtensionRecord(entry)),\n };\n}\n\nfunction summarizeStringList(value: unknown, limit: number): { count: number; sample: string[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n const strings = value.filter((entry): entry is string => typeof entry === \"string\");\n return {\n count: strings.length,\n sample: strings.slice(0, limit),\n truncated: strings.length > limit,\n };\n}\n\ntype HealthDetailSummarizer = (details: Record<string, unknown>, limit: number) => Record<string, unknown>;\n\nfunction summarizeActivationMigrationStatus(value: unknown): Record<string, unknown> | null {\n if (typeof value !== \"object\" || value === null) {\n return null;\n }\n const status = value as Record<string, unknown>;\n return {\n applied_count: status.applied_count,\n pending_count: status.pending_count,\n failed_count: status.failed_count,\n };\n}\n\nconst HEALTH_DETAIL_SUMMARIZERS = {\n settings: (details, limit) => ({\n version: details.version,\n id_prefix: details.id_prefix,\n locks_ttl_seconds: details.locks_ttl_seconds,\n warnings: summarizeStringList(details.warnings, limit),\n }),\n directories: (details, limit) => ({\n required_count: Array.isArray(details.required) ? details.required.length : 0,\n optional_count: Array.isArray(details.optional) ? details.optional.length : 0,\n missing_required: summarizeStringList(details.missing_required, limit),\n missing_optional: summarizeStringList(details.missing_optional, limit),\n missing: summarizeStringList(details.missing, limit),\n strict_directories: details.strict_directories,\n }),\n settings_values: (details, limit) => ({\n warnings: summarizeStringList(details.warnings, limit),\n }),\n telemetry: (details) => ({\n enabled: details.enabled,\n capture_level: details.capture_level,\n endpoint: details.endpoint,\n queue_exists: details.queue_exists,\n queue_entries: details.queue_entries,\n queue_draining: details.queue_draining,\n queue_invalid_rows: details.queue_invalid_rows,\n queue_rows_total: details.queue_rows_total,\n last_successful_flush_at: details.last_successful_flush_at,\n last_failed_flush_at: details.last_failed_flush_at,\n endpoint_probe: details.endpoint_probe,\n env_overrides: details.env_overrides,\n }),\n extensions: (details, limit) => {\n const activation = typeof details.activation === \"object\" && details.activation !== null ? (details.activation as Record<string, unknown>) : {};\n return {\n disabled_by_flag: details.disabled_by_flag,\n discovered: summarizeExtensionList(details.discovered, limit),\n effective: summarizeExtensionList(details.effective, limit),\n loaded: summarizeExtensionList(details.loaded, limit),\n failed: summarizeRecordList(details.failed, limit),\n warnings: summarizeStringList(details.warnings, limit),\n activation: {\n failed: summarizeRecordList(activation.failed, limit),\n warnings: summarizeStringList(activation.warnings, limit),\n hook_counts: activation.hook_counts,\n command_handler_count: activation.command_handler_count,\n service_override_count: activation.service_override_count,\n renderer_override_count: activation.renderer_override_count,\n registration_counts: activation.registration_counts,\n migration_status: summarizeActivationMigrationStatus(activation.migration_status),\n },\n triage: details.triage,\n capability_contract: details.capability_contract,\n capability_guidance: summarizeRecordList(details.capability_guidance, limit),\n };\n },\n // Storage details are already compact counters; keep the pre-refactor pass-through shape.\n storage: (details) => details,\n locks: (details) => ({\n active_lock_count: details.active_lock_count,\n stale_lock_count: details.stale_lock_count,\n unreadable_lock_count: details.unreadable_lock_count,\n unparseable_lock_count: details.unparseable_lock_count,\n }),\n integrity: (details, limit) => ({\n checked_item_files: details.checked_item_files,\n checked_history_streams: details.checked_history_streams,\n counts: details.counts,\n item_unreadable: summarizeStringList(details.item_unreadable, limit),\n item_conflict_markers: summarizeRecordList(details.item_conflict_markers, limit),\n item_parse_failures: summarizeStringList(details.item_parse_failures, limit),\n history_unreadable: summarizeStringList(details.history_unreadable, limit),\n history_conflict_markers: summarizeRecordList(details.history_conflict_markers, limit),\n history_invalid_json: summarizeRecordList(details.history_invalid_json, limit),\n skipped: details.skipped,\n }),\n history_drift: (details, limit) => ({\n checked_items: details.checked_items,\n counts: details.counts,\n drifted_items: summarizeStringList(details.drifted_items, limit),\n missing_streams: summarizeStringList(details.missing_streams, limit),\n unreadable_streams: summarizeStringList(details.unreadable_streams, limit),\n hash_mismatches: summarizeStringList(details.hash_mismatches, limit),\n chain_mismatches: summarizeStringList(details.chain_mismatches, limit),\n skipped: details.skipped,\n }),\n vectorization: (details, limit) => ({\n semantic_runtime_available: details.semantic_runtime_available,\n compatibility_mode_auto_defaults: details.compatibility_mode_auto_defaults,\n auto_ollama_defaults_applied: details.auto_ollama_defaults_applied,\n auto_ollama_defaults_skipped_reason: details.auto_ollama_defaults_skipped_reason,\n auto_ollama_defaults_remediation: details.auto_ollama_defaults_remediation,\n refresh_policy: details.refresh_policy,\n provider_active: details.provider_active,\n vector_store_active: details.vector_store_active,\n items: details.items,\n ledger_entries_before: details.ledger_entries_before,\n stale_items_before_total: details.stale_items_before_total,\n stale_items_before: summarizeStringList(details.stale_items_before, limit),\n refresh_attempted: details.refresh_attempted,\n refresh_skipped_reason: details.refresh_skipped_reason,\n refresh_result: details.refresh_result,\n ledger_entries_after: details.ledger_entries_after,\n stale_items_after_total: details.stale_items_after_total,\n stale_items_after: summarizeStringList(details.stale_items_after, limit),\n skipped: details.skipped,\n }),\n} satisfies Record<HealthCheck[\"name\"], HealthDetailSummarizer>;\n\n/* c8 ignore start -- brief/summary projection matrix branches are validated in projection integration tests */\nfunction summarizeHealthCheckDetails(check: HealthCheck, limit: number): Record<string, unknown> {\n const summarize = HEALTH_DETAIL_SUMMARIZERS[check.name];\n return summarize ? summarize(check.details, limit) : check.details;\n}\n/* c8 ignore stop */\n\nfunction applyBriefHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n return {\n ok: result.ok,\n checks: result.checks.map((check) => ({\n name: check.name,\n status: check.status,\n details: summarizeHealthCheckDetails(check, BRIEF_HEALTH_DETAIL_LIMIT),\n })),\n warnings: warningsSummary.sample,\n projection: {\n mode: \"brief\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction isSkippedHealthCheck(check: HealthCheck): boolean {\n return check.details.skipped === true;\n}\n\nfunction applySummaryHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n const omittedChecks = result.checks.filter(isSkippedHealthCheck).map((check) => check.name);\n return {\n ok: result.ok,\n checks: result.checks\n .filter((check) => !isSkippedHealthCheck(check))\n .map((check) => ({\n name: check.name,\n status: check.status,\n details: {},\n })),\n warning_count: warningsSummary.count,\n warnings: warningsSummary.sample,\n projection: {\n mode: \"summary\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n omitted_checks: omittedChecks,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction selectStaleItemDetail(\n values: string[],\n verboseStaleItems: boolean,\n): {\n values: string[];\n truncated: boolean;\n total: number;\n} {\n if (verboseStaleItems) {\n return {\n values,\n truncated: false,\n total: values.length,\n };\n }\n const summary = summarizeList(values, STALE_VECTORIZATION_SUMMARY_LIMIT);\n return {\n values: summary.values,\n truncated: summary.truncated,\n total: values.length,\n };\n}\n\ntype VectorizationRuntimeDefaults = ReturnType<typeof resolveSettingsWithSemanticRuntimeDefaults>;\ntype VectorizationProviderResolution = ReturnType<typeof resolveEmbeddingProviders>;\ntype VectorizationStoreResolution = ReturnType<typeof resolveVectorStores>;\ntype VectorizationLedger = Awaited<ReturnType<typeof readVectorizationStatusLedger>>;\ntype VectorizationRefreshResult = Awaited<ReturnType<typeof refreshSemanticEmbeddingsForMutatedItems>>;\n\ninterface VectorizationRuntimeSnapshot {\n runtimeDefaults: VectorizationRuntimeDefaults;\n providerResolution: VectorizationProviderResolution;\n vectorStoreResolution: VectorizationStoreResolution;\n runtimeEmbeddingIdentity: ReturnType<typeof buildVectorizationEmbeddingIdentity> | null;\n semanticRuntimeAvailable: boolean;\n}\n\ninterface TelemetryRuntimeStateRecord {\n endpoint?: string;\n queue_entries?: number;\n last_attempted_flush_at?: string;\n last_successful_flush_at?: string;\n last_failed_flush_at?: string;\n last_failed_flush_error?: string;\n pending_otel_spans?: number;\n last_otel_attempt_at?: string;\n last_otel_success_at?: string;\n last_otel_failure_at?: string;\n last_otel_failure_error?: string;\n}\n\nfunction telemetryEnvFlagEnabled(\n envKey: \"PM_TELEMETRY_DISABLED\" | \"PM_TELEMETRY_OTEL_DISABLED\" | \"PM_NO_TELEMETRY\" | \"PM_TELEMETRY_INLINE_FLUSH\",\n): boolean {\n const value = (process.env[envKey] ?? \"\").trim().toLowerCase();\n return value === \"1\" || value === \"true\" || value === \"yes\" || value === \"on\";\n}\n\n/* c8 ignore start -- environment override permutations are covered by runtime integration tests */\nfunction telemetrySourceContextOverride(): string | null {\n // Only report an override the runtime actually honours: runtime.ts ignores any\n // value outside the enum and falls back to the inferred context, so health must\n // report null for an unrecognized value rather than implying it took effect.\n const value = (process.env.PM_TELEMETRY_SOURCE_CONTEXT ?? \"\").trim().toLowerCase();\n return PM_TELEMETRY_SOURCE_CONTEXT_SET.has(value) ? value : null;\n}\n/* c8 ignore stop */\n\nfunction normalizeEndpointForDisplay(rawEndpoint: string): string {\n const trimmed = rawEndpoint.trim();\n if (trimmed.length === 0) {\n return \"\";\n }\n try {\n const parsed = new URL(trimmed);\n parsed.username = \"\";\n parsed.password = \"\";\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString();\n } catch {\n return trimmed;\n }\n}\n\nfunction parseTelemetryQueue(raw: string): {\n validEntries: number;\n invalidRows: number;\n totalRows: number;\n highRetryEntries: number;\n maxAttempts: number;\n} {\n let validEntries = 0;\n let invalidRows = 0;\n let totalRows = 0;\n let highRetryEntries = 0;\n let maxAttempts = 0;\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n totalRows += 1;\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n typeof parsed.attempts === \"number\" &&\n Number.isFinite(parsed.attempts)\n ) {\n const attempts = Math.max(0, Math.trunc(parsed.attempts));\n validEntries += 1;\n maxAttempts = Math.max(maxAttempts, attempts);\n if (attempts >= TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD) {\n highRetryEntries += 1;\n }\n } else {\n /* c8 ignore next -- invalid queue rows are covered by end-to-end telemetry fixtures */\n invalidRows += 1;\n }\n } catch {\n invalidRows += 1;\n }\n }\n return {\n validEntries,\n invalidRows,\n totalRows,\n highRetryEntries,\n maxAttempts,\n };\n}\n\ntype TelemetryQueueSummary = ReturnType<typeof parseTelemetryQueue>;\n\ninterface TelemetryEndpointProbeSummary {\n attempted: boolean;\n probe_url?: string;\n ok?: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n}\n\nfunction emptyTelemetryQueueSummary(): TelemetryQueueSummary {\n return { validEntries: 0, invalidRows: 0, totalRows: 0, highRetryEntries: 0, maxAttempts: 0 };\n}\n\n/* c8 ignore start -- telemetry state corruption and otel-failure branches require runtime-coordinated fixture mutation */\nfunction parseTelemetryRuntimeState(stateRaw: string | null): { runtimeState: TelemetryRuntimeStateRecord; stateParseFailed: boolean } {\n if (!stateRaw || stateRaw.trim().length === 0) {\n return { runtimeState: {}, stateParseFailed: false };\n }\n try {\n const parsed = JSON.parse(stateRaw) as TelemetryRuntimeStateRecord;\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return { runtimeState: parsed, stateParseFailed: false };\n }\n return { runtimeState: {}, stateParseFailed: true };\n } catch {\n return { runtimeState: {}, stateParseFailed: true };\n }\n}\n\nasync function maybeProbeTelemetryEndpoint(\n settings: PmSettings,\n checkTelemetry: boolean,\n): Promise<TelemetryEndpointProbeSummary | undefined> {\n const endpoint = settings.telemetry.endpoint.trim();\n if (!checkTelemetry || !settings.telemetry.enabled || endpoint.length === 0) {\n return undefined;\n }\n const probe = await probeTelemetryEndpointHealth(endpoint);\n return {\n attempted: true,\n ...probe,\n };\n}\n\nfunction collectTelemetryQueueWarnings(\n settings: PmSettings,\n queueSummary: TelemetryQueueSummary,\n runtimeState: TelemetryRuntimeStateRecord,\n): string[] {\n const warnings: string[] = [];\n if (queueSummary.invalidRows > 0) {\n warnings.push(`telemetry_queue_invalid_rows:${queueSummary.invalidRows}`);\n }\n if (!settings.telemetry.enabled || queueSummary.validEntries === 0) {\n return warnings;\n }\n const lastSuccess = runtimeState.last_successful_flush_at;\n const lastFailure = runtimeState.last_failed_flush_at;\n const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);\n const neverFlushed = !lastSuccess;\n const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;\n if (activeFailure || neverFlushed || highWater) {\n warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);\n }\n if (queueSummary.highRetryEntries > 0) {\n warnings.push(`telemetry_queue_high_retries:${queueSummary.highRetryEntries}`);\n }\n return warnings;\n}\n\nfunction collectTelemetryEndpointWarnings(endpointProbe: TelemetryEndpointProbeSummary | undefined): string[] {\n if (!endpointProbe || endpointProbe.ok !== false) {\n return [];\n }\n return typeof endpointProbe.status === \"number\"\n ? [`telemetry_endpoint_probe_http_status:${endpointProbe.status}`]\n : [\"telemetry_endpoint_probe_failed\"];\n}\n\nfunction collectTelemetrySchemaWarnings(endpointProbe: TelemetryEndpointProbeSummary | undefined): string[] {\n const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? \"\", 10);\n if (endpointProbe?.ok === true && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {\n return [`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`];\n }\n return [];\n}\n\nfunction collectTelemetryOtelWarnings(settings: PmSettings, runtimeState: TelemetryRuntimeStateRecord): string[] {\n const pendingOtelSpans = typeof runtimeState.pending_otel_spans === \"number\" ? runtimeState.pending_otel_spans : 0;\n const lastOtelSuccess = runtimeState.last_otel_success_at;\n const lastOtelFailure = runtimeState.last_otel_failure_at;\n const otelExportFailing =\n settings.telemetry.enabled &&\n pendingOtelSpans > 0 &&\n Boolean(lastOtelFailure) &&\n // >= so a mixed-outcome batch (success + failure share the same attempt\n // timestamp) still surfaces the warning rather than being masked by the tie.\n (!lastOtelSuccess || (lastOtelFailure as string) >= lastOtelSuccess);\n return otelExportFailing ? [`telemetry_otel_export_failing:${pendingOtelSpans}`] : [];\n}\n\nfunction buildTelemetryEnvOverrideDetails(): Record<string, unknown> {\n return {\n telemetry_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_DISABLED\") || telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n pm_no_telemetry: telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n telemetry_otel_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_OTEL_DISABLED\"),\n telemetry_inline_flush: telemetryEnvFlagEnabled(\"PM_TELEMETRY_INLINE_FLUSH\"),\n telemetry_source_context: telemetrySourceContextOverride(),\n };\n}\n/* c8 ignore stop */\n\nfunction telemetryQueueHasEntries(settings: PmSettings, queueSummary: TelemetryQueueSummary): boolean {\n return settings.telemetry.enabled && queueSummary.validEntries > 0;\n}\n\nfunction isTelemetryQueueDraining(queueHasEntries: boolean, warnings: string[]): boolean {\n return (\n queueHasEntries &&\n warnings.every(\n (warning) => !warning.startsWith(\"telemetry_queue_pending:\") && !warning.startsWith(\"telemetry_queue_high_retries:\"),\n )\n );\n}\n\nasync function probeTelemetryEndpointHealth(endpoint: string): Promise<{\n probe_url: string;\n ok: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n}> {\n let probeUrl = endpoint;\n try {\n const parsed = new URL(endpoint);\n parsed.pathname = \"/healthz\";\n parsed.search = \"\";\n parsed.hash = \"\";\n probeUrl = parsed.toString();\n } catch {\n // keep original endpoint when URL parsing fails\n }\n try {\n const response = await fetch(probeUrl, {\n method: \"GET\",\n signal: AbortSignal.timeout(TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS),\n });\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: response.ok,\n status: response.status,\n max_schema_version: (() => {\n for (const headerName of TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS) {\n const value = response.headers.get(headerName)?.trim();\n if (value && value.length > 0) {\n return value;\n }\n }\n return undefined;\n })(),\n };\n } catch (error: unknown) {\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: false,\n /* c8 ignore next -- non-Error throwables require transport-layer fault injection */\n error: error instanceof Error ? error.message : \"probe_failed\",\n };\n }\n}\n\nasync function buildTelemetryCheck(\n settings: PmSettings,\n options: { checkTelemetry: boolean },\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n\n const queueRaw = await readFileIfExists(queuePath);\n const queueExists = queueRaw !== null;\n const queueSizeBytes = queueRaw ? Buffer.byteLength(queueRaw, \"utf8\") : 0;\n const queueSummary = queueRaw ? parseTelemetryQueue(queueRaw) : emptyTelemetryQueueSummary();\n\n const stateRaw = await readFileIfExists(statePath);\n const { runtimeState, stateParseFailed } = parseTelemetryRuntimeState(stateRaw);\n\n const endpoint = settings.telemetry.endpoint.trim();\n const endpointDisplay = normalizeEndpointForDisplay(endpoint);\n const endpointProbe = await maybeProbeTelemetryEndpoint(settings, options.checkTelemetry);\n\n const warnings: string[] = [];\n if (stateParseFailed) {\n warnings.push(\"telemetry_state_invalid_json\");\n }\n warnings.push(\n ...collectTelemetryQueueWarnings(settings, queueSummary, runtimeState),\n ...collectTelemetryEndpointWarnings(endpointProbe),\n ...collectTelemetrySchemaWarnings(endpointProbe),\n ...collectTelemetryOtelWarnings(settings, runtimeState),\n );\n const queueHasEntries = telemetryQueueHasEntries(settings, queueSummary);\n const pendingOtelSpans = typeof runtimeState.pending_otel_spans === \"number\" ? runtimeState.pending_otel_spans : 0;\n\n return {\n check: {\n name: \"telemetry\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n enabled: settings.telemetry.enabled,\n capture_level: settings.telemetry.capture_level,\n endpoint: endpointDisplay,\n global_pm_root: globalPmRoot,\n queue_path: queuePath,\n queue_exists: queueExists,\n queue_entries: queueSummary.validEntries,\n queue_draining: isTelemetryQueueDraining(queueHasEntries, warnings),\n queue_invalid_rows: queueSummary.invalidRows,\n queue_rows_total: queueSummary.totalRows,\n queue_size_bytes: queueSizeBytes,\n queue_high_retry_entries: queueSummary.highRetryEntries,\n queue_high_retry_threshold: TELEMETRY_QUEUE_HIGH_RETRY_THRESHOLD,\n queue_max_attempts: queueSummary.maxAttempts,\n runtime_state_path: statePath,\n last_attempted_flush_at: runtimeState.last_attempted_flush_at ?? null,\n last_successful_flush_at: runtimeState.last_successful_flush_at ?? null,\n last_failed_flush_at: runtimeState.last_failed_flush_at ?? null,\n last_failed_flush_error: runtimeState.last_failed_flush_error ?? null,\n pending_otel_spans: pendingOtelSpans,\n last_otel_attempt_at: runtimeState.last_otel_attempt_at ?? null,\n last_otel_success_at: runtimeState.last_otel_success_at ?? null,\n last_otel_failure_at: runtimeState.last_otel_failure_at ?? null,\n last_otel_failure_error: runtimeState.last_otel_failure_error ?? null,\n endpoint_probe: endpointProbe ?? { attempted: false },\n env_overrides: buildTelemetryEnvOverrideDetails(),\n },\n },\n warnings,\n };\n}\n\n/**\n * Read-only locks check (pm-xo1n): surfaces active/stale/unreadable/unparseable\n * lock counts using the exact classification `pm gc --scope locks` acts on, so\n * agents can gate on stale item-claim locks before running gc speculatively.\n */\nasync function buildLocksCheck(pmRoot: string): Promise<{ check: HealthCheck; warnings: string[] }> {\n /* c8 ignore start -- scan failure branches require filesystem-level fault injection */\n let scan: Awaited<ReturnType<typeof scanLockHealth>>;\n try {\n scan = await scanLockHealth(pmRoot);\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n check: {\n name: \"locks\",\n status: \"warn\",\n details: {\n active_lock_count: 0,\n stale_lock_count: 0,\n unreadable_lock_count: 0,\n unparseable_lock_count: 0,\n scan_failed: true,\n error: message,\n pm_root: pmRoot,\n },\n },\n warnings: [`locks_scan_failed:${message}`],\n };\n }\n const warnings: string[] = [];\n if (scan.stale_lock_count > 0) {\n warnings.push(`locks_stale_count:${scan.stale_lock_count}`);\n }\n if (scan.unreadable_lock_count > 0) {\n warnings.push(`locks_unreadable:${scan.unreadable_lock_count}`);\n }\n /* c8 ignore stop */\n return {\n check: {\n name: \"locks\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n active_lock_count: scan.active_lock_count,\n stale_lock_count: scan.stale_lock_count,\n unreadable_lock_count: scan.unreadable_lock_count,\n unparseable_lock_count: scan.unparseable_lock_count,\n },\n },\n warnings,\n };\n}\n\nasync function buildHistoryDriftCheck(\n pmRoot: string,\n items: ItemWithBody[],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const cacheHitVerification = \"metadata\" as const;\n const { missingStreams, unreadableStreams, hashMismatches, chainMismatches, driftedItems } = await scanHistoryDrift(\n pmRoot,\n items,\n { cacheHitVerification },\n );\n const warnings = [\n ...missingStreams.map((id) => `history_drift_missing_stream:${id}`),\n ...unreadableStreams.map((id) => `history_drift_unreadable_stream:${id}`),\n ...hashMismatches.map((id) => `history_drift_hash_mismatch:${id}`),\n ...chainMismatches.map((id) => `history_drift_chain_mismatch:${id}`),\n ];\n return {\n check: {\n name: \"history_drift\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_items: items.length,\n cache_hit_verification: cacheHitVerification,\n drifted_items: driftedItems,\n counts: {\n drifted: driftedItems.length,\n missing_streams: missingStreams.length,\n unreadable_streams: unreadableStreams.length,\n hash_mismatches: hashMismatches.length,\n chain_mismatches: chainMismatches.length,\n },\n missing_streams: missingStreams,\n unreadable_streams: unreadableStreams,\n hash_mismatches: hashMismatches,\n chain_mismatches: chainMismatches,\n },\n },\n warnings,\n };\n}\n\nfunction buildVectorizationRuntimeSnapshot(settings: PmSettings, pmRoot: string): VectorizationRuntimeSnapshot {\n const runtimeDefaults = resolveSettingsWithSemanticRuntimeDefaults(settings);\n const providerResolution = resolveEmbeddingProviders(runtimeDefaults.settings);\n const vectorStoreResolution = resolveVectorStores(runtimeDefaults.settings, pmRoot);\n const runtimeEmbeddingIdentity = providerResolution.active\n ? buildVectorizationEmbeddingIdentity(providerResolution.active.name, providerResolution.active.model)\n : null;\n return {\n runtimeDefaults,\n providerResolution,\n vectorStoreResolution,\n runtimeEmbeddingIdentity,\n semanticRuntimeAvailable: Boolean(providerResolution.active && vectorStoreResolution.active),\n };\n}\n\nfunction emptyVectorizationRefreshResult(): VectorizationRefreshResult {\n return {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n}\n\nasync function refreshStaleVectorizationItems(params: {\n pmRoot: string;\n snapshot: VectorizationRuntimeSnapshot;\n refreshPolicy: VectorRefreshPolicy;\n staleBefore: string[];\n}): Promise<VectorizationRefreshResult> {\n if (!params.refreshPolicy.enabled || !params.snapshot.semanticRuntimeAvailable || params.staleBefore.length === 0) {\n return emptyVectorizationRefreshResult();\n }\n return refreshSemanticEmbeddingsForMutatedItems(params.pmRoot, params.staleBefore, {\n settings: params.snapshot.runtimeDefaults.settings,\n apply_runtime_defaults: false,\n });\n}\n\nfunction vectorizationEmbeddingIdentityChanged(params: {\n strictVectorizationWarnings: boolean;\n semanticRuntimeAvailable: boolean;\n ledgerBefore: VectorizationLedger;\n runtimeEmbeddingIdentity: VectorizationRuntimeSnapshot[\"runtimeEmbeddingIdentity\"];\n}): boolean {\n return (\n params.strictVectorizationWarnings &&\n params.semanticRuntimeAvailable &&\n Boolean(\n params.ledgerBefore.embedding &&\n params.runtimeEmbeddingIdentity &&\n hasVectorizationEmbeddingIdentityChanged(params.ledgerBefore.embedding, params.runtimeEmbeddingIdentity),\n )\n );\n}\n\n/* c8 ignore start -- strict-vectorization warning synthesis branches are integration-only policy permutations */\nfunction collectVectorizationWarnings(params: {\n ledgerBefore: VectorizationLedger;\n ledgerAfter: VectorizationLedger;\n refreshResult: VectorizationRefreshResult;\n strictVectorizationWarnings: boolean;\n semanticRuntimeAvailable: boolean;\n embeddingIdentityChanged: boolean;\n staleAfter: string[];\n}): string[] {\n const warningSet = new Set<string>([...params.ledgerBefore.warnings, ...params.ledgerAfter.warnings]);\n if (params.strictVectorizationWarnings) {\n for (const warning of params.refreshResult.warnings) {\n warningSet.add(warning);\n }\n }\n if (params.embeddingIdentityChanged) {\n warningSet.add(\"vectorization_embedding_identity_changed\");\n }\n if (params.strictVectorizationWarnings && params.semanticRuntimeAvailable && params.staleAfter.length > 0) {\n warningSet.add(`vectorization_stale_items_remaining:${params.staleAfter.length}`);\n }\n return [...warningSet].sort((left, right) => left.localeCompare(right));\n}\n/* c8 ignore stop */\n\nfunction resolveVectorizationRefreshSkippedReason(\n refreshPolicy: VectorRefreshPolicy,\n semanticRuntimeAvailable: boolean,\n staleBefore: string[],\n): string | null {\n if (refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0) {\n return null;\n }\n if (!refreshPolicy.enabled) {\n return \"refresh_disabled\";\n }\n return semanticRuntimeAvailable ? \"no_stale_items\" : \"semantic_runtime_unavailable\";\n}\n\nfunction buildVectorizationProviderDetails(settings: PmSettings, snapshot: VectorizationRuntimeSnapshot): Record<string, unknown> {\n const activeProvider = snapshot.providerResolution.active?.name ?? null;\n const activeVectorStore = snapshot.vectorStoreResolution.active?.name ?? null;\n return {\n provider_active: activeProvider,\n // GH-244: surface the persisted (possibly empty) configured value and\n // how the active resolution was sourced, so a config audit can tell\n // \"auto-detected\" apart from a genuine misconfiguration when\n // settings.search.provider / vector_store.adapter are empty strings.\n provider_configured: typeof settings.search?.provider === \"string\" ? settings.search.provider : null,\n provider_source: resolveProviderConfigSource(activeProvider, settings.search?.provider ?? null),\n vector_store_active: activeVectorStore,\n vector_store_configured: typeof settings.vector_store?.adapter === \"string\" ? settings.vector_store.adapter : null,\n vector_store_source: resolveProviderConfigSource(activeVectorStore, settings.vector_store?.adapter ?? null),\n };\n}\n\nfunction buildVectorizationRefreshPolicyDetails(refreshPolicy: VectorRefreshPolicy): Record<string, unknown> {\n return {\n enabled: refreshPolicy.enabled,\n check_only: refreshPolicy.checkOnly,\n no_refresh: refreshPolicy.noRefresh,\n refresh_vectors: refreshPolicy.refreshVectors,\n };\n}\n\nfunction vectorizationRefreshAttempted(\n refreshPolicy: VectorRefreshPolicy,\n semanticRuntimeAvailable: boolean,\n staleBefore: string[],\n): boolean {\n return refreshPolicy.enabled && staleBefore.length > 0 && semanticRuntimeAvailable;\n}\n\nasync function buildVectorizationCheck(\n pmRoot: string,\n settings: PmSettings,\n items: ItemWithBody[],\n refreshPolicy: VectorRefreshPolicy,\n verboseStaleItems: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const snapshot = buildVectorizationRuntimeSnapshot(settings, pmRoot);\n const ledgerBefore = await readVectorizationStatusLedger(pmRoot);\n const staleBefore = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerBefore.entries) : [];\n const refreshResult = await refreshStaleVectorizationItems({ pmRoot, snapshot, refreshPolicy, staleBefore });\n const ledgerAfter = await readVectorizationStatusLedger(pmRoot);\n const staleAfter = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerAfter.entries) : [];\n const strictVectorizationWarnings = !snapshot.runtimeDefaults.auto_ollama_defaults_applied;\n const embeddingIdentityChanged = vectorizationEmbeddingIdentityChanged({\n strictVectorizationWarnings,\n semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,\n ledgerBefore,\n runtimeEmbeddingIdentity: snapshot.runtimeEmbeddingIdentity,\n });\n const warnings = collectVectorizationWarnings({\n ledgerBefore,\n ledgerAfter,\n refreshResult,\n strictVectorizationWarnings,\n semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,\n embeddingIdentityChanged,\n staleAfter,\n });\n const staleBeforeDetail = selectStaleItemDetail(staleBefore, verboseStaleItems);\n const staleAfterDetail = selectStaleItemDetail(staleAfter, verboseStaleItems);\n const refreshAttempted = vectorizationRefreshAttempted(refreshPolicy, snapshot.semanticRuntimeAvailable, staleBefore);\n\n return {\n check: {\n name: \"vectorization\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n semantic_runtime_available: snapshot.semanticRuntimeAvailable,\n compatibility_mode_auto_defaults: snapshot.runtimeDefaults.auto_ollama_defaults_applied,\n auto_ollama_defaults_applied: snapshot.runtimeDefaults.auto_ollama_defaults_applied,\n auto_ollama_defaults_skipped_reason: snapshot.runtimeDefaults.auto_ollama_defaults_skipped_reason ?? null,\n auto_ollama_defaults_remediation: snapshot.runtimeDefaults.auto_ollama_defaults_remediation ?? null,\n refresh_policy: buildVectorizationRefreshPolicyDetails(refreshPolicy),\n ...buildVectorizationProviderDetails(settings, snapshot),\n embedding_identity_changed: embeddingIdentityChanged,\n embedding_identity_before: ledgerBefore.embedding ?? null,\n embedding_identity_runtime: snapshot.runtimeEmbeddingIdentity ?? null,\n items: items.length,\n ledger_entries_before: Object.keys(ledgerBefore.entries).length,\n stale_items_detail_mode: verboseStaleItems ? \"full\" : \"summary\",\n stale_items_summary_limit: STALE_VECTORIZATION_SUMMARY_LIMIT,\n stale_items_before_total: staleBeforeDetail.total,\n stale_items_before: staleBeforeDetail.values,\n stale_items_before_truncated: staleBeforeDetail.truncated,\n refresh_attempted: refreshAttempted,\n refresh_skipped_reason: resolveVectorizationRefreshSkippedReason(\n refreshPolicy,\n snapshot.semanticRuntimeAvailable,\n staleBefore,\n ),\n refresh_result: refreshResult,\n ledger_entries_after: Object.keys(ledgerAfter.entries).length,\n stale_items_after_total: staleAfterDetail.total,\n stale_items_after: staleAfterDetail.values,\n stale_items_after_truncated: staleAfterDetail.truncated,\n },\n },\n warnings,\n };\n}\n\nfunction validateSettingsValues(settings: PmSettings): string[] {\n const warnings: string[] = [];\n if (settings.id_prefix.trim().length === 0) {\n warnings.push(\"settings:id_prefix_empty\");\n }\n if (settings.locks.ttl_seconds <= 0) {\n warnings.push(\"settings:locks_ttl_non_positive\");\n }\n return warnings;\n}\n\nfunction resolveVectorRefreshPolicy(options: RunHealthOptions): VectorRefreshPolicy {\n const checkOnly = options.checkOnly === true;\n const noRefresh = options.noRefresh === true || checkOnly;\n const refreshVectors = options.refreshVectors === true;\n if (refreshVectors && checkOnly) {\n throw new PmCliError(\"--check-only cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n if (refreshVectors && options.noRefresh === true) {\n throw new PmCliError(\"--no-refresh cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n return {\n enabled: refreshVectors || !noRefresh,\n checkOnly,\n noRefresh,\n refreshVectors,\n };\n}\n\ntype HealthCheckResult = { check: HealthCheck; warnings: string[] };\ntype HealthTypeRegistry = ReturnType<typeof resolveItemTypeRegistry>;\n\ninterface HealthDirectoryState {\n requiredDirs: string[];\n optionalDirs: string[];\n missingRequiredDirs: string[];\n missingOptionalDirs: string[];\n missingDirs: string[];\n hookWarnings: string[];\n}\n\ninterface HealthSkipPolicy {\n summaryMode: boolean;\n skipIntegrity: boolean;\n skipDrift: boolean;\n skipVectors: boolean;\n}\n\nfunction resolveHealthDirectoryLists(typeRegistry: HealthTypeRegistry): {\n requiredDirs: string[];\n optionalDirs: string[];\n optionalDirSet: Set<string>;\n} {\n const optionalBuiltinDirs = new Set<string>(PM_OPTIONAL_TYPE_SUBDIRS.filter((entry) => entry.length > 0));\n const requiredDirSet = new Set<string>(PM_CORE_REQUIRED_SUBDIRS.filter((entry) => entry.length > 0));\n const optionalDirSet = new Set<string>();\n for (const folder of typeRegistry.folders) {\n if (optionalBuiltinDirs.has(folder)) {\n optionalDirSet.add(folder);\n continue;\n }\n requiredDirSet.add(folder);\n }\n return {\n requiredDirs: [...requiredDirSet].sort((left, right) => left.localeCompare(right)),\n optionalDirs: [...optionalDirSet].sort((left, right) => left.localeCompare(right)),\n optionalDirSet,\n };\n}\n\nasync function scanHealthDirectories(\n pmRoot: string,\n typeRegistry: HealthTypeRegistry,\n strictDirectories: boolean,\n): Promise<HealthDirectoryState> {\n const { requiredDirs, optionalDirs, optionalDirSet } = resolveHealthDirectoryLists(typeRegistry);\n const missingRequiredDirs: string[] = [];\n const missingOptionalDirs: string[] = [];\n const hookWarnings: string[] = [];\n for (const relativeDir of [...requiredDirs, ...optionalDirs]) {\n const directoryPath = path.join(pmRoot, relativeDir);\n hookWarnings.push(...(await runActiveOnReadHooks({ path: directoryPath, scope: \"project\" })));\n if (await isDirectory(directoryPath)) {\n continue;\n }\n if (optionalDirSet.has(relativeDir)) {\n missingOptionalDirs.push(relativeDir);\n } else {\n missingRequiredDirs.push(relativeDir);\n }\n }\n return {\n requiredDirs,\n optionalDirs,\n missingRequiredDirs,\n missingOptionalDirs,\n missingDirs: strictDirectories ? [...missingRequiredDirs, ...missingOptionalDirs] : [...missingRequiredDirs],\n hookWarnings,\n };\n}\n\nfunction resolveHealthSkipPolicy(options: RunHealthOptions): HealthSkipPolicy {\n const summaryMode = options.summary === true && options.full !== true;\n const fastProjectionCheckOnly =\n options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;\n return {\n summaryMode,\n skipIntegrity: (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true,\n skipDrift: (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true,\n skipVectors: (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true,\n };\n}\n\nasync function readHealthItems(params: {\n pmRoot: string;\n settings: PmSettings;\n typeRegistry: HealthTypeRegistry;\n skipPolicy: HealthSkipPolicy;\n itemReadWarnings: string[];\n}): Promise<Array<ItemMetadata | ItemWithBody>> {\n if (params.skipPolicy.skipDrift && params.skipPolicy.skipVectors) {\n return listAllFrontMatter(\n params.pmRoot,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n params.itemReadWarnings,\n params.settings.schema,\n );\n }\n return listAllFrontMatterWithBody(\n params.pmRoot,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n params.itemReadWarnings,\n params.settings.schema,\n );\n}\n\nfunction buildSkippedHealthCheck(name: Extract<HealthCheck[\"name\"], \"integrity\" | \"history_drift\" | \"vectorization\">): HealthCheckResult {\n return { check: { name, status: \"ok\", details: { skipped: true } }, warnings: [] };\n}\n\nfunction buildSettingsHealthCheck(\n settingsPath: string,\n settings: PmSettings,\n normalizedSettingsReadWarnings: string[],\n): HealthCheck {\n return {\n name: \"settings\",\n /* c8 ignore next -- settings read-warning status split is covered in broader read-settings integration tests */\n status: normalizedSettingsReadWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n path: settingsPath,\n version: settings.version,\n id_prefix: settings.id_prefix,\n locks_ttl_seconds: settings.locks.ttl_seconds,\n warnings: normalizedSettingsReadWarnings,\n },\n };\n}\n\nfunction buildDirectoriesHealthCheck(directoryState: HealthDirectoryState, strictDirectories: boolean): HealthCheck {\n return {\n name: \"directories\",\n status: directoryState.missingDirs.length === 0 ? \"ok\" : \"warn\",\n details: {\n required: directoryState.requiredDirs,\n optional: directoryState.optionalDirs,\n missing_required: directoryState.missingRequiredDirs,\n missing_optional: directoryState.missingOptionalDirs,\n missing: directoryState.missingDirs,\n strict_directories: strictDirectories,\n },\n };\n}\n\nfunction buildSettingsValuesHealthCheck(settingWarnings: string[]): HealthCheck {\n return {\n name: \"settings_values\",\n status: settingWarnings.length === 0 ? \"ok\" : \"warn\",\n details: { warnings: settingWarnings },\n };\n}\n\nfunction buildStorageHealthCheck(\n items: Array<ItemMetadata | ItemWithBody>,\n settings: PmSettings,\n historySummary: HistoryStreamSummary,\n): HealthCheck {\n return {\n name: \"storage\",\n status: historySummary.over_threshold.length === 0 ? \"ok\" : \"warn\",\n details: {\n items: items.length,\n history_streams: historySummary.count,\n ...(historySummary.max_entries !== null\n ? {\n compact_policy: {\n enabled: settings.history.compact_policy.enabled,\n max_entries: historySummary.max_entries,\n trigger: settings.history.compact_policy.trigger,\n over_threshold_count: historySummary.over_threshold.length,\n over_threshold: historySummary.over_threshold,\n },\n }\n : {}),\n },\n };\n}\n\nfunction collectHealthWarnings(params: {\n directoryState: HealthDirectoryState;\n normalizedSettingsReadWarnings: string[];\n settingWarnings: string[];\n normalizedItemReadWarnings: string[];\n telemetryCheck: HealthCheckResult;\n extensionCheck: HealthCheckResult;\n historyPolicyWarnings: string[];\n historySummary: HistoryStreamSummary;\n locksCheck: HealthCheckResult;\n integrityCheck: HealthCheckResult;\n historyDriftCheck: HealthCheckResult;\n vectorizationCheck: HealthCheckResult;\n}): string[] {\n const warnings = [\n ...params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),\n ...params.normalizedSettingsReadWarnings,\n ...params.settingWarnings,\n ...params.normalizedItemReadWarnings,\n ...params.telemetryCheck.warnings,\n ...params.extensionCheck.warnings,\n ...params.historyPolicyWarnings,\n ...params.historySummary.warnings,\n ...params.locksCheck.warnings,\n ...params.integrityCheck.warnings,\n ...params.historyDriftCheck.warnings,\n ...params.vectorizationCheck.warnings,\n ...params.directoryState.hookWarnings,\n ];\n return [...new Set(warnings)];\n}\n\nfunction extractHistoryDriftedCount(historyDriftCheck: HealthCheckResult): number {\n const counts = historyDriftCheck.check.details.counts as { drifted?: unknown } | undefined;\n return typeof counts?.drifted === \"number\" ? counts.drifted : 0;\n}\n\nfunction buildHealthRemediationSources(params: {\n directoryState: HealthDirectoryState;\n normalizedSettingsReadWarnings: string[];\n settingWarnings: string[];\n telemetryCheck: HealthCheckResult;\n extensionCheck: HealthCheckResult;\n historySummary: HistoryStreamSummary;\n locksCheck: HealthCheckResult;\n integrityCheck: HealthCheckResult;\n historyDriftCheck: HealthCheckResult;\n vectorizationCheck: HealthCheckResult;\n}): Record<HealthCheck[\"name\"], string[]> {\n return {\n settings: params.normalizedSettingsReadWarnings,\n directories: params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),\n settings_values: params.settingWarnings,\n telemetry: params.telemetryCheck.warnings,\n extensions: params.extensionCheck.warnings,\n storage: params.historySummary.over_threshold.map((id) => `history_stream_over_compact_threshold:${id}`),\n locks: params.locksCheck.warnings,\n integrity: params.integrityCheck.warnings,\n history_drift: params.historyDriftCheck.warnings,\n vectorization: params.vectorizationCheck.warnings,\n };\n}\n\nfunction rewriteBulkHealthRemediation(params: {\n check: HealthCheck;\n remediationMap: Record<string, string>;\n historyDriftedCount: number;\n overThresholdCount: number;\n}): void {\n if (params.check.name === \"history_drift\" && params.historyDriftedCount > 1) {\n for (const code of Object.keys(params.remediationMap)) {\n params.remediationMap[code] = \"pm history-repair --all\";\n }\n }\n if (params.check.name === \"storage\" && params.overThresholdCount > 1) {\n for (const code of Object.keys(params.remediationMap)) {\n params.remediationMap[code] = \"pm history-compact --all-streams\";\n }\n }\n}\n\nfunction attachHealthRemediationMaps(params: {\n checks: HealthCheck[];\n remediationSources: Record<HealthCheck[\"name\"], string[]>;\n historyDriftedCount: number;\n overThresholdCount: number;\n}): void {\n for (const check of params.checks) {\n const remediationMap = buildRemediationMap(params.remediationSources[check.name]);\n rewriteBulkHealthRemediation({\n check,\n remediationMap,\n historyDriftedCount: params.historyDriftedCount,\n overThresholdCount: params.overThresholdCount,\n });\n if (Object.keys(remediationMap).length > 0) {\n check.details = { ...check.details, remediation_map: remediationMap };\n }\n }\n}\n\nfunction projectHealthResult(result: HealthResult, options: RunHealthOptions, summaryMode: boolean): HealthResult {\n if (summaryMode) {\n return applySummaryHealthProjection(result);\n }\n return options.brief === true ? applyBriefHealthProjection(result) : result;\n}\n\n/**\n * Implements run health for the public runtime surface of this module.\n */\nexport async function runHealth(global: GlobalOptions, options: RunHealthOptions = {}): Promise<HealthResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const settingsPath = getSettingsPath(pmRoot);\n if (!(await pathExists(settingsPath))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);\n const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const strictDirectories = options.strictDirectories === true;\n const refreshPolicy = resolveVectorRefreshPolicy(options);\n const directoryState = await scanHealthDirectories(pmRoot, typeRegistry, strictDirectories);\n const settingWarnings = validateSettingsValues(settings);\n const telemetryCheck = await buildTelemetryCheck(settings, {\n checkTelemetry: options.checkTelemetry === true,\n });\n const extensionCheck = await buildExtensionCheck(pmRoot, settings, Boolean(global.noExtensions));\n const skipPolicy = resolveHealthSkipPolicy(options);\n const itemReadWarnings: string[] = [];\n const items = await readHealthItems({ pmRoot, settings, typeRegistry, skipPolicy, itemReadWarnings });\n const itemsWithBody = items as Array<ItemMetadata & { body: string }>;\n const normalizedItemReadWarnings = [...new Set(itemReadWarnings)];\n const historyPolicy = skipPolicy.skipDrift\n ? { warnings: [] }\n : await enforceHistoryStreamPolicyForItems({\n pmRoot,\n settings,\n itemIds: items.map((item) => item.id),\n commandLabel: \"health\",\n });\n const historySummary = await countHistoryStreams(pmRoot, settings.history.compact_policy);\n const locksCheck = await buildLocksCheck(pmRoot);\n const integrityCheck = skipPolicy.skipIntegrity\n ? buildSkippedHealthCheck(\"integrity\")\n : await buildIntegrityCheck(pmRoot, typeRegistry.type_to_folder, settings.schema);\n const historyDriftCheck = skipPolicy.skipDrift\n ? buildSkippedHealthCheck(\"history_drift\")\n : await buildHistoryDriftCheck(pmRoot, itemsWithBody);\n const vectorizationCheck = skipPolicy.skipVectors\n ? buildSkippedHealthCheck(\"vectorization\")\n : await buildVectorizationCheck(pmRoot, settings, itemsWithBody, refreshPolicy, options.verboseStaleItems === true);\n\n const checks: HealthCheck[] = [\n buildSettingsHealthCheck(settingsPath, settings, normalizedSettingsReadWarnings),\n buildDirectoriesHealthCheck(directoryState, strictDirectories),\n buildSettingsValuesHealthCheck(settingWarnings),\n telemetryCheck.check,\n extensionCheck.check,\n buildStorageHealthCheck(items, settings, historySummary),\n locksCheck.check,\n integrityCheck.check,\n historyDriftCheck.check,\n vectorizationCheck.check,\n ];\n\n const normalizedWarnings = collectHealthWarnings({\n directoryState,\n normalizedSettingsReadWarnings,\n settingWarnings,\n normalizedItemReadWarnings,\n telemetryCheck,\n extensionCheck,\n historyPolicyWarnings: historyPolicy.warnings,\n historySummary,\n locksCheck,\n integrityCheck,\n historyDriftCheck,\n vectorizationCheck,\n });\n attachHealthRemediationMaps({\n checks,\n remediationSources: buildHealthRemediationSources({\n directoryState,\n normalizedSettingsReadWarnings,\n settingWarnings,\n telemetryCheck,\n extensionCheck,\n historySummary,\n locksCheck,\n integrityCheck,\n historyDriftCheck,\n vectorizationCheck,\n }),\n historyDriftedCount: extractHistoryDriftedCount(historyDriftCheck),\n overThresholdCount: historySummary.over_threshold.length,\n });\n // Telemetry is an opt-out, non-critical observability feature. Its operational\n // state (queue backlog, unreachable endpoint, corrupt local state) is advisory:\n // it must never flip overall project health to not-ok. Such warnings are still\n // surfaced in `warnings` and the telemetry check's own `warn` status.\n const blockingWarnings = normalizedWarnings.filter((warning) => !isAdvisoryHealthWarning(warning));\n const result: HealthResult = {\n ok: blockingWarnings.length === 0,\n checks,\n warnings: normalizedWarnings,\n generated_at: nowIso(),\n };\n return projectHealthResult(result, options, skipPolicy.summaryMode);\n}\n\nexport const _testOnlyHealthCommand = {\n buildExtensionHealthTriageSummary,\n buildCapabilityContractMetadata,\n buildVectorizationProviderDetails,\n collectUnknownCapabilityGuidance,\n isAdvisoryHealthWarning,\n isDirectory,\n isExpectedUnmanagedExtension,\n listItemDocumentPaths,\n normalizeEndpointForDisplay,\n normalizeExtensionNameForMatch,\n parseTelemetryQueue,\n probeTelemetryEndpointHealth,\n selectStaleItemDetail,\n summarizeHealthCheckDetails,\n summarizeExtensionList,\n summarizeRecordList,\n summarizeStringList,\n telemetryEnvFlagEnabled,\n warningCode,\n};\n"],"names":[],"mappings":"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","debugId":"2b3c6d60-bc83-523e-8b95-c5923f6cac7a"}