@unbrained/pm-cli 2026.6.6 → 2026.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +5 -1
  3. package/dist/cli/commander-usage.js +74 -4
  4. package/dist/cli/commander-usage.js.map +1 -1
  5. package/dist/cli/commands/aggregate.d.ts +8 -0
  6. package/dist/cli/commands/aggregate.js +84 -7
  7. package/dist/cli/commands/aggregate.js.map +1 -1
  8. package/dist/cli/commands/calendar.js +10 -3
  9. package/dist/cli/commands/calendar.js.map +1 -1
  10. package/dist/cli/commands/close-many.js +13 -10
  11. package/dist/cli/commands/close-many.js.map +1 -1
  12. package/dist/cli/commands/close.d.ts +1 -1
  13. package/dist/cli/commands/close.js +20 -10
  14. package/dist/cli/commands/close.js.map +1 -1
  15. package/dist/cli/commands/completion.js +68 -13
  16. package/dist/cli/commands/completion.js.map +1 -1
  17. package/dist/cli/commands/config.d.ts +5 -4
  18. package/dist/cli/commands/config.js +50 -2
  19. package/dist/cli/commands/config.js.map +1 -1
  20. package/dist/cli/commands/contracts.js +4 -3
  21. package/dist/cli/commands/contracts.js.map +1 -1
  22. package/dist/cli/commands/copy.d.ts +14 -0
  23. package/dist/cli/commands/copy.js +153 -0
  24. package/dist/cli/commands/copy.js.map +1 -0
  25. package/dist/cli/commands/extension/doctor.js +62 -2
  26. package/dist/cli/commands/extension/doctor.js.map +1 -1
  27. package/dist/cli/commands/extension/install-sources.d.ts +8 -0
  28. package/dist/cli/commands/extension/install-sources.js +82 -2
  29. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  30. package/dist/cli/commands/extension.d.ts +29 -0
  31. package/dist/cli/commands/extension.js +61 -2
  32. package/dist/cli/commands/extension.js.map +1 -1
  33. package/dist/cli/commands/get.d.ts +9 -0
  34. package/dist/cli/commands/get.js +23 -2
  35. package/dist/cli/commands/get.js.map +1 -1
  36. package/dist/cli/commands/history-compact.d.ts +39 -0
  37. package/dist/cli/commands/history-compact.js +262 -0
  38. package/dist/cli/commands/history-compact.js.map +1 -0
  39. package/dist/cli/commands/index.d.ts +2 -0
  40. package/dist/cli/commands/index.js +4 -2
  41. package/dist/cli/commands/index.js.map +1 -1
  42. package/dist/cli/commands/list.d.ts +2 -0
  43. package/dist/cli/commands/list.js +87 -9
  44. package/dist/cli/commands/list.js.map +1 -1
  45. package/dist/cli/commands/reindex.js +8 -4
  46. package/dist/cli/commands/reindex.js.map +1 -1
  47. package/dist/cli/commands/search.d.ts +1 -0
  48. package/dist/cli/commands/search.js +232 -35
  49. package/dist/cli/commands/search.js.map +1 -1
  50. package/dist/cli/error-guidance.js +26 -2
  51. package/dist/cli/error-guidance.js.map +1 -1
  52. package/dist/cli/extension-command-help.d.ts +1 -0
  53. package/dist/cli/extension-command-help.js +3 -2
  54. package/dist/cli/extension-command-help.js.map +1 -1
  55. package/dist/cli/help-content.js +10 -2
  56. package/dist/cli/help-content.js.map +1 -1
  57. package/dist/cli/main.d.ts +3 -0
  58. package/dist/cli/main.js +13 -21
  59. package/dist/cli/main.js.map +1 -1
  60. package/dist/cli/register-list-query.js +19 -4
  61. package/dist/cli/register-list-query.js.map +1 -1
  62. package/dist/cli/register-mutation.js +52 -17
  63. package/dist/cli/register-mutation.js.map +1 -1
  64. package/dist/cli/register-operations.js +31 -7
  65. package/dist/cli/register-operations.js.map +1 -1
  66. package/dist/cli/register-setup.js +5 -5
  67. package/dist/cli/register-setup.js.map +1 -1
  68. package/dist/cli/registration-helpers.js +21 -3
  69. package/dist/cli/registration-helpers.js.map +1 -1
  70. package/dist/cli-bundle/chunks/activity-5UROHJ3D.js +16 -0
  71. package/dist/cli-bundle/chunks/{activity-JM6DTDND.js → activity-YVB3QRTE.js} +11 -11
  72. package/dist/cli-bundle/chunks/{aggregate-VNAHUNNF.js → aggregate-LH66F75F.js} +87 -17
  73. package/dist/cli-bundle/chunks/aggregate-LH66F75F.js.map +7 -0
  74. package/dist/cli-bundle/chunks/{aggregate-GI7WSZPH.js → aggregate-OHSWFQJM.js} +88 -18
  75. package/dist/cli-bundle/chunks/aggregate-OHSWFQJM.js.map +1 -0
  76. package/dist/cli-bundle/chunks/{append-WMKRXKCE.js → append-2PPYFAG5.js} +8 -8
  77. package/dist/cli-bundle/chunks/{append-7H5N64R2.js → append-AUGT5W6J.js} +8 -8
  78. package/dist/cli-bundle/chunks/{chunk-6P6GGMOG.js → chunk-2IF7WLB7.js} +2 -2
  79. package/dist/cli-bundle/chunks/{chunk-T3LC5LKB.js → chunk-2IXCHCLM.js} +5 -6
  80. package/dist/cli-bundle/chunks/chunk-2IXCHCLM.js.map +7 -0
  81. package/dist/cli-bundle/chunks/{chunk-KAG77BY3.js → chunk-2OJHLWBZ.js} +2 -2
  82. package/dist/cli-bundle/chunks/{chunk-GXSUPCBV.js → chunk-3A2CMEM7.js} +4 -4
  83. package/dist/cli-bundle/chunks/{chunk-UM2GBHS4.js → chunk-3EOBJOF4.js} +4 -4
  84. package/dist/cli-bundle/chunks/{chunk-Q7SPNHLW.js → chunk-42LOFGJS.js} +91 -16
  85. package/dist/cli-bundle/chunks/chunk-42LOFGJS.js.map +7 -0
  86. package/dist/cli-bundle/chunks/{chunk-PRJCELV4.js → chunk-4CHEG6UK.js} +8 -8
  87. package/dist/cli-bundle/chunks/{chunk-4LL6TK5B.js → chunk-4GHZR3BA.js} +56 -28
  88. package/dist/cli-bundle/chunks/chunk-4GHZR3BA.js.map +1 -0
  89. package/dist/cli-bundle/chunks/{chunk-OZ7NSQHL.js → chunk-5AXMRKN5.js} +8 -8
  90. package/dist/cli-bundle/chunks/{chunk-GCOQW437.js → chunk-6J4K6JLA.js} +3 -3
  91. package/dist/cli-bundle/chunks/{chunk-2RSPZI5H.js → chunk-6RZXO5M2.js} +8 -8
  92. package/dist/cli-bundle/chunks/{chunk-KJ33AOCY.js → chunk-AVJD6VTA.js} +3 -3
  93. package/dist/cli-bundle/chunks/{chunk-TCD3R2PF.js → chunk-B2KZGPM2.js} +39 -8
  94. package/dist/cli-bundle/chunks/chunk-B2KZGPM2.js.map +1 -0
  95. package/dist/cli-bundle/chunks/{chunk-I6BNFU5X.js → chunk-B5RF3IP7.js} +3 -3
  96. package/dist/cli-bundle/chunks/{chunk-RZN6VURO.js → chunk-C5W2UH56.js} +3 -3
  97. package/dist/cli-bundle/chunks/{chunk-3LB74A67.js → chunk-CKLBZHS7.js} +6 -6
  98. package/dist/cli-bundle/chunks/{chunk-KWU6HG75.js → chunk-CLD3XNCH.js} +91 -10
  99. package/dist/cli-bundle/chunks/chunk-CLD3XNCH.js.map +1 -0
  100. package/dist/cli-bundle/chunks/{chunk-QO7EBBOM.js → chunk-FHHBD7PN.js} +38 -7
  101. package/dist/cli-bundle/chunks/chunk-FHHBD7PN.js.map +7 -0
  102. package/dist/cli-bundle/chunks/{chunk-3VAM3NNM.js → chunk-FY6Z3FYY.js} +3 -3
  103. package/dist/cli-bundle/chunks/{chunk-RWPSOIEE.js → chunk-GNIUOLZ2.js} +7 -7
  104. package/dist/cli-bundle/chunks/{chunk-MITFDD35.js → chunk-GPXQBR3H.js} +12 -12
  105. package/dist/cli-bundle/chunks/{chunk-2VBQ6ZXS.js → chunk-GUZBNB3G.js} +27 -5
  106. package/dist/cli-bundle/chunks/chunk-GUZBNB3G.js.map +1 -0
  107. package/dist/cli-bundle/chunks/{chunk-I2HSTRJF.js → chunk-H7EO3QA3.js} +5 -5
  108. package/dist/cli-bundle/chunks/{chunk-77GFDHGF.js → chunk-HLC3KTLP.js} +2 -2
  109. package/dist/cli-bundle/chunks/{chunk-OVQCEJPG.js → chunk-HMMMWBK2.js} +2 -2
  110. package/dist/cli-bundle/chunks/{chunk-KJE2FOS4.js → chunk-HRMHZ4RV.js} +26 -4
  111. package/dist/cli-bundle/chunks/chunk-HRMHZ4RV.js.map +7 -0
  112. package/dist/cli-bundle/chunks/{chunk-XLTD2HN3.js → chunk-HV5SSZXF.js} +2 -2
  113. package/dist/cli-bundle/chunks/{chunk-GU2ZJ2VV.js → chunk-IMCJBN2Q.js} +23 -14
  114. package/dist/cli-bundle/chunks/chunk-IMCJBN2Q.js.map +7 -0
  115. package/dist/cli-bundle/chunks/{chunk-2HVRUSQA.js → chunk-KNGVP5WJ.js} +3 -3
  116. package/dist/cli-bundle/chunks/{chunk-ECCMVXGM.js → chunk-KR6R465K.js} +304 -215
  117. package/dist/cli-bundle/chunks/chunk-KR6R465K.js.map +7 -0
  118. package/dist/cli-bundle/chunks/{chunk-3BWOVLTH.js → chunk-LI65XLJR.js} +8 -8
  119. package/dist/cli-bundle/chunks/{chunk-NUZ5HKR4.js → chunk-LIN2BPJ7.js} +2 -2
  120. package/dist/cli-bundle/chunks/chunk-LMTOY5HE.js +112 -0
  121. package/dist/cli-bundle/chunks/chunk-LMTOY5HE.js.map +1 -0
  122. package/dist/cli-bundle/chunks/{chunk-N7ACFE26.js → chunk-LQHBENVW.js} +3 -3
  123. package/dist/cli-bundle/chunks/{chunk-23YFZ3IG.js → chunk-LXO6V66E.js} +14 -14
  124. package/dist/cli-bundle/chunks/{chunk-PDDFYW4X.js → chunk-M2PW7EZU.js} +26 -7
  125. package/dist/cli-bundle/chunks/chunk-M2PW7EZU.js.map +7 -0
  126. package/dist/cli-bundle/chunks/{chunk-PIU6RSL3.js → chunk-MOYM2C3J.js} +9 -9
  127. package/dist/cli-bundle/chunks/{chunk-PROOHX4K.js → chunk-MWRS7Z4P.js} +94 -13
  128. package/dist/cli-bundle/chunks/chunk-MWRS7Z4P.js.map +7 -0
  129. package/dist/cli-bundle/chunks/{chunk-FRAUKRU2.js → chunk-NHR2QXXZ.js} +24 -15
  130. package/dist/cli-bundle/chunks/chunk-NHR2QXXZ.js.map +1 -0
  131. package/dist/cli-bundle/chunks/{chunk-IJGCZSIQ.js → chunk-NQL32HQ5.js} +12 -12
  132. package/dist/cli-bundle/chunks/{chunk-52MAOQ6J.js → chunk-O7HSSFCC.js} +65 -16
  133. package/dist/cli-bundle/chunks/chunk-O7HSSFCC.js.map +7 -0
  134. package/dist/cli-bundle/chunks/{chunk-6ER6DXH5.js → chunk-OKSKJKHX.js} +9 -9
  135. package/dist/cli-bundle/chunks/{chunk-IOR7LGF4.js → chunk-QQL5QSTZ.js} +88 -7
  136. package/dist/cli-bundle/chunks/chunk-QQL5QSTZ.js.map +1 -0
  137. package/dist/cli-bundle/chunks/{chunk-2VVCGBNV.js → chunk-R3V3YCMH.js} +9 -9
  138. package/dist/cli-bundle/chunks/{chunk-UBOPJT3S.js → chunk-RVPTZKBC.js} +9 -9
  139. package/dist/cli-bundle/chunks/{chunk-WKY2IBOQ.js → chunk-SFFVGNHC.js} +3 -3
  140. package/dist/cli-bundle/chunks/{chunk-WSMOSYRD.js → chunk-SQPKRA54.js} +14 -14
  141. package/dist/cli-bundle/chunks/chunk-THDEID2Z.js +115 -0
  142. package/dist/cli-bundle/chunks/chunk-THDEID2Z.js.map +7 -0
  143. package/dist/cli-bundle/chunks/{chunk-W7XABV4H.js → chunk-TINUJMWN.js} +92 -17
  144. package/dist/cli-bundle/chunks/chunk-TINUJMWN.js.map +1 -0
  145. package/dist/cli-bundle/chunks/{chunk-YL2DJGYS.js → chunk-TNPBPNII.js} +7 -7
  146. package/dist/cli-bundle/chunks/{chunk-XTGLRY2Y.js → chunk-TP4DDY27.js} +6 -6
  147. package/dist/cli-bundle/chunks/{chunk-AY43SBIN.js → chunk-TYJJOTUA.js} +6 -6
  148. package/dist/cli-bundle/chunks/{chunk-LCM63IXU.js → chunk-UAQOQ7IE.js} +2 -2
  149. package/dist/cli-bundle/chunks/{chunk-BQHUILZS.js → chunk-UEWA73ZZ.js} +5 -5
  150. package/dist/cli-bundle/chunks/{chunk-PO3GSVFV.js → chunk-UIIQC5YO.js} +2 -2
  151. package/dist/cli-bundle/chunks/{chunk-U5SXYXSY.js → chunk-UJUT6AHZ.js} +241 -35
  152. package/dist/cli-bundle/chunks/chunk-UJUT6AHZ.js.map +7 -0
  153. package/dist/cli-bundle/chunks/{chunk-HZGUAH22.js → chunk-UT6WFXW2.js} +6 -7
  154. package/dist/cli-bundle/chunks/chunk-UT6WFXW2.js.map +1 -0
  155. package/dist/cli-bundle/chunks/{chunk-LB3RUL2N.js → chunk-UYQ7HXH4.js} +10 -6
  156. package/dist/cli-bundle/chunks/chunk-UYQ7HXH4.js.map +1 -0
  157. package/dist/cli-bundle/chunks/{chunk-R6UFP2GE.js → chunk-V6EYFTRL.js} +7 -7
  158. package/dist/cli-bundle/chunks/{chunk-3FI4SEFT.js → chunk-WAA7UI6M.js} +58 -30
  159. package/dist/cli-bundle/chunks/chunk-WAA7UI6M.js.map +7 -0
  160. package/dist/cli-bundle/chunks/{chunk-AO442XLN.js → chunk-WCQZBDDH.js} +10 -6
  161. package/dist/cli-bundle/chunks/{chunk-AO442XLN.js.map → chunk-WCQZBDDH.js.map} +2 -2
  162. package/dist/cli-bundle/chunks/{chunk-SKJWX3QB.js → chunk-WR5567FH.js} +87 -6
  163. package/dist/cli-bundle/chunks/chunk-WR5567FH.js.map +7 -0
  164. package/dist/cli-bundle/chunks/{chunk-XSJCLN2R.js → chunk-WYEXLDDY.js} +3 -3
  165. package/dist/cli-bundle/chunks/{chunk-5SFCOO6B.js → chunk-X4IZKYHP.js} +234 -28
  166. package/dist/cli-bundle/chunks/chunk-X4IZKYHP.js.map +1 -0
  167. package/dist/cli-bundle/chunks/{chunk-E5FJNAZA.js → chunk-X7UHMKPE.js} +3 -3
  168. package/dist/cli-bundle/chunks/{chunk-WOPXVEZP.js → chunk-XS3O2TFJ.js} +27 -8
  169. package/dist/cli-bundle/chunks/chunk-XS3O2TFJ.js.map +1 -0
  170. package/dist/cli-bundle/chunks/{chunk-TPH5XEVD.js → chunk-XYNT7UFP.js} +303 -207
  171. package/dist/cli-bundle/chunks/chunk-XYNT7UFP.js.map +1 -0
  172. package/dist/cli-bundle/chunks/{chunk-GGYWB3Y2.js → chunk-YBZW2QQ7.js} +6 -6
  173. package/dist/cli-bundle/chunks/{chunk-ME2YH6FN.js → chunk-YO3THIJF.js} +7 -7
  174. package/dist/cli-bundle/chunks/{chunk-5FDATVEZ.js → chunk-YPH4ESA2.js} +66 -17
  175. package/dist/cli-bundle/chunks/chunk-YPH4ESA2.js.map +1 -0
  176. package/dist/cli-bundle/chunks/{claim-X2P4IB7J.js → claim-BJ4QMPJC.js} +10 -10
  177. package/dist/cli-bundle/chunks/{claim-4DBF6RVG.js → claim-KW743OSW.js} +10 -10
  178. package/dist/cli-bundle/chunks/close-P4ZBKODL.js +13 -0
  179. package/dist/cli-bundle/chunks/{close-PTYFA45H.js → close-SYHSRZDC.js} +8 -8
  180. package/dist/cli-bundle/chunks/{close-many-7CGIDPTJ.js → close-many-DBLEYFOY.js} +29 -26
  181. package/dist/cli-bundle/chunks/close-many-DBLEYFOY.js.map +7 -0
  182. package/dist/cli-bundle/chunks/{close-many-ERFO6LHR.js → close-many-LAC5VR4G.js} +30 -27
  183. package/dist/cli-bundle/chunks/close-many-LAC5VR4G.js.map +1 -0
  184. package/dist/cli-bundle/chunks/{comments-QKBYCWKD.js → comments-JEO6HHVM.js} +10 -10
  185. package/dist/cli-bundle/chunks/{comments-OONGABK5.js → comments-YT2PQ5DD.js} +10 -10
  186. package/dist/cli-bundle/chunks/{config-6FXCQKIF.js → config-RZRVS3ZV.js} +127 -11
  187. package/dist/cli-bundle/chunks/config-RZRVS3ZV.js.map +1 -0
  188. package/dist/cli-bundle/chunks/{config-U4RZ4CQB.js → config-YJSAAADD.js} +128 -12
  189. package/dist/cli-bundle/chunks/config-YJSAAADD.js.map +7 -0
  190. package/dist/cli-bundle/chunks/{context-FYYJGFWS.js → context-LGYEEKAW.js} +14 -14
  191. package/dist/cli-bundle/chunks/{context-FYYJGFWS.js.map → context-LGYEEKAW.js.map} +2 -2
  192. package/dist/cli-bundle/chunks/{context-YMJ3Z2HQ.js → context-ZUH5IOOI.js} +15 -15
  193. package/dist/cli-bundle/chunks/context-ZUH5IOOI.js.map +1 -0
  194. package/dist/cli-bundle/chunks/{contracts-RFSPGVVJ.js → contracts-YXJ6NXKH.js} +7 -5
  195. package/dist/cli-bundle/chunks/contracts-YXJ6NXKH.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{contracts-QDB6OMLQ.js → contracts-ZIBXROPE.js} +8 -6
  197. package/dist/cli-bundle/chunks/contracts-ZIBXROPE.js.map +1 -0
  198. package/dist/cli-bundle/chunks/copy-BZALX5MQ.js +182 -0
  199. package/dist/cli-bundle/chunks/copy-BZALX5MQ.js.map +1 -0
  200. package/dist/cli-bundle/chunks/copy-YPWEIAPD.js +185 -0
  201. package/dist/cli-bundle/chunks/copy-YPWEIAPD.js.map +7 -0
  202. package/dist/cli-bundle/chunks/create-4DS2QWQC.js +27 -0
  203. package/dist/cli-bundle/chunks/{create-I5L4EYYZ.js → create-CF7EVRX7.js} +13 -13
  204. package/dist/cli-bundle/chunks/{delete-7HPGI4GZ.js → delete-KR4VBWVE.js} +7 -7
  205. package/dist/cli-bundle/chunks/{delete-VXUPH5RS.js → delete-XLZRTRKR.js} +7 -7
  206. package/dist/cli-bundle/chunks/{deps-JSRRWC3Z.js → deps-2YTXD3VM.js} +7 -7
  207. package/dist/cli-bundle/chunks/{deps-SCZIFK2Z.js → deps-GZMFMTGS.js} +7 -7
  208. package/dist/cli-bundle/chunks/{docs-GJK6K4VP.js → docs-SLROFEQ4.js} +9 -9
  209. package/dist/cli-bundle/chunks/{docs-WW4N3MBM.js → docs-ZHISRR2D.js} +9 -9
  210. package/dist/cli-bundle/chunks/{extension-J7IBMFTD.js → extension-3C7OOI4F.js} +8 -6
  211. package/dist/cli-bundle/chunks/{extension-VDY2U33M.js → extension-XYCUXICD.js} +8 -6
  212. package/dist/cli-bundle/chunks/{files-ISZJGILQ.js → files-FUWF2FYJ.js} +9 -9
  213. package/dist/cli-bundle/chunks/{files-WKOD326U.js → files-J4I5IU4O.js} +9 -9
  214. package/dist/cli-bundle/chunks/{gc-JDVJ6OQ2.js → gc-34NXSNSN.js} +3 -3
  215. package/dist/cli-bundle/chunks/{gc-ULPVWMTN.js → gc-SPIIZX3A.js} +3 -3
  216. package/dist/cli-bundle/chunks/{get-RV37HT3G.js → get-SZKNRHMA.js} +34 -12
  217. package/dist/cli-bundle/chunks/get-SZKNRHMA.js.map +1 -0
  218. package/dist/cli-bundle/chunks/{get-WXU6WI5P.js → get-VITKYP6S.js} +33 -11
  219. package/dist/cli-bundle/chunks/get-VITKYP6S.js.map +7 -0
  220. package/dist/cli-bundle/chunks/{health-6L6EH4WR.js → health-4SNTA2TF.js} +12 -11
  221. package/dist/cli-bundle/chunks/{health-6L6EH4WR.js.map → health-4SNTA2TF.js.map} +1 -1
  222. package/dist/cli-bundle/chunks/{health-LOI2HHKB.js → health-7G3EPM57.js} +14 -13
  223. package/dist/cli-bundle/chunks/{health-LOI2HHKB.js.map → health-7G3EPM57.js.map} +1 -1
  224. package/dist/cli-bundle/chunks/{history-PKN67D5O.js → history-SDAWYZR3.js} +10 -10
  225. package/dist/cli-bundle/chunks/history-YDUEILKP.js +20 -0
  226. package/dist/cli-bundle/chunks/history-compact-DMW536VH.js +287 -0
  227. package/dist/cli-bundle/chunks/history-compact-DMW536VH.js.map +1 -0
  228. package/dist/cli-bundle/chunks/history-compact-POTZGG7K.js +290 -0
  229. package/dist/cli-bundle/chunks/history-compact-POTZGG7K.js.map +7 -0
  230. package/dist/cli-bundle/chunks/{history-redact-V4FOJGS7.js → history-redact-EPJ7GENL.js} +11 -11
  231. package/dist/cli-bundle/chunks/history-redact-KASLLPE7.js +19 -0
  232. package/dist/cli-bundle/chunks/{history-repair-SDMHR7JT.js → history-repair-IJ7LLBET.js} +11 -11
  233. package/dist/cli-bundle/chunks/{history-repair-HIBCBIKK.js → history-repair-YNESJRT6.js} +11 -11
  234. package/dist/cli-bundle/chunks/init-IGSS4GNH.js +17 -0
  235. package/dist/cli-bundle/chunks/{init-P56QYWJF.js → init-YHVBTEET.js} +9 -8
  236. package/dist/cli-bundle/chunks/{learnings-GDFRG5J7.js → learnings-4YBMIVCZ.js} +10 -10
  237. package/dist/cli-bundle/chunks/{learnings-MIXSESLK.js → learnings-T4PF24YN.js} +10 -10
  238. package/dist/cli-bundle/chunks/{list-FGOWQMSM.js → list-3KEVBOYW.js} +10 -10
  239. package/dist/cli-bundle/chunks/list-E44O2K64.js +20 -0
  240. package/dist/cli-bundle/chunks/{notes-4XVSH2AZ.js → notes-FLUCNJSH.js} +10 -10
  241. package/dist/cli-bundle/chunks/{notes-5UK3GEH2.js → notes-GJKALVZM.js} +10 -10
  242. package/dist/cli-bundle/chunks/{plan-SLMODHWX.js → plan-T5MMZLI3.js} +13 -13
  243. package/dist/cli-bundle/chunks/{plan-DUMBV3QB.js → plan-YYMIL3HV.js} +13 -13
  244. package/dist/cli-bundle/chunks/{register-list-query-POCFZ5JW.js → register-list-query-I65EZ3HB.js} +29 -25
  245. package/dist/cli-bundle/chunks/register-list-query-I65EZ3HB.js.map +1 -0
  246. package/dist/cli-bundle/chunks/{register-list-query-WST76HSQ.js → register-list-query-OECMHO4G.js} +28 -24
  247. package/dist/cli-bundle/chunks/register-list-query-OECMHO4G.js.map +7 -0
  248. package/dist/cli-bundle/chunks/{register-mutation-N5GSUZJV.js → register-mutation-2FLXORLR.js} +65 -47
  249. package/dist/cli-bundle/chunks/register-mutation-2FLXORLR.js.map +1 -0
  250. package/dist/cli-bundle/chunks/{register-mutation-OA675SOU.js → register-mutation-5GPDEKHR.js} +64 -46
  251. package/dist/cli-bundle/chunks/register-mutation-5GPDEKHR.js.map +7 -0
  252. package/dist/cli-bundle/chunks/{register-operations-GNHBE5I3.js → register-operations-BNGAUMGK.js} +58 -35
  253. package/dist/cli-bundle/chunks/register-operations-BNGAUMGK.js.map +1 -0
  254. package/dist/cli-bundle/chunks/{register-operations-N3PMHXH5.js → register-operations-GQKT35H5.js} +57 -34
  255. package/dist/cli-bundle/chunks/register-operations-GQKT35H5.js.map +7 -0
  256. package/dist/cli-bundle/chunks/{register-setup-JIMPKJKV.js → register-setup-DNDCGZ4O.js} +18 -18
  257. package/dist/cli-bundle/chunks/{register-setup-JIMPKJKV.js.map → register-setup-DNDCGZ4O.js.map} +1 -1
  258. package/dist/cli-bundle/chunks/{register-setup-ZHJI2DI3.js → register-setup-EJY44FPH.js} +17 -17
  259. package/dist/cli-bundle/chunks/{register-setup-ZHJI2DI3.js.map → register-setup-EJY44FPH.js.map} +2 -2
  260. package/dist/cli-bundle/chunks/{restore-PBL6T5TW.js → restore-DDJGVZIN.js} +11 -11
  261. package/dist/cli-bundle/chunks/restore-SJSASGZP.js +17 -0
  262. package/dist/cli-bundle/chunks/{schema-2NOO6NGB.js → schema-B7NQ6XVP.js} +8 -8
  263. package/dist/cli-bundle/chunks/{schema-EBI4NLUO.js → schema-HEGYH6CE.js} +8 -8
  264. package/dist/cli-bundle/chunks/{search-JPUQTVCY.js → search-DVVQ4UO2.js} +421 -42
  265. package/dist/cli-bundle/chunks/search-DVVQ4UO2.js.map +1 -0
  266. package/dist/cli-bundle/chunks/{search-OA6JX27A.js → search-JNEZJV7H.js} +427 -41
  267. package/dist/cli-bundle/chunks/search-JNEZJV7H.js.map +7 -0
  268. package/dist/cli-bundle/chunks/{stats-CV54BAWY.js → stats-7JDIJRDH.js} +7 -7
  269. package/dist/cli-bundle/chunks/{stats-XYB6KTFG.js → stats-SYTJRR4Z.js} +7 -7
  270. package/dist/cli-bundle/chunks/{telemetry-LMJ7PFUO.js → telemetry-4HHWD5Y7.js} +4 -4
  271. package/dist/cli-bundle/chunks/{telemetry-NCMEPJNR.js → telemetry-EGWP7ZUX.js} +4 -4
  272. package/dist/cli-bundle/chunks/{test-WBROAJIE.js → test-IIELLSZX.js} +14 -13
  273. package/dist/cli-bundle/chunks/test-ML5RLWXE.js +32 -0
  274. package/dist/cli-bundle/chunks/{test-all-NTOZ7C3M.js → test-all-7DNCMML7.js} +14 -13
  275. package/dist/cli-bundle/chunks/{test-all-NTOZ7C3M.js.map → test-all-7DNCMML7.js.map} +1 -1
  276. package/dist/cli-bundle/chunks/{test-all-N6NSRDTV.js → test-all-IHTUJRRC.js} +16 -15
  277. package/dist/cli-bundle/chunks/{test-all-N6NSRDTV.js.map → test-all-IHTUJRRC.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{test-runs-V6A7LPWZ.js → test-runs-5FEMBV3A.js} +5 -5
  279. package/dist/cli-bundle/chunks/{test-runs-WMVTQU3Y.js → test-runs-RNKZ37PS.js} +5 -5
  280. package/dist/cli-bundle/chunks/update-6C67X4KS.js +21 -0
  281. package/dist/cli-bundle/chunks/update-VF26YPT3.js +25 -0
  282. package/dist/cli-bundle/chunks/{update-many-KGGEYABR.js → update-many-BSZZZYXY.js} +22 -22
  283. package/dist/cli-bundle/chunks/{update-many-EM6OXYGO.js → update-many-BWKJJEBF.js} +22 -22
  284. package/dist/cli-bundle/chunks/{upgrade-LXPOQKFV.js → upgrade-RSE5PC44.js} +7 -6
  285. package/dist/cli-bundle/chunks/{upgrade-LXPOQKFV.js.map → upgrade-RSE5PC44.js.map} +1 -1
  286. package/dist/cli-bundle/chunks/{upgrade-BLI7XBAJ.js → upgrade-YWI5DJFA.js} +5 -4
  287. package/dist/cli-bundle/chunks/{upgrade-BLI7XBAJ.js.map → upgrade-YWI5DJFA.js.map} +1 -1
  288. package/dist/cli-bundle/chunks/{validate-AGOAUOVW.js → validate-NK3WKB7C.js} +18 -17
  289. package/dist/cli-bundle/chunks/{validate-AGOAUOVW.js.map → validate-NK3WKB7C.js.map} +1 -1
  290. package/dist/cli-bundle/chunks/{validate-L5J6A7YO.js → validate-UCEOB7S6.js} +20 -19
  291. package/dist/cli-bundle/chunks/{validate-L5J6A7YO.js.map → validate-UCEOB7S6.js.map} +1 -1
  292. package/dist/cli-bundle/main.js +127 -43
  293. package/dist/cli-bundle/main.js.map +3 -3
  294. package/dist/core/config/nested-settings.d.ts +8 -6
  295. package/dist/core/config/nested-settings.js +71 -5
  296. package/dist/core/config/nested-settings.js.map +1 -1
  297. package/dist/core/config/positional-value.js +4 -2
  298. package/dist/core/config/positional-value.js.map +1 -1
  299. package/dist/core/extensions/extension-types.d.ts +36 -0
  300. package/dist/core/extensions/extension-types.js +2 -2
  301. package/dist/core/extensions/extension-types.js.map +1 -1
  302. package/dist/core/extensions/loader.js +46 -5
  303. package/dist/core/extensions/loader.js.map +1 -1
  304. package/dist/core/history/drift-scan.d.ts +3 -4
  305. package/dist/core/history/drift-scan.js +71 -18
  306. package/dist/core/history/drift-scan.js.map +1 -1
  307. package/dist/core/item/id.js +4 -5
  308. package/dist/core/item/id.js.map +1 -1
  309. package/dist/core/item/item-format.js +7 -3
  310. package/dist/core/item/item-format.js.map +1 -1
  311. package/dist/core/item/toon-decode.d.ts +7 -0
  312. package/dist/core/item/toon-decode.js +11 -2
  313. package/dist/core/item/toon-decode.js.map +1 -1
  314. package/dist/core/item/type-registry.js +25 -7
  315. package/dist/core/item/type-registry.js.map +1 -1
  316. package/dist/core/search/cache.js +5 -3
  317. package/dist/core/search/cache.js.map +1 -1
  318. package/dist/core/search/corpus.d.ts +6 -0
  319. package/dist/core/search/corpus.js +22 -9
  320. package/dist/core/search/corpus.js.map +1 -1
  321. package/dist/core/search/embedding-batches.js +10 -7
  322. package/dist/core/search/embedding-batches.js.map +1 -1
  323. package/dist/core/search/relevance.d.ts +29 -0
  324. package/dist/core/search/relevance.js +226 -0
  325. package/dist/core/search/relevance.js.map +1 -0
  326. package/dist/core/search/vector-stores.d.ts +3 -0
  327. package/dist/core/search/vector-stores.js +23 -10
  328. package/dist/core/search/vector-stores.js.map +1 -1
  329. package/dist/core/shared/constants.js +15 -2
  330. package/dist/core/shared/constants.js.map +1 -1
  331. package/dist/core/shared/errors.d.ts +6 -0
  332. package/dist/core/shared/errors.js +2 -2
  333. package/dist/core/shared/errors.js.map +1 -1
  334. package/dist/core/shared/primitives.d.ts +8 -0
  335. package/dist/core/shared/primitives.js +29 -2
  336. package/dist/core/shared/primitives.js.map +1 -1
  337. package/dist/core/shared/time.js +42 -6
  338. package/dist/core/shared/time.js.map +1 -1
  339. package/dist/core/store/paths.js +25 -7
  340. package/dist/core/store/paths.js.map +1 -1
  341. package/dist/core/store/settings-validator.d.ts +11 -0
  342. package/dist/core/store/settings-validator.js +14 -2
  343. package/dist/core/store/settings-validator.js.map +1 -1
  344. package/dist/core/store/settings.js +109 -12
  345. package/dist/core/store/settings.js.map +1 -1
  346. package/dist/core/telemetry/runtime.js +85 -4
  347. package/dist/core/telemetry/runtime.js.map +1 -1
  348. package/dist/mcp/server.js +36 -9
  349. package/dist/mcp/server.js.map +1 -1
  350. package/dist/sdk/cli-contracts/commander-types.d.ts +1 -0
  351. package/dist/sdk/cli-contracts/commander-types.js +13 -2
  352. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  353. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  354. package/dist/sdk/cli-contracts/enum-contracts.js +6 -2
  355. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  356. package/dist/sdk/cli-contracts/tool-option-contracts.js +7 -2
  357. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  358. package/dist/sdk/cli-contracts/tool-parameter-tables.js +31 -2
  359. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  360. package/dist/sdk/cli-contracts.d.ts +3 -1
  361. package/dist/sdk/cli-contracts.js +36 -6
  362. package/dist/sdk/cli-contracts.js.map +1 -1
  363. package/dist/sdk/index.d.ts +2 -2
  364. package/dist/sdk/index.js +3 -3
  365. package/dist/sdk/index.js.map +1 -1
  366. package/dist/sdk/testing.d.ts +51 -1
  367. package/dist/sdk/testing.js +93 -2
  368. package/dist/sdk/testing.js.map +1 -1
  369. package/dist/types.d.ts +14 -0
  370. package/dist/types.js +2 -2
  371. package/dist/types.js.map +1 -1
  372. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  373. package/docs/CODEX_PLUGIN.md +1 -1
  374. package/docs/COMMANDS.md +9 -2
  375. package/docs/CONFIGURATION.md +22 -1
  376. package/docs/EXTENSIONS.md +22 -9
  377. package/docs/QUICKSTART.md +1 -1
  378. package/docs/SDK.md +66 -0
  379. package/docs/TESTING.md +14 -0
  380. package/package.json +2 -1
  381. package/packages/pm-governance-audit/README.md +14 -0
  382. package/packages/pm-governance-audit/extensions/governance-audit/index.js +39 -1
  383. package/packages/pm-governance-audit/extensions/governance-audit/index.ts +40 -2
  384. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +1 -1
  385. package/packages/pm-governance-audit/package.json +4 -2
  386. package/packages/pm-lifecycle-hooks/README.md +21 -0
  387. package/packages/pm-search-advanced/README.md +38 -0
  388. package/packages/pm-search-advanced/extensions/search-advanced/index.js +17 -0
  389. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +17 -0
  390. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +216 -1
  391. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +271 -2
  392. package/plugins/pm-claude/README.md +4 -4
  393. package/plugins/pm-codex/README.md +1 -1
  394. package/dist/cli-bundle/chunks/activity-CVXTCHYY.js +0 -16
  395. package/dist/cli-bundle/chunks/aggregate-GI7WSZPH.js.map +0 -1
  396. package/dist/cli-bundle/chunks/aggregate-VNAHUNNF.js.map +0 -7
  397. package/dist/cli-bundle/chunks/chunk-2VBQ6ZXS.js.map +0 -1
  398. package/dist/cli-bundle/chunks/chunk-3FI4SEFT.js.map +0 -7
  399. package/dist/cli-bundle/chunks/chunk-4LL6TK5B.js.map +0 -1
  400. package/dist/cli-bundle/chunks/chunk-52MAOQ6J.js.map +0 -7
  401. package/dist/cli-bundle/chunks/chunk-5FDATVEZ.js.map +0 -1
  402. package/dist/cli-bundle/chunks/chunk-5SFCOO6B.js.map +0 -1
  403. package/dist/cli-bundle/chunks/chunk-ECCMVXGM.js.map +0 -7
  404. package/dist/cli-bundle/chunks/chunk-FRAUKRU2.js.map +0 -1
  405. package/dist/cli-bundle/chunks/chunk-GU2ZJ2VV.js.map +0 -7
  406. package/dist/cli-bundle/chunks/chunk-HZGUAH22.js.map +0 -1
  407. package/dist/cli-bundle/chunks/chunk-IOR7LGF4.js.map +0 -1
  408. package/dist/cli-bundle/chunks/chunk-KJE2FOS4.js.map +0 -7
  409. package/dist/cli-bundle/chunks/chunk-KWU6HG75.js.map +0 -1
  410. package/dist/cli-bundle/chunks/chunk-LB3RUL2N.js.map +0 -1
  411. package/dist/cli-bundle/chunks/chunk-PDDFYW4X.js.map +0 -7
  412. package/dist/cli-bundle/chunks/chunk-PROOHX4K.js.map +0 -7
  413. package/dist/cli-bundle/chunks/chunk-Q7SPNHLW.js.map +0 -7
  414. package/dist/cli-bundle/chunks/chunk-QO7EBBOM.js.map +0 -7
  415. package/dist/cli-bundle/chunks/chunk-SKJWX3QB.js.map +0 -7
  416. package/dist/cli-bundle/chunks/chunk-T3LC5LKB.js.map +0 -7
  417. package/dist/cli-bundle/chunks/chunk-TCD3R2PF.js.map +0 -1
  418. package/dist/cli-bundle/chunks/chunk-TPH5XEVD.js.map +0 -1
  419. package/dist/cli-bundle/chunks/chunk-U5SXYXSY.js.map +0 -7
  420. package/dist/cli-bundle/chunks/chunk-W7XABV4H.js.map +0 -1
  421. package/dist/cli-bundle/chunks/chunk-WOPXVEZP.js.map +0 -1
  422. package/dist/cli-bundle/chunks/close-3HDWDA3L.js +0 -13
  423. package/dist/cli-bundle/chunks/close-many-7CGIDPTJ.js.map +0 -7
  424. package/dist/cli-bundle/chunks/close-many-ERFO6LHR.js.map +0 -1
  425. package/dist/cli-bundle/chunks/config-6FXCQKIF.js.map +0 -1
  426. package/dist/cli-bundle/chunks/config-U4RZ4CQB.js.map +0 -7
  427. package/dist/cli-bundle/chunks/context-YMJ3Z2HQ.js.map +0 -1
  428. package/dist/cli-bundle/chunks/contracts-QDB6OMLQ.js.map +0 -1
  429. package/dist/cli-bundle/chunks/contracts-RFSPGVVJ.js.map +0 -7
  430. package/dist/cli-bundle/chunks/create-JTZNCTQC.js +0 -27
  431. package/dist/cli-bundle/chunks/get-RV37HT3G.js.map +0 -1
  432. package/dist/cli-bundle/chunks/get-WXU6WI5P.js.map +0 -7
  433. package/dist/cli-bundle/chunks/history-2BA3T5AE.js +0 -20
  434. package/dist/cli-bundle/chunks/history-redact-JBZNXHGR.js +0 -19
  435. package/dist/cli-bundle/chunks/init-HIVSNX3O.js +0 -16
  436. package/dist/cli-bundle/chunks/list-MUSQNMTD.js +0 -20
  437. package/dist/cli-bundle/chunks/register-list-query-POCFZ5JW.js.map +0 -1
  438. package/dist/cli-bundle/chunks/register-list-query-WST76HSQ.js.map +0 -7
  439. package/dist/cli-bundle/chunks/register-mutation-N5GSUZJV.js.map +0 -1
  440. package/dist/cli-bundle/chunks/register-mutation-OA675SOU.js.map +0 -7
  441. package/dist/cli-bundle/chunks/register-operations-GNHBE5I3.js.map +0 -1
  442. package/dist/cli-bundle/chunks/register-operations-N3PMHXH5.js.map +0 -7
  443. package/dist/cli-bundle/chunks/restore-D4RGNX33.js +0 -17
  444. package/dist/cli-bundle/chunks/search-JPUQTVCY.js.map +0 -1
  445. package/dist/cli-bundle/chunks/search-OA6JX27A.js.map +0 -7
  446. package/dist/cli-bundle/chunks/test-MXX3E5JL.js +0 -31
  447. package/dist/cli-bundle/chunks/update-OSV3NAQB.js +0 -25
  448. package/dist/cli-bundle/chunks/update-YRXSUGYQ.js +0 -21
  449. /package/dist/cli-bundle/chunks/{activity-CVXTCHYY.js.map → activity-5UROHJ3D.js.map} +0 -0
  450. /package/dist/cli-bundle/chunks/{activity-JM6DTDND.js.map → activity-YVB3QRTE.js.map} +0 -0
  451. /package/dist/cli-bundle/chunks/{append-WMKRXKCE.js.map → append-2PPYFAG5.js.map} +0 -0
  452. /package/dist/cli-bundle/chunks/{append-7H5N64R2.js.map → append-AUGT5W6J.js.map} +0 -0
  453. /package/dist/cli-bundle/chunks/{chunk-6P6GGMOG.js.map → chunk-2IF7WLB7.js.map} +0 -0
  454. /package/dist/cli-bundle/chunks/{chunk-KAG77BY3.js.map → chunk-2OJHLWBZ.js.map} +0 -0
  455. /package/dist/cli-bundle/chunks/{chunk-GXSUPCBV.js.map → chunk-3A2CMEM7.js.map} +0 -0
  456. /package/dist/cli-bundle/chunks/{chunk-UM2GBHS4.js.map → chunk-3EOBJOF4.js.map} +0 -0
  457. /package/dist/cli-bundle/chunks/{chunk-PRJCELV4.js.map → chunk-4CHEG6UK.js.map} +0 -0
  458. /package/dist/cli-bundle/chunks/{chunk-OZ7NSQHL.js.map → chunk-5AXMRKN5.js.map} +0 -0
  459. /package/dist/cli-bundle/chunks/{chunk-GCOQW437.js.map → chunk-6J4K6JLA.js.map} +0 -0
  460. /package/dist/cli-bundle/chunks/{chunk-2RSPZI5H.js.map → chunk-6RZXO5M2.js.map} +0 -0
  461. /package/dist/cli-bundle/chunks/{chunk-KJ33AOCY.js.map → chunk-AVJD6VTA.js.map} +0 -0
  462. /package/dist/cli-bundle/chunks/{chunk-I6BNFU5X.js.map → chunk-B5RF3IP7.js.map} +0 -0
  463. /package/dist/cli-bundle/chunks/{chunk-RZN6VURO.js.map → chunk-C5W2UH56.js.map} +0 -0
  464. /package/dist/cli-bundle/chunks/{chunk-3LB74A67.js.map → chunk-CKLBZHS7.js.map} +0 -0
  465. /package/dist/cli-bundle/chunks/{chunk-3VAM3NNM.js.map → chunk-FY6Z3FYY.js.map} +0 -0
  466. /package/dist/cli-bundle/chunks/{chunk-RWPSOIEE.js.map → chunk-GNIUOLZ2.js.map} +0 -0
  467. /package/dist/cli-bundle/chunks/{chunk-MITFDD35.js.map → chunk-GPXQBR3H.js.map} +0 -0
  468. /package/dist/cli-bundle/chunks/{chunk-I2HSTRJF.js.map → chunk-H7EO3QA3.js.map} +0 -0
  469. /package/dist/cli-bundle/chunks/{chunk-77GFDHGF.js.map → chunk-HLC3KTLP.js.map} +0 -0
  470. /package/dist/cli-bundle/chunks/{chunk-OVQCEJPG.js.map → chunk-HMMMWBK2.js.map} +0 -0
  471. /package/dist/cli-bundle/chunks/{chunk-XLTD2HN3.js.map → chunk-HV5SSZXF.js.map} +0 -0
  472. /package/dist/cli-bundle/chunks/{chunk-2HVRUSQA.js.map → chunk-KNGVP5WJ.js.map} +0 -0
  473. /package/dist/cli-bundle/chunks/{chunk-3BWOVLTH.js.map → chunk-LI65XLJR.js.map} +0 -0
  474. /package/dist/cli-bundle/chunks/{chunk-NUZ5HKR4.js.map → chunk-LIN2BPJ7.js.map} +0 -0
  475. /package/dist/cli-bundle/chunks/{chunk-N7ACFE26.js.map → chunk-LQHBENVW.js.map} +0 -0
  476. /package/dist/cli-bundle/chunks/{chunk-23YFZ3IG.js.map → chunk-LXO6V66E.js.map} +0 -0
  477. /package/dist/cli-bundle/chunks/{chunk-PIU6RSL3.js.map → chunk-MOYM2C3J.js.map} +0 -0
  478. /package/dist/cli-bundle/chunks/{chunk-IJGCZSIQ.js.map → chunk-NQL32HQ5.js.map} +0 -0
  479. /package/dist/cli-bundle/chunks/{chunk-6ER6DXH5.js.map → chunk-OKSKJKHX.js.map} +0 -0
  480. /package/dist/cli-bundle/chunks/{chunk-2VVCGBNV.js.map → chunk-R3V3YCMH.js.map} +0 -0
  481. /package/dist/cli-bundle/chunks/{chunk-UBOPJT3S.js.map → chunk-RVPTZKBC.js.map} +0 -0
  482. /package/dist/cli-bundle/chunks/{chunk-WKY2IBOQ.js.map → chunk-SFFVGNHC.js.map} +0 -0
  483. /package/dist/cli-bundle/chunks/{chunk-WSMOSYRD.js.map → chunk-SQPKRA54.js.map} +0 -0
  484. /package/dist/cli-bundle/chunks/{chunk-YL2DJGYS.js.map → chunk-TNPBPNII.js.map} +0 -0
  485. /package/dist/cli-bundle/chunks/{chunk-XTGLRY2Y.js.map → chunk-TP4DDY27.js.map} +0 -0
  486. /package/dist/cli-bundle/chunks/{chunk-AY43SBIN.js.map → chunk-TYJJOTUA.js.map} +0 -0
  487. /package/dist/cli-bundle/chunks/{chunk-LCM63IXU.js.map → chunk-UAQOQ7IE.js.map} +0 -0
  488. /package/dist/cli-bundle/chunks/{chunk-BQHUILZS.js.map → chunk-UEWA73ZZ.js.map} +0 -0
  489. /package/dist/cli-bundle/chunks/{chunk-PO3GSVFV.js.map → chunk-UIIQC5YO.js.map} +0 -0
  490. /package/dist/cli-bundle/chunks/{chunk-R6UFP2GE.js.map → chunk-V6EYFTRL.js.map} +0 -0
  491. /package/dist/cli-bundle/chunks/{chunk-XSJCLN2R.js.map → chunk-WYEXLDDY.js.map} +0 -0
  492. /package/dist/cli-bundle/chunks/{chunk-E5FJNAZA.js.map → chunk-X7UHMKPE.js.map} +0 -0
  493. /package/dist/cli-bundle/chunks/{chunk-GGYWB3Y2.js.map → chunk-YBZW2QQ7.js.map} +0 -0
  494. /package/dist/cli-bundle/chunks/{chunk-ME2YH6FN.js.map → chunk-YO3THIJF.js.map} +0 -0
  495. /package/dist/cli-bundle/chunks/{claim-X2P4IB7J.js.map → claim-BJ4QMPJC.js.map} +0 -0
  496. /package/dist/cli-bundle/chunks/{claim-4DBF6RVG.js.map → claim-KW743OSW.js.map} +0 -0
  497. /package/dist/cli-bundle/chunks/{close-3HDWDA3L.js.map → close-P4ZBKODL.js.map} +0 -0
  498. /package/dist/cli-bundle/chunks/{close-PTYFA45H.js.map → close-SYHSRZDC.js.map} +0 -0
  499. /package/dist/cli-bundle/chunks/{comments-QKBYCWKD.js.map → comments-JEO6HHVM.js.map} +0 -0
  500. /package/dist/cli-bundle/chunks/{comments-OONGABK5.js.map → comments-YT2PQ5DD.js.map} +0 -0
  501. /package/dist/cli-bundle/chunks/{create-JTZNCTQC.js.map → create-4DS2QWQC.js.map} +0 -0
  502. /package/dist/cli-bundle/chunks/{create-I5L4EYYZ.js.map → create-CF7EVRX7.js.map} +0 -0
  503. /package/dist/cli-bundle/chunks/{delete-7HPGI4GZ.js.map → delete-KR4VBWVE.js.map} +0 -0
  504. /package/dist/cli-bundle/chunks/{delete-VXUPH5RS.js.map → delete-XLZRTRKR.js.map} +0 -0
  505. /package/dist/cli-bundle/chunks/{deps-JSRRWC3Z.js.map → deps-2YTXD3VM.js.map} +0 -0
  506. /package/dist/cli-bundle/chunks/{deps-SCZIFK2Z.js.map → deps-GZMFMTGS.js.map} +0 -0
  507. /package/dist/cli-bundle/chunks/{docs-GJK6K4VP.js.map → docs-SLROFEQ4.js.map} +0 -0
  508. /package/dist/cli-bundle/chunks/{docs-WW4N3MBM.js.map → docs-ZHISRR2D.js.map} +0 -0
  509. /package/dist/cli-bundle/chunks/{extension-J7IBMFTD.js.map → extension-3C7OOI4F.js.map} +0 -0
  510. /package/dist/cli-bundle/chunks/{extension-VDY2U33M.js.map → extension-XYCUXICD.js.map} +0 -0
  511. /package/dist/cli-bundle/chunks/{files-ISZJGILQ.js.map → files-FUWF2FYJ.js.map} +0 -0
  512. /package/dist/cli-bundle/chunks/{files-WKOD326U.js.map → files-J4I5IU4O.js.map} +0 -0
  513. /package/dist/cli-bundle/chunks/{gc-JDVJ6OQ2.js.map → gc-34NXSNSN.js.map} +0 -0
  514. /package/dist/cli-bundle/chunks/{gc-ULPVWMTN.js.map → gc-SPIIZX3A.js.map} +0 -0
  515. /package/dist/cli-bundle/chunks/{history-PKN67D5O.js.map → history-SDAWYZR3.js.map} +0 -0
  516. /package/dist/cli-bundle/chunks/{history-2BA3T5AE.js.map → history-YDUEILKP.js.map} +0 -0
  517. /package/dist/cli-bundle/chunks/{history-redact-V4FOJGS7.js.map → history-redact-EPJ7GENL.js.map} +0 -0
  518. /package/dist/cli-bundle/chunks/{history-redact-JBZNXHGR.js.map → history-redact-KASLLPE7.js.map} +0 -0
  519. /package/dist/cli-bundle/chunks/{history-repair-SDMHR7JT.js.map → history-repair-IJ7LLBET.js.map} +0 -0
  520. /package/dist/cli-bundle/chunks/{history-repair-HIBCBIKK.js.map → history-repair-YNESJRT6.js.map} +0 -0
  521. /package/dist/cli-bundle/chunks/{init-HIVSNX3O.js.map → init-IGSS4GNH.js.map} +0 -0
  522. /package/dist/cli-bundle/chunks/{init-P56QYWJF.js.map → init-YHVBTEET.js.map} +0 -0
  523. /package/dist/cli-bundle/chunks/{learnings-GDFRG5J7.js.map → learnings-4YBMIVCZ.js.map} +0 -0
  524. /package/dist/cli-bundle/chunks/{learnings-MIXSESLK.js.map → learnings-T4PF24YN.js.map} +0 -0
  525. /package/dist/cli-bundle/chunks/{list-FGOWQMSM.js.map → list-3KEVBOYW.js.map} +0 -0
  526. /package/dist/cli-bundle/chunks/{list-MUSQNMTD.js.map → list-E44O2K64.js.map} +0 -0
  527. /package/dist/cli-bundle/chunks/{notes-4XVSH2AZ.js.map → notes-FLUCNJSH.js.map} +0 -0
  528. /package/dist/cli-bundle/chunks/{notes-5UK3GEH2.js.map → notes-GJKALVZM.js.map} +0 -0
  529. /package/dist/cli-bundle/chunks/{plan-SLMODHWX.js.map → plan-T5MMZLI3.js.map} +0 -0
  530. /package/dist/cli-bundle/chunks/{plan-DUMBV3QB.js.map → plan-YYMIL3HV.js.map} +0 -0
  531. /package/dist/cli-bundle/chunks/{restore-PBL6T5TW.js.map → restore-DDJGVZIN.js.map} +0 -0
  532. /package/dist/cli-bundle/chunks/{restore-D4RGNX33.js.map → restore-SJSASGZP.js.map} +0 -0
  533. /package/dist/cli-bundle/chunks/{schema-2NOO6NGB.js.map → schema-B7NQ6XVP.js.map} +0 -0
  534. /package/dist/cli-bundle/chunks/{schema-EBI4NLUO.js.map → schema-HEGYH6CE.js.map} +0 -0
  535. /package/dist/cli-bundle/chunks/{stats-CV54BAWY.js.map → stats-7JDIJRDH.js.map} +0 -0
  536. /package/dist/cli-bundle/chunks/{stats-XYB6KTFG.js.map → stats-SYTJRR4Z.js.map} +0 -0
  537. /package/dist/cli-bundle/chunks/{telemetry-LMJ7PFUO.js.map → telemetry-4HHWD5Y7.js.map} +0 -0
  538. /package/dist/cli-bundle/chunks/{telemetry-NCMEPJNR.js.map → telemetry-EGWP7ZUX.js.map} +0 -0
  539. /package/dist/cli-bundle/chunks/{test-WBROAJIE.js.map → test-IIELLSZX.js.map} +0 -0
  540. /package/dist/cli-bundle/chunks/{test-MXX3E5JL.js.map → test-ML5RLWXE.js.map} +0 -0
  541. /package/dist/cli-bundle/chunks/{test-runs-V6A7LPWZ.js.map → test-runs-5FEMBV3A.js.map} +0 -0
  542. /package/dist/cli-bundle/chunks/{test-runs-WMVTQU3Y.js.map → test-runs-RNKZ37PS.js.map} +0 -0
  543. /package/dist/cli-bundle/chunks/{update-YRXSUGYQ.js.map → update-6C67X4KS.js.map} +0 -0
  544. /package/dist/cli-bundle/chunks/{update-OSV3NAQB.js.map → update-VF26YPT3.js.map} +0 -0
  545. /package/dist/cli-bundle/chunks/{update-many-KGGEYABR.js.map → update-many-BSZZZYXY.js.map} +0 -0
  546. /package/dist/cli-bundle/chunks/{update-many-EM6OXYGO.js.map → update-many-BWKJJEBF.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a9d817e7-a20f-58e2-a7ee-eed2f71c0743")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="39fa2531-24d5-5083-b5c3-c4cc25c014ff")}catch(e){}}();
3
3
  import { TYPE_TO_FOLDER } from "../shared/constants.js";
4
4
  import { ITEM_TYPE_VALUES } from "../../types/index.js";
5
5
  import { normalizeItemTypeDefinition as normalizeSharedItemTypeDefinition, normalizeItemTypeStringList, strictPolicyCommand, } from "./item-type-definition.js";
@@ -309,16 +309,34 @@ export function commandOptionFlagLabel(command, optionKey) {
309
309
  return labels[optionKey] ?? `--${optionKey.replace(/([A-Z])/g, "-$1").toLowerCase()}`;
310
310
  }
311
311
  function toDefaultFolder(name) {
312
- const normalized = name
313
- .trim()
314
- .toLowerCase()
315
- .replace(/[^a-z0-9]+/g, "-")
316
- .replace(/^-+|-+$/g, "");
312
+ const normalized = toSlugToken(name);
317
313
  if (normalized.length === 0) {
318
314
  return "items";
319
315
  }
320
316
  return normalized.endsWith("s") ? normalized : `${normalized}s`;
321
317
  }
318
+ function toSlugToken(value) {
319
+ const trimmed = value.trim().toLowerCase();
320
+ let slug = "";
321
+ let pendingDash = false;
322
+ for (const character of trimmed) {
323
+ const code = character.charCodeAt(0);
324
+ const isAlpha = code >= 97 && code <= 122;
325
+ const isDigit = code >= 48 && code <= 57;
326
+ if (isAlpha || isDigit) {
327
+ if (pendingDash && slug.length > 0) {
328
+ slug += "-";
329
+ }
330
+ slug += character;
331
+ pendingDash = false;
332
+ continue;
333
+ }
334
+ if (slug.length > 0) {
335
+ pendingDash = true;
336
+ }
337
+ }
338
+ return slug;
339
+ }
322
340
  // Runtime registry consumes untrusted extension/file definitions, so it uses the
323
341
  // strict policy-command resolver (trim + lowercase, reject non-create/update). All
324
342
  // other normalization is single-sourced from ./item-type-definition.ts (pm-v798).
@@ -645,4 +663,4 @@ export function validateTypeOptions(typeName, rawTypeOptions, registry) {
645
663
  };
646
664
  }
647
665
  //# sourceMappingURL=type-registry.js.map
648
- //# debugId=a9d817e7-a20f-58e2-a7ee-eed2f71c0743
666
+ //# debugId=39fa2531-24d5-5083-b5c3-c4cc25c014ff
@@ -1 +1 @@
1
- {"version":3,"file":"type-registry.js","sources":["core/item/type-registry.ts"],"sourceRoot":"/","sourcesContent":["import { TYPE_TO_FOLDER } from \"../shared/constants.js\";\nimport type { ExtensionRegistrationRegistry } from \"../extensions/loader.js\";\nimport type {\n ItemTypeCommandOptionPolicy,\n ItemTypeDefinition,\n ItemTypeOptionDefinition,\n PmSettings,\n} from \"../../types/index.js\";\nimport { ITEM_TYPE_VALUES } from \"../../types/index.js\";\nimport {\n normalizeItemTypeDefinition as normalizeSharedItemTypeDefinition,\n normalizeItemTypeStringList,\n strictPolicyCommand,\n} from \"./item-type-definition.js\";\n\nexport const DEFAULT_REQUIRED_CREATE_FIELDS = [\n \"title\",\n \"description\",\n \"status\",\n \"priority\",\n \"tags\",\n \"body\",\n \"deadline\",\n \"estimatedMinutes\",\n \"acceptanceCriteria\",\n \"author\",\n \"message\",\n \"assignee\",\n] as const;\n\nexport const DEFAULT_REQUIRED_CREATE_REPEATABLES = [\"dep\", \"comment\", \"note\", \"learning\", \"file\", \"test\", \"doc\"] as const;\n\nexport type CommandOptionPolicyCommand = \"create\" | \"update\";\n\nconst CREATE_COMMAND_OPTION_KEYS = [\n \"title\",\n \"description\",\n \"type\",\n \"status\",\n \"priority\",\n \"tags\",\n \"body\",\n \"deadline\",\n \"estimatedMinutes\",\n \"acceptanceCriteria\",\n \"definitionOfReady\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"whyNow\",\n \"author\",\n \"message\",\n \"assignee\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blockedBy\",\n \"blockedReason\",\n \"unblockNote\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"reproSteps\",\n \"resolution\",\n \"expectedResult\",\n \"actualResult\",\n \"affectedVersion\",\n \"fixedVersion\",\n \"component\",\n \"regression\",\n \"customerImpact\",\n \"dep\",\n \"comment\",\n \"note\",\n \"learning\",\n \"file\",\n \"test\",\n \"doc\",\n \"reminder\",\n \"event\",\n \"typeOption\",\n \"field\",\n] as const;\n\nconst UPDATE_COMMAND_OPTION_KEYS = [\n \"title\",\n \"description\",\n \"body\",\n \"status\",\n \"closeReason\",\n \"priority\",\n \"type\",\n \"tags\",\n \"deadline\",\n \"estimatedMinutes\",\n \"acceptanceCriteria\",\n \"definitionOfReady\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"whyNow\",\n \"author\",\n \"message\",\n \"assignee\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blockedBy\",\n \"blockedReason\",\n \"unblockNote\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"reproSteps\",\n \"resolution\",\n \"expectedResult\",\n \"actualResult\",\n \"affectedVersion\",\n \"fixedVersion\",\n \"component\",\n \"regression\",\n \"customerImpact\",\n \"comment\",\n \"note\",\n \"learning\",\n \"file\",\n \"test\",\n \"doc\",\n \"reminder\",\n \"event\",\n \"typeOption\",\n \"field\",\n \"allowAuditUpdate\",\n \"force\",\n] as const;\n\nconst SHARED_COMMAND_OPTION_ALIASES: Record<string, string> = {\n \"close-reason\": \"closeReason\",\n close_reason: \"closeReason\",\n \"estimated-minutes\": \"estimatedMinutes\",\n estimated_minutes: \"estimatedMinutes\",\n estimate: \"estimatedMinutes\",\n \"acceptance-criteria\": \"acceptanceCriteria\",\n acceptance_criteria: \"acceptanceCriteria\",\n ac: \"acceptanceCriteria\",\n \"definition-of-ready\": \"definitionOfReady\",\n definition_of_ready: \"definitionOfReady\",\n rank: \"order\",\n \"why-now\": \"whyNow\",\n why_now: \"whyNow\",\n \"blocked-by\": \"blockedBy\",\n blocked_by: \"blockedBy\",\n \"blocked-reason\": \"blockedReason\",\n blocked_reason: \"blockedReason\",\n \"unblock-note\": \"unblockNote\",\n unblock_note: \"unblockNote\",\n \"repro-steps\": \"reproSteps\",\n repro_steps: \"reproSteps\",\n \"expected-result\": \"expectedResult\",\n expected_result: \"expectedResult\",\n \"actual-result\": \"actualResult\",\n actual_result: \"actualResult\",\n \"affected-version\": \"affectedVersion\",\n affected_version: \"affectedVersion\",\n \"fixed-version\": \"fixedVersion\",\n fixed_version: \"fixedVersion\",\n \"customer-impact\": \"customerImpact\",\n customer_impact: \"customerImpact\",\n \"type-option\": \"typeOption\",\n type_option: \"typeOption\",\n type_options: \"typeOption\",\n};\n\nconst CREATE_COMMAND_OPTION_ALIASES: Record<string, string> = {\n ...SHARED_COMMAND_OPTION_ALIASES,\n};\n\nconst UPDATE_COMMAND_OPTION_ALIASES: Record<string, string> = {\n ...SHARED_COMMAND_OPTION_ALIASES,\n \"allow-audit-update\": \"allowAuditUpdate\",\n allow_audit_update: \"allowAuditUpdate\",\n};\n\nconst CREATE_COMMAND_OPTION_FLAG_LABELS: Record<string, string> = {\n title: \"--title\",\n description: \"--description\",\n type: \"--type\",\n status: \"--status\",\n priority: \"--priority\",\n tags: \"--tags\",\n body: \"--body\",\n deadline: \"--deadline\",\n estimatedMinutes: \"--estimate/--estimated-minutes\",\n acceptanceCriteria: \"--acceptance-criteria/--ac\",\n definitionOfReady: \"--definition-of-ready\",\n order: \"--order/--rank\",\n goal: \"--goal\",\n objective: \"--objective\",\n value: \"--value\",\n impact: \"--impact\",\n outcome: \"--outcome\",\n whyNow: \"--why-now\",\n author: \"--author\",\n message: \"--message\",\n assignee: \"--assignee\",\n parent: \"--parent\",\n reviewer: \"--reviewer\",\n risk: \"--risk\",\n confidence: \"--confidence\",\n sprint: \"--sprint\",\n release: \"--release\",\n blockedBy: \"--blocked-by\",\n blockedReason: \"--blocked-reason\",\n unblockNote: \"--unblock-note\",\n reporter: \"--reporter\",\n severity: \"--severity\",\n environment: \"--environment\",\n reproSteps: \"--repro-steps\",\n resolution: \"--resolution\",\n expectedResult: \"--expected-result\",\n actualResult: \"--actual-result\",\n affectedVersion: \"--affected-version\",\n fixedVersion: \"--fixed-version\",\n component: \"--component\",\n regression: \"--regression\",\n customerImpact: \"--customer-impact\",\n dep: \"--dep\",\n comment: \"--comment\",\n note: \"--note\",\n learning: \"--learning\",\n file: \"--file\",\n test: \"--test\",\n doc: \"--doc\",\n reminder: \"--reminder\",\n event: \"--event\",\n typeOption: \"--type-option\",\n};\n\nconst UPDATE_COMMAND_OPTION_FLAG_LABELS: Record<string, string> = {\n title: \"--title\",\n description: \"--description\",\n body: \"--body\",\n status: \"--status\",\n closeReason: \"--close-reason\",\n priority: \"--priority\",\n type: \"--type\",\n tags: \"--tags\",\n deadline: \"--deadline\",\n estimatedMinutes: \"--estimate/--estimated-minutes\",\n acceptanceCriteria: \"--acceptance-criteria/--ac\",\n definitionOfReady: \"--definition-of-ready\",\n order: \"--order/--rank\",\n goal: \"--goal\",\n objective: \"--objective\",\n value: \"--value\",\n impact: \"--impact\",\n outcome: \"--outcome\",\n whyNow: \"--why-now\",\n assignee: \"--assignee\",\n parent: \"--parent\",\n reviewer: \"--reviewer\",\n risk: \"--risk\",\n confidence: \"--confidence\",\n sprint: \"--sprint\",\n release: \"--release\",\n blockedBy: \"--blocked-by\",\n blockedReason: \"--blocked-reason\",\n unblockNote: \"--unblock-note\",\n reporter: \"--reporter\",\n severity: \"--severity\",\n environment: \"--environment\",\n reproSteps: \"--repro-steps\",\n resolution: \"--resolution\",\n expectedResult: \"--expected-result\",\n actualResult: \"--actual-result\",\n affectedVersion: \"--affected-version\",\n fixedVersion: \"--fixed-version\",\n component: \"--component\",\n regression: \"--regression\",\n customerImpact: \"--customer-impact\",\n comment: \"--comment\",\n note: \"--note\",\n learning: \"--learning\",\n file: \"--file\",\n test: \"--test\",\n doc: \"--doc\",\n reminder: \"--reminder\",\n event: \"--event\",\n typeOption: \"--type-option\",\n allowAuditUpdate: \"--allow-audit-update\",\n author: \"--author\",\n message: \"--message\",\n force: \"--force\",\n};\n\nexport interface CommandOptionPolicyState {\n required: string[];\n hidden: string[];\n disabled: string[];\n errors: string[];\n}\n\nexport interface ResolvedItemTypeDefinition {\n name: string;\n /** Optional human description carried from the type definition. */\n description?: string;\n folder: string;\n aliases: string[];\n /** Optional per-type status applied at create time when `--status` is omitted. */\n default_status?: string;\n required_create_fields: string[];\n required_create_repeatables: string[];\n options: ItemTypeOptionDefinition[];\n command_option_policies: ItemTypeCommandOptionPolicy[];\n}\n\nexport interface ItemTypeRegistry {\n types: string[];\n folders: string[];\n type_to_folder: Record<string, string>;\n by_type: Record<string, ResolvedItemTypeDefinition>;\n alias_to_type: Record<string, string>;\n}\n\nfunction normalizeCommandOptionToken(value: string): string {\n return value.trim().replace(/^--+/, \"\").toLowerCase();\n}\n\nfunction commandOptionKeys(command: CommandOptionPolicyCommand): readonly string[] {\n return command === \"create\" ? CREATE_COMMAND_OPTION_KEYS : UPDATE_COMMAND_OPTION_KEYS;\n}\n\nfunction commandOptionAliases(command: CommandOptionPolicyCommand): Record<string, string> {\n return command === \"create\" ? CREATE_COMMAND_OPTION_ALIASES : UPDATE_COMMAND_OPTION_ALIASES;\n}\n\nexport function canonicalizeCommandOptionKey(\n command: CommandOptionPolicyCommand,\n rawOption: string,\n): string | undefined {\n const normalizedToken = normalizeCommandOptionToken(rawOption);\n if (normalizedToken.length === 0) {\n return undefined;\n }\n const aliased = commandOptionAliases(command)[normalizedToken];\n if (aliased) {\n return aliased;\n }\n return commandOptionKeys(command).find((candidate) => candidate.toLowerCase() === normalizedToken);\n}\n\nexport function commandOptionFlagLabel(command: CommandOptionPolicyCommand, optionKey: string): string {\n const labels = command === \"create\" ? CREATE_COMMAND_OPTION_FLAG_LABELS : UPDATE_COMMAND_OPTION_FLAG_LABELS;\n return labels[optionKey] ?? `--${optionKey.replace(/([A-Z])/g, \"-$1\").toLowerCase()}`;\n}\n\nfunction toDefaultFolder(name: string): string {\n const normalized = name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (normalized.length === 0) {\n return \"items\";\n }\n return normalized.endsWith(\"s\") ? normalized : `${normalized}s`;\n}\n\n// Runtime registry consumes untrusted extension/file definitions, so it uses the\n// strict policy-command resolver (trim + lowercase, reject non-create/update). All\n// other normalization is single-sourced from ./item-type-definition.ts (pm-v798).\nfunction normalizeTypeDefinition(definition: ItemTypeDefinition): ItemTypeDefinition | null {\n return normalizeSharedItemTypeDefinition(definition, { resolvePolicyCommand: strictPolicyCommand });\n}\n\nfunction coerceTypeDefinitionFromUnknown(raw: unknown): ItemTypeDefinition | null {\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n return null;\n }\n const record = raw as Record<string, unknown>;\n const name = typeof record.name === \"string\" ? record.name : \"\";\n if (name.trim().length === 0) {\n return null;\n }\n const folder = typeof record.folder === \"string\" ? record.folder : undefined;\n const description = typeof record.description === \"string\" ? record.description : undefined;\n const defaultStatus = typeof record.default_status === \"string\" ? record.default_status : undefined;\n const aliases = Array.isArray(record.aliases) ? record.aliases.filter((value): value is string => typeof value === \"string\") : undefined;\n const requiredCreateFields = Array.isArray(record.required_create_fields)\n ? record.required_create_fields.filter((value): value is string => typeof value === \"string\")\n : undefined;\n const requiredCreateRepeatables = Array.isArray(record.required_create_repeatables)\n ? record.required_create_repeatables.filter((value): value is string => typeof value === \"string\")\n : undefined;\n let options: ItemTypeOptionDefinition[] | undefined;\n if (Array.isArray(record.options)) {\n options = [];\n for (const entry of record.options) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n continue;\n }\n const optionRecord = entry as Record<string, unknown>;\n if (typeof optionRecord.key !== \"string\") {\n continue;\n }\n options.push({\n key: optionRecord.key,\n values: Array.isArray(optionRecord.values)\n ? optionRecord.values.filter((value): value is string => typeof value === \"string\")\n : [],\n required: optionRecord.required === undefined ? undefined : Boolean(optionRecord.required),\n aliases: Array.isArray(optionRecord.aliases)\n ? optionRecord.aliases.filter((value): value is string => typeof value === \"string\")\n : undefined,\n description: typeof optionRecord.description === \"string\" ? optionRecord.description : undefined,\n });\n }\n }\n let commandOptionPolicies: ItemTypeCommandOptionPolicy[] | undefined;\n if (Array.isArray(record.command_option_policies)) {\n commandOptionPolicies = [];\n for (const entry of record.command_option_policies) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n continue;\n }\n const policyRecord = entry as Record<string, unknown>;\n if (typeof policyRecord.command !== \"string\" || typeof policyRecord.option !== \"string\") {\n continue;\n }\n const normalizedCommand = policyRecord.command.trim().toLowerCase();\n if (normalizedCommand !== \"create\" && normalizedCommand !== \"update\") {\n continue;\n }\n commandOptionPolicies.push({\n command: normalizedCommand,\n option: policyRecord.option,\n required: policyRecord.required === undefined ? undefined : Boolean(policyRecord.required),\n visible: policyRecord.visible === undefined ? undefined : Boolean(policyRecord.visible),\n enabled: policyRecord.enabled === undefined ? undefined : Boolean(policyRecord.enabled),\n });\n }\n }\n return {\n name,\n description,\n default_status: defaultStatus,\n folder,\n aliases,\n required_create_fields: requiredCreateFields,\n required_create_repeatables: requiredCreateRepeatables,\n options,\n command_option_policies: commandOptionPolicies,\n };\n}\n\nfunction applyTypeDefinitions(\n source: ItemTypeDefinition[],\n target: Map<string, ResolvedItemTypeDefinition>,\n preserveBuiltinDefaults: boolean,\n): void {\n for (const rawDefinition of source) {\n const normalizedDefinition = normalizeTypeDefinition(rawDefinition);\n if (!normalizedDefinition) {\n continue;\n }\n const lowerName = normalizedDefinition.name.toLowerCase();\n const existing = target.get(lowerName);\n const keepName = existing?.name ?? normalizedDefinition.name;\n const folder = normalizedDefinition.folder ?? existing?.folder ?? toDefaultFolder(keepName);\n const aliases = normalizeItemTypeStringList([\n ...(existing?.aliases ?? []),\n ...(normalizedDefinition.aliases ?? []),\n ]);\n const requiredCreateFields = normalizedDefinition.required_create_fields\n ? normalizeItemTypeStringList(normalizedDefinition.required_create_fields)\n : existing?.required_create_fields ??\n (preserveBuiltinDefaults ? [...DEFAULT_REQUIRED_CREATE_FIELDS] : []);\n const requiredCreateRepeatables = normalizedDefinition.required_create_repeatables\n ? normalizeItemTypeStringList(normalizedDefinition.required_create_repeatables)\n : existing?.required_create_repeatables ??\n (preserveBuiltinDefaults ? [...DEFAULT_REQUIRED_CREATE_REPEATABLES] : []);\n const options = normalizedDefinition.options\n ? normalizedDefinition.options\n : existing?.options\n ? [...existing.options]\n : [];\n const commandOptionPolicies = normalizedDefinition.command_option_policies\n ? normalizedDefinition.command_option_policies\n : existing?.command_option_policies\n ? [...existing.command_option_policies]\n : [];\n const defaultStatus = normalizedDefinition.default_status ?? existing?.default_status;\n const description = normalizedDefinition.description ?? existing?.description;\n target.set(lowerName, {\n name: keepName,\n ...(description ? { description } : {}),\n ...(defaultStatus ? { default_status: defaultStatus } : {}),\n folder,\n aliases,\n required_create_fields: requiredCreateFields,\n required_create_repeatables: requiredCreateRepeatables,\n options,\n command_option_policies: commandOptionPolicies,\n });\n }\n}\n\nfunction collectExtensionTypeDefinitions(registrations: ExtensionRegistrationRegistry | null | undefined): ItemTypeDefinition[] {\n if (!registrations) {\n return [];\n }\n const definitions: ItemTypeDefinition[] = [];\n for (const registration of registrations.item_types ?? []) {\n const typeDefinitionsRaw = (registration as { types?: unknown[] }).types;\n if (!Array.isArray(typeDefinitionsRaw)) {\n continue;\n }\n for (const rawDefinition of typeDefinitionsRaw) {\n const normalized = coerceTypeDefinitionFromUnknown(rawDefinition);\n if (normalized) {\n definitions.push(normalized);\n }\n }\n }\n return definitions;\n}\n\nexport function resolveItemTypeRegistry(\n settings: PmSettings,\n extensionRegistrations: ExtensionRegistrationRegistry | null | undefined = null,\n): ItemTypeRegistry {\n const byLowerName = new Map<string, ResolvedItemTypeDefinition>();\n for (const builtin of ITEM_TYPE_VALUES) {\n byLowerName.set(builtin.toLowerCase(), {\n name: builtin,\n folder: TYPE_TO_FOLDER[builtin],\n aliases: [],\n required_create_fields: [...DEFAULT_REQUIRED_CREATE_FIELDS],\n required_create_repeatables: [...DEFAULT_REQUIRED_CREATE_REPEATABLES],\n options: [],\n command_option_policies: [],\n });\n }\n\n applyTypeDefinitions(settings.item_types?.definitions ?? [], byLowerName, false);\n applyTypeDefinitions(collectExtensionTypeDefinitions(extensionRegistrations), byLowerName, false);\n\n const definitions = [...byLowerName.values()].sort((left, right) => left.name.localeCompare(right.name));\n const byType: Record<string, ResolvedItemTypeDefinition> = {};\n const aliasToType: Record<string, string> = {};\n const typeToFolder: Record<string, string> = {};\n for (const definition of definitions) {\n byType[definition.name] = definition;\n typeToFolder[definition.name] = definition.folder;\n aliasToType[definition.name.toLowerCase()] = definition.name;\n for (const alias of definition.aliases) {\n aliasToType[alias.toLowerCase()] = definition.name;\n }\n }\n const folders = [...new Set(definitions.map((definition) => definition.folder))].sort((left, right) => left.localeCompare(right));\n return {\n types: definitions.map((definition) => definition.name),\n folders,\n type_to_folder: typeToFolder,\n by_type: byType,\n alias_to_type: aliasToType,\n };\n}\n\nexport function resolveTypeName(rawType: string | undefined, registry: ItemTypeRegistry): string | undefined {\n if (rawType === undefined) {\n return undefined;\n }\n return registry.alias_to_type[rawType.trim().toLowerCase()];\n}\n\nexport function resolveTypeDefinition(\n typeName: string | undefined,\n registry: ItemTypeRegistry,\n): ResolvedItemTypeDefinition | undefined {\n const resolvedName = resolveTypeName(typeName, registry);\n if (!resolvedName) {\n return undefined;\n }\n return registry.by_type[resolvedName];\n}\n\nexport function resolveCommandOptionPolicyState(\n typeDefinition: ResolvedItemTypeDefinition,\n command: CommandOptionPolicyCommand,\n baseRequiredOptions: Iterable<string>,\n): CommandOptionPolicyState {\n const errors: string[] = [];\n const required = new Set<string>();\n const hidden = new Set<string>();\n const disabled = new Set<string>();\n\n for (const rawBase of baseRequiredOptions) {\n const canonical = canonicalizeCommandOptionKey(command, rawBase);\n if (!canonical) {\n errors.push(\n `Unsupported base required option \"${rawBase}\" for command \"${command}\" on type \"${typeDefinition.name}\"`,\n );\n continue;\n }\n required.add(canonical);\n }\n\n for (const policy of typeDefinition.command_option_policies) {\n if (policy.command !== command) {\n continue;\n }\n const canonical = canonicalizeCommandOptionKey(command, policy.option);\n if (!canonical) {\n errors.push(\n `Unsupported command_option_policies option \"${policy.option}\" for command \"${command}\" on type \"${typeDefinition.name}\"`,\n );\n continue;\n }\n if (policy.required !== undefined) {\n if (policy.required) {\n required.add(canonical);\n } else {\n required.delete(canonical);\n }\n }\n if (policy.visible !== undefined) {\n if (policy.visible) {\n hidden.delete(canonical);\n } else {\n hidden.add(canonical);\n }\n }\n if (policy.enabled !== undefined) {\n if (policy.enabled) {\n disabled.delete(canonical);\n } else {\n disabled.add(canonical);\n }\n }\n }\n\n for (const option of required) {\n if (disabled.has(option)) {\n errors.push(\n `Option \"${option}\" cannot be both required and disabled for command \"${command}\" on type \"${typeDefinition.name}\"`,\n );\n }\n }\n\n return {\n required: [...required],\n hidden: [...hidden].sort((left, right) => left.localeCompare(right)),\n disabled: [...disabled].sort((left, right) => left.localeCompare(right)),\n errors,\n };\n}\n\nexport function validateTypeOptions(\n typeName: string,\n rawTypeOptions: Record<string, string> | undefined,\n registry: ItemTypeRegistry,\n): { normalized: Record<string, string> | undefined; errors: string[] } {\n const typeDefinition = resolveTypeDefinition(typeName, registry);\n if (!typeDefinition) {\n return {\n normalized: undefined,\n errors: [`Unknown type \"${typeName}\"`],\n };\n }\n const errors: string[] = [];\n const optionByAlias = new Map<string, ItemTypeOptionDefinition>();\n for (const option of typeDefinition.options) {\n optionByAlias.set(option.key.toLowerCase(), option);\n for (const alias of option.aliases ?? []) {\n optionByAlias.set(alias.toLowerCase(), option);\n }\n }\n\n const normalized: Record<string, string> = {};\n for (const [rawKey, rawValue] of Object.entries(rawTypeOptions ?? {})) {\n const trimmedKey = rawKey.trim();\n const trimmedValue = rawValue.trim();\n if (trimmedKey.length === 0) {\n errors.push(\"type option keys must not be empty\");\n continue;\n }\n if (trimmedValue.length === 0) {\n errors.push(`type option \"${trimmedKey}\" must not be empty`);\n continue;\n }\n const optionDefinition = optionByAlias.get(trimmedKey.toLowerCase());\n if (!optionDefinition) {\n const allowed = typeDefinition.options.map((option) => option.key).join(\", \");\n errors.push(\n typeDefinition.options.length > 0\n ? `Unknown type option \"${trimmedKey}\" for type \"${typeDefinition.name}\". Allowed: ${allowed}`\n : `Type \"${typeDefinition.name}\" does not define any configurable type options`,\n );\n continue;\n }\n const allowedValues = optionDefinition.values;\n let resolvedValue = trimmedValue;\n if (allowedValues.length > 0) {\n const valueLookup = new Map(allowedValues.map((value) => [value.toLowerCase(), value]));\n const canonical = valueLookup.get(trimmedValue.toLowerCase());\n if (!canonical) {\n errors.push(\n `Invalid value \"${trimmedValue}\" for type option \"${optionDefinition.key}\". Allowed: ${allowedValues.join(\", \")}`,\n );\n continue;\n }\n resolvedValue = canonical;\n }\n normalized[optionDefinition.key] = resolvedValue;\n }\n\n for (const option of typeDefinition.options) {\n if (option.required && !(option.key in normalized)) {\n errors.push(`Missing required type option \"${option.key}\" for type \"${typeDefinition.name}\"`);\n }\n }\n\n const sortedKeys = Object.keys(normalized).sort((left, right) => left.localeCompare(right));\n if (sortedKeys.length === 0) {\n return {\n normalized: undefined,\n errors,\n };\n }\n return {\n normalized: Object.fromEntries(sortedKeys.map((key) => [key, normalized[key]])),\n errors,\n };\n}\n"],"names":[],"mappings":"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","debugId":"a9d817e7-a20f-58e2-a7ee-eed2f71c0743"}
1
+ {"version":3,"file":"type-registry.js","sources":["core/item/type-registry.ts"],"sourceRoot":"/","sourcesContent":["import { TYPE_TO_FOLDER } from \"../shared/constants.js\";\nimport type { ExtensionRegistrationRegistry } from \"../extensions/loader.js\";\nimport type {\n ItemTypeCommandOptionPolicy,\n ItemTypeDefinition,\n ItemTypeOptionDefinition,\n PmSettings,\n} from \"../../types/index.js\";\nimport { ITEM_TYPE_VALUES } from \"../../types/index.js\";\nimport {\n normalizeItemTypeDefinition as normalizeSharedItemTypeDefinition,\n normalizeItemTypeStringList,\n strictPolicyCommand,\n} from \"./item-type-definition.js\";\n\nexport const DEFAULT_REQUIRED_CREATE_FIELDS = [\n \"title\",\n \"description\",\n \"status\",\n \"priority\",\n \"tags\",\n \"body\",\n \"deadline\",\n \"estimatedMinutes\",\n \"acceptanceCriteria\",\n \"author\",\n \"message\",\n \"assignee\",\n] as const;\n\nexport const DEFAULT_REQUIRED_CREATE_REPEATABLES = [\"dep\", \"comment\", \"note\", \"learning\", \"file\", \"test\", \"doc\"] as const;\n\nexport type CommandOptionPolicyCommand = \"create\" | \"update\";\n\nconst CREATE_COMMAND_OPTION_KEYS = [\n \"title\",\n \"description\",\n \"type\",\n \"status\",\n \"priority\",\n \"tags\",\n \"body\",\n \"deadline\",\n \"estimatedMinutes\",\n \"acceptanceCriteria\",\n \"definitionOfReady\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"whyNow\",\n \"author\",\n \"message\",\n \"assignee\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blockedBy\",\n \"blockedReason\",\n \"unblockNote\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"reproSteps\",\n \"resolution\",\n \"expectedResult\",\n \"actualResult\",\n \"affectedVersion\",\n \"fixedVersion\",\n \"component\",\n \"regression\",\n \"customerImpact\",\n \"dep\",\n \"comment\",\n \"note\",\n \"learning\",\n \"file\",\n \"test\",\n \"doc\",\n \"reminder\",\n \"event\",\n \"typeOption\",\n \"field\",\n] as const;\n\nconst UPDATE_COMMAND_OPTION_KEYS = [\n \"title\",\n \"description\",\n \"body\",\n \"status\",\n \"closeReason\",\n \"priority\",\n \"type\",\n \"tags\",\n \"deadline\",\n \"estimatedMinutes\",\n \"acceptanceCriteria\",\n \"definitionOfReady\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"whyNow\",\n \"author\",\n \"message\",\n \"assignee\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blockedBy\",\n \"blockedReason\",\n \"unblockNote\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"reproSteps\",\n \"resolution\",\n \"expectedResult\",\n \"actualResult\",\n \"affectedVersion\",\n \"fixedVersion\",\n \"component\",\n \"regression\",\n \"customerImpact\",\n \"comment\",\n \"note\",\n \"learning\",\n \"file\",\n \"test\",\n \"doc\",\n \"reminder\",\n \"event\",\n \"typeOption\",\n \"field\",\n \"allowAuditUpdate\",\n \"force\",\n] as const;\n\nconst SHARED_COMMAND_OPTION_ALIASES: Record<string, string> = {\n \"close-reason\": \"closeReason\",\n close_reason: \"closeReason\",\n \"estimated-minutes\": \"estimatedMinutes\",\n estimated_minutes: \"estimatedMinutes\",\n estimate: \"estimatedMinutes\",\n \"acceptance-criteria\": \"acceptanceCriteria\",\n acceptance_criteria: \"acceptanceCriteria\",\n ac: \"acceptanceCriteria\",\n \"definition-of-ready\": \"definitionOfReady\",\n definition_of_ready: \"definitionOfReady\",\n rank: \"order\",\n \"why-now\": \"whyNow\",\n why_now: \"whyNow\",\n \"blocked-by\": \"blockedBy\",\n blocked_by: \"blockedBy\",\n \"blocked-reason\": \"blockedReason\",\n blocked_reason: \"blockedReason\",\n \"unblock-note\": \"unblockNote\",\n unblock_note: \"unblockNote\",\n \"repro-steps\": \"reproSteps\",\n repro_steps: \"reproSteps\",\n \"expected-result\": \"expectedResult\",\n expected_result: \"expectedResult\",\n \"actual-result\": \"actualResult\",\n actual_result: \"actualResult\",\n \"affected-version\": \"affectedVersion\",\n affected_version: \"affectedVersion\",\n \"fixed-version\": \"fixedVersion\",\n fixed_version: \"fixedVersion\",\n \"customer-impact\": \"customerImpact\",\n customer_impact: \"customerImpact\",\n \"type-option\": \"typeOption\",\n type_option: \"typeOption\",\n type_options: \"typeOption\",\n};\n\nconst CREATE_COMMAND_OPTION_ALIASES: Record<string, string> = {\n ...SHARED_COMMAND_OPTION_ALIASES,\n};\n\nconst UPDATE_COMMAND_OPTION_ALIASES: Record<string, string> = {\n ...SHARED_COMMAND_OPTION_ALIASES,\n \"allow-audit-update\": \"allowAuditUpdate\",\n allow_audit_update: \"allowAuditUpdate\",\n};\n\nconst CREATE_COMMAND_OPTION_FLAG_LABELS: Record<string, string> = {\n title: \"--title\",\n description: \"--description\",\n type: \"--type\",\n status: \"--status\",\n priority: \"--priority\",\n tags: \"--tags\",\n body: \"--body\",\n deadline: \"--deadline\",\n estimatedMinutes: \"--estimate/--estimated-minutes\",\n acceptanceCriteria: \"--acceptance-criteria/--ac\",\n definitionOfReady: \"--definition-of-ready\",\n order: \"--order/--rank\",\n goal: \"--goal\",\n objective: \"--objective\",\n value: \"--value\",\n impact: \"--impact\",\n outcome: \"--outcome\",\n whyNow: \"--why-now\",\n author: \"--author\",\n message: \"--message\",\n assignee: \"--assignee\",\n parent: \"--parent\",\n reviewer: \"--reviewer\",\n risk: \"--risk\",\n confidence: \"--confidence\",\n sprint: \"--sprint\",\n release: \"--release\",\n blockedBy: \"--blocked-by\",\n blockedReason: \"--blocked-reason\",\n unblockNote: \"--unblock-note\",\n reporter: \"--reporter\",\n severity: \"--severity\",\n environment: \"--environment\",\n reproSteps: \"--repro-steps\",\n resolution: \"--resolution\",\n expectedResult: \"--expected-result\",\n actualResult: \"--actual-result\",\n affectedVersion: \"--affected-version\",\n fixedVersion: \"--fixed-version\",\n component: \"--component\",\n regression: \"--regression\",\n customerImpact: \"--customer-impact\",\n dep: \"--dep\",\n comment: \"--comment\",\n note: \"--note\",\n learning: \"--learning\",\n file: \"--file\",\n test: \"--test\",\n doc: \"--doc\",\n reminder: \"--reminder\",\n event: \"--event\",\n typeOption: \"--type-option\",\n};\n\nconst UPDATE_COMMAND_OPTION_FLAG_LABELS: Record<string, string> = {\n title: \"--title\",\n description: \"--description\",\n body: \"--body\",\n status: \"--status\",\n closeReason: \"--close-reason\",\n priority: \"--priority\",\n type: \"--type\",\n tags: \"--tags\",\n deadline: \"--deadline\",\n estimatedMinutes: \"--estimate/--estimated-minutes\",\n acceptanceCriteria: \"--acceptance-criteria/--ac\",\n definitionOfReady: \"--definition-of-ready\",\n order: \"--order/--rank\",\n goal: \"--goal\",\n objective: \"--objective\",\n value: \"--value\",\n impact: \"--impact\",\n outcome: \"--outcome\",\n whyNow: \"--why-now\",\n assignee: \"--assignee\",\n parent: \"--parent\",\n reviewer: \"--reviewer\",\n risk: \"--risk\",\n confidence: \"--confidence\",\n sprint: \"--sprint\",\n release: \"--release\",\n blockedBy: \"--blocked-by\",\n blockedReason: \"--blocked-reason\",\n unblockNote: \"--unblock-note\",\n reporter: \"--reporter\",\n severity: \"--severity\",\n environment: \"--environment\",\n reproSteps: \"--repro-steps\",\n resolution: \"--resolution\",\n expectedResult: \"--expected-result\",\n actualResult: \"--actual-result\",\n affectedVersion: \"--affected-version\",\n fixedVersion: \"--fixed-version\",\n component: \"--component\",\n regression: \"--regression\",\n customerImpact: \"--customer-impact\",\n comment: \"--comment\",\n note: \"--note\",\n learning: \"--learning\",\n file: \"--file\",\n test: \"--test\",\n doc: \"--doc\",\n reminder: \"--reminder\",\n event: \"--event\",\n typeOption: \"--type-option\",\n allowAuditUpdate: \"--allow-audit-update\",\n author: \"--author\",\n message: \"--message\",\n force: \"--force\",\n};\n\nexport interface CommandOptionPolicyState {\n required: string[];\n hidden: string[];\n disabled: string[];\n errors: string[];\n}\n\nexport interface ResolvedItemTypeDefinition {\n name: string;\n /** Optional human description carried from the type definition. */\n description?: string;\n folder: string;\n aliases: string[];\n /** Optional per-type status applied at create time when `--status` is omitted. */\n default_status?: string;\n required_create_fields: string[];\n required_create_repeatables: string[];\n options: ItemTypeOptionDefinition[];\n command_option_policies: ItemTypeCommandOptionPolicy[];\n}\n\nexport interface ItemTypeRegistry {\n types: string[];\n folders: string[];\n type_to_folder: Record<string, string>;\n by_type: Record<string, ResolvedItemTypeDefinition>;\n alias_to_type: Record<string, string>;\n}\n\nfunction normalizeCommandOptionToken(value: string): string {\n return value.trim().replace(/^--+/, \"\").toLowerCase();\n}\n\nfunction commandOptionKeys(command: CommandOptionPolicyCommand): readonly string[] {\n return command === \"create\" ? CREATE_COMMAND_OPTION_KEYS : UPDATE_COMMAND_OPTION_KEYS;\n}\n\nfunction commandOptionAliases(command: CommandOptionPolicyCommand): Record<string, string> {\n return command === \"create\" ? CREATE_COMMAND_OPTION_ALIASES : UPDATE_COMMAND_OPTION_ALIASES;\n}\n\nexport function canonicalizeCommandOptionKey(\n command: CommandOptionPolicyCommand,\n rawOption: string,\n): string | undefined {\n const normalizedToken = normalizeCommandOptionToken(rawOption);\n if (normalizedToken.length === 0) {\n return undefined;\n }\n const aliased = commandOptionAliases(command)[normalizedToken];\n if (aliased) {\n return aliased;\n }\n return commandOptionKeys(command).find((candidate) => candidate.toLowerCase() === normalizedToken);\n}\n\nexport function commandOptionFlagLabel(command: CommandOptionPolicyCommand, optionKey: string): string {\n const labels = command === \"create\" ? CREATE_COMMAND_OPTION_FLAG_LABELS : UPDATE_COMMAND_OPTION_FLAG_LABELS;\n return labels[optionKey] ?? `--${optionKey.replace(/([A-Z])/g, \"-$1\").toLowerCase()}`;\n}\n\nfunction toDefaultFolder(name: string): string {\n const normalized = toSlugToken(name);\n if (normalized.length === 0) {\n return \"items\";\n }\n return normalized.endsWith(\"s\") ? normalized : `${normalized}s`;\n}\n\nfunction toSlugToken(value: string): string {\n const trimmed = value.trim().toLowerCase();\n let slug = \"\";\n let pendingDash = false;\n for (const character of trimmed) {\n const code = character.charCodeAt(0);\n const isAlpha = code >= 97 && code <= 122;\n const isDigit = code >= 48 && code <= 57;\n if (isAlpha || isDigit) {\n if (pendingDash && slug.length > 0) {\n slug += \"-\";\n }\n slug += character;\n pendingDash = false;\n continue;\n }\n if (slug.length > 0) {\n pendingDash = true;\n }\n }\n return slug;\n}\n\n// Runtime registry consumes untrusted extension/file definitions, so it uses the\n// strict policy-command resolver (trim + lowercase, reject non-create/update). All\n// other normalization is single-sourced from ./item-type-definition.ts (pm-v798).\nfunction normalizeTypeDefinition(definition: ItemTypeDefinition): ItemTypeDefinition | null {\n return normalizeSharedItemTypeDefinition(definition, { resolvePolicyCommand: strictPolicyCommand });\n}\n\nfunction coerceTypeDefinitionFromUnknown(raw: unknown): ItemTypeDefinition | null {\n if (typeof raw !== \"object\" || raw === null || Array.isArray(raw)) {\n return null;\n }\n const record = raw as Record<string, unknown>;\n const name = typeof record.name === \"string\" ? record.name : \"\";\n if (name.trim().length === 0) {\n return null;\n }\n const folder = typeof record.folder === \"string\" ? record.folder : undefined;\n const description = typeof record.description === \"string\" ? record.description : undefined;\n const defaultStatus = typeof record.default_status === \"string\" ? record.default_status : undefined;\n const aliases = Array.isArray(record.aliases) ? record.aliases.filter((value): value is string => typeof value === \"string\") : undefined;\n const requiredCreateFields = Array.isArray(record.required_create_fields)\n ? record.required_create_fields.filter((value): value is string => typeof value === \"string\")\n : undefined;\n const requiredCreateRepeatables = Array.isArray(record.required_create_repeatables)\n ? record.required_create_repeatables.filter((value): value is string => typeof value === \"string\")\n : undefined;\n let options: ItemTypeOptionDefinition[] | undefined;\n if (Array.isArray(record.options)) {\n options = [];\n for (const entry of record.options) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n continue;\n }\n const optionRecord = entry as Record<string, unknown>;\n if (typeof optionRecord.key !== \"string\") {\n continue;\n }\n options.push({\n key: optionRecord.key,\n values: Array.isArray(optionRecord.values)\n ? optionRecord.values.filter((value): value is string => typeof value === \"string\")\n : [],\n required: optionRecord.required === undefined ? undefined : Boolean(optionRecord.required),\n aliases: Array.isArray(optionRecord.aliases)\n ? optionRecord.aliases.filter((value): value is string => typeof value === \"string\")\n : undefined,\n description: typeof optionRecord.description === \"string\" ? optionRecord.description : undefined,\n });\n }\n }\n let commandOptionPolicies: ItemTypeCommandOptionPolicy[] | undefined;\n if (Array.isArray(record.command_option_policies)) {\n commandOptionPolicies = [];\n for (const entry of record.command_option_policies) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n continue;\n }\n const policyRecord = entry as Record<string, unknown>;\n if (typeof policyRecord.command !== \"string\" || typeof policyRecord.option !== \"string\") {\n continue;\n }\n const normalizedCommand = policyRecord.command.trim().toLowerCase();\n if (normalizedCommand !== \"create\" && normalizedCommand !== \"update\") {\n continue;\n }\n commandOptionPolicies.push({\n command: normalizedCommand,\n option: policyRecord.option,\n required: policyRecord.required === undefined ? undefined : Boolean(policyRecord.required),\n visible: policyRecord.visible === undefined ? undefined : Boolean(policyRecord.visible),\n enabled: policyRecord.enabled === undefined ? undefined : Boolean(policyRecord.enabled),\n });\n }\n }\n return {\n name,\n description,\n default_status: defaultStatus,\n folder,\n aliases,\n required_create_fields: requiredCreateFields,\n required_create_repeatables: requiredCreateRepeatables,\n options,\n command_option_policies: commandOptionPolicies,\n };\n}\n\nfunction applyTypeDefinitions(\n source: ItemTypeDefinition[],\n target: Map<string, ResolvedItemTypeDefinition>,\n preserveBuiltinDefaults: boolean,\n): void {\n for (const rawDefinition of source) {\n const normalizedDefinition = normalizeTypeDefinition(rawDefinition);\n if (!normalizedDefinition) {\n continue;\n }\n const lowerName = normalizedDefinition.name.toLowerCase();\n const existing = target.get(lowerName);\n const keepName = existing?.name ?? normalizedDefinition.name;\n const folder = normalizedDefinition.folder ?? existing?.folder ?? toDefaultFolder(keepName);\n const aliases = normalizeItemTypeStringList([\n ...(existing?.aliases ?? []),\n ...(normalizedDefinition.aliases ?? []),\n ]);\n const requiredCreateFields = normalizedDefinition.required_create_fields\n ? normalizeItemTypeStringList(normalizedDefinition.required_create_fields)\n : existing?.required_create_fields ??\n (preserveBuiltinDefaults ? [...DEFAULT_REQUIRED_CREATE_FIELDS] : []);\n const requiredCreateRepeatables = normalizedDefinition.required_create_repeatables\n ? normalizeItemTypeStringList(normalizedDefinition.required_create_repeatables)\n : existing?.required_create_repeatables ??\n (preserveBuiltinDefaults ? [...DEFAULT_REQUIRED_CREATE_REPEATABLES] : []);\n const options = normalizedDefinition.options\n ? normalizedDefinition.options\n : existing?.options\n ? [...existing.options]\n : [];\n const commandOptionPolicies = normalizedDefinition.command_option_policies\n ? normalizedDefinition.command_option_policies\n : existing?.command_option_policies\n ? [...existing.command_option_policies]\n : [];\n const defaultStatus = normalizedDefinition.default_status ?? existing?.default_status;\n const description = normalizedDefinition.description ?? existing?.description;\n target.set(lowerName, {\n name: keepName,\n ...(description ? { description } : {}),\n ...(defaultStatus ? { default_status: defaultStatus } : {}),\n folder,\n aliases,\n required_create_fields: requiredCreateFields,\n required_create_repeatables: requiredCreateRepeatables,\n options,\n command_option_policies: commandOptionPolicies,\n });\n }\n}\n\nfunction collectExtensionTypeDefinitions(registrations: ExtensionRegistrationRegistry | null | undefined): ItemTypeDefinition[] {\n if (!registrations) {\n return [];\n }\n const definitions: ItemTypeDefinition[] = [];\n for (const registration of registrations.item_types ?? []) {\n const typeDefinitionsRaw = (registration as { types?: unknown[] }).types;\n if (!Array.isArray(typeDefinitionsRaw)) {\n continue;\n }\n for (const rawDefinition of typeDefinitionsRaw) {\n const normalized = coerceTypeDefinitionFromUnknown(rawDefinition);\n if (normalized) {\n definitions.push(normalized);\n }\n }\n }\n return definitions;\n}\n\nexport function resolveItemTypeRegistry(\n settings: PmSettings,\n extensionRegistrations: ExtensionRegistrationRegistry | null | undefined = null,\n): ItemTypeRegistry {\n const byLowerName = new Map<string, ResolvedItemTypeDefinition>();\n for (const builtin of ITEM_TYPE_VALUES) {\n byLowerName.set(builtin.toLowerCase(), {\n name: builtin,\n folder: TYPE_TO_FOLDER[builtin],\n aliases: [],\n required_create_fields: [...DEFAULT_REQUIRED_CREATE_FIELDS],\n required_create_repeatables: [...DEFAULT_REQUIRED_CREATE_REPEATABLES],\n options: [],\n command_option_policies: [],\n });\n }\n\n applyTypeDefinitions(settings.item_types?.definitions ?? [], byLowerName, false);\n applyTypeDefinitions(collectExtensionTypeDefinitions(extensionRegistrations), byLowerName, false);\n\n const definitions = [...byLowerName.values()].sort((left, right) => left.name.localeCompare(right.name));\n const byType: Record<string, ResolvedItemTypeDefinition> = {};\n const aliasToType: Record<string, string> = {};\n const typeToFolder: Record<string, string> = {};\n for (const definition of definitions) {\n byType[definition.name] = definition;\n typeToFolder[definition.name] = definition.folder;\n aliasToType[definition.name.toLowerCase()] = definition.name;\n for (const alias of definition.aliases) {\n aliasToType[alias.toLowerCase()] = definition.name;\n }\n }\n const folders = [...new Set(definitions.map((definition) => definition.folder))].sort((left, right) => left.localeCompare(right));\n return {\n types: definitions.map((definition) => definition.name),\n folders,\n type_to_folder: typeToFolder,\n by_type: byType,\n alias_to_type: aliasToType,\n };\n}\n\nexport function resolveTypeName(rawType: string | undefined, registry: ItemTypeRegistry): string | undefined {\n if (rawType === undefined) {\n return undefined;\n }\n return registry.alias_to_type[rawType.trim().toLowerCase()];\n}\n\nexport function resolveTypeDefinition(\n typeName: string | undefined,\n registry: ItemTypeRegistry,\n): ResolvedItemTypeDefinition | undefined {\n const resolvedName = resolveTypeName(typeName, registry);\n if (!resolvedName) {\n return undefined;\n }\n return registry.by_type[resolvedName];\n}\n\nexport function resolveCommandOptionPolicyState(\n typeDefinition: ResolvedItemTypeDefinition,\n command: CommandOptionPolicyCommand,\n baseRequiredOptions: Iterable<string>,\n): CommandOptionPolicyState {\n const errors: string[] = [];\n const required = new Set<string>();\n const hidden = new Set<string>();\n const disabled = new Set<string>();\n\n for (const rawBase of baseRequiredOptions) {\n const canonical = canonicalizeCommandOptionKey(command, rawBase);\n if (!canonical) {\n errors.push(\n `Unsupported base required option \"${rawBase}\" for command \"${command}\" on type \"${typeDefinition.name}\"`,\n );\n continue;\n }\n required.add(canonical);\n }\n\n for (const policy of typeDefinition.command_option_policies) {\n if (policy.command !== command) {\n continue;\n }\n const canonical = canonicalizeCommandOptionKey(command, policy.option);\n if (!canonical) {\n errors.push(\n `Unsupported command_option_policies option \"${policy.option}\" for command \"${command}\" on type \"${typeDefinition.name}\"`,\n );\n continue;\n }\n if (policy.required !== undefined) {\n if (policy.required) {\n required.add(canonical);\n } else {\n required.delete(canonical);\n }\n }\n if (policy.visible !== undefined) {\n if (policy.visible) {\n hidden.delete(canonical);\n } else {\n hidden.add(canonical);\n }\n }\n if (policy.enabled !== undefined) {\n if (policy.enabled) {\n disabled.delete(canonical);\n } else {\n disabled.add(canonical);\n }\n }\n }\n\n for (const option of required) {\n if (disabled.has(option)) {\n errors.push(\n `Option \"${option}\" cannot be both required and disabled for command \"${command}\" on type \"${typeDefinition.name}\"`,\n );\n }\n }\n\n return {\n required: [...required],\n hidden: [...hidden].sort((left, right) => left.localeCompare(right)),\n disabled: [...disabled].sort((left, right) => left.localeCompare(right)),\n errors,\n };\n}\n\nexport function validateTypeOptions(\n typeName: string,\n rawTypeOptions: Record<string, string> | undefined,\n registry: ItemTypeRegistry,\n): { normalized: Record<string, string> | undefined; errors: string[] } {\n const typeDefinition = resolveTypeDefinition(typeName, registry);\n if (!typeDefinition) {\n return {\n normalized: undefined,\n errors: [`Unknown type \"${typeName}\"`],\n };\n }\n const errors: string[] = [];\n const optionByAlias = new Map<string, ItemTypeOptionDefinition>();\n for (const option of typeDefinition.options) {\n optionByAlias.set(option.key.toLowerCase(), option);\n for (const alias of option.aliases ?? []) {\n optionByAlias.set(alias.toLowerCase(), option);\n }\n }\n\n const normalized: Record<string, string> = {};\n for (const [rawKey, rawValue] of Object.entries(rawTypeOptions ?? {})) {\n const trimmedKey = rawKey.trim();\n const trimmedValue = rawValue.trim();\n if (trimmedKey.length === 0) {\n errors.push(\"type option keys must not be empty\");\n continue;\n }\n if (trimmedValue.length === 0) {\n errors.push(`type option \"${trimmedKey}\" must not be empty`);\n continue;\n }\n const optionDefinition = optionByAlias.get(trimmedKey.toLowerCase());\n if (!optionDefinition) {\n const allowed = typeDefinition.options.map((option) => option.key).join(\", \");\n errors.push(\n typeDefinition.options.length > 0\n ? `Unknown type option \"${trimmedKey}\" for type \"${typeDefinition.name}\". Allowed: ${allowed}`\n : `Type \"${typeDefinition.name}\" does not define any configurable type options`,\n );\n continue;\n }\n const allowedValues = optionDefinition.values;\n let resolvedValue = trimmedValue;\n if (allowedValues.length > 0) {\n const valueLookup = new Map(allowedValues.map((value) => [value.toLowerCase(), value]));\n const canonical = valueLookup.get(trimmedValue.toLowerCase());\n if (!canonical) {\n errors.push(\n `Invalid value \"${trimmedValue}\" for type option \"${optionDefinition.key}\". Allowed: ${allowedValues.join(\", \")}`,\n );\n continue;\n }\n resolvedValue = canonical;\n }\n normalized[optionDefinition.key] = resolvedValue;\n }\n\n for (const option of typeDefinition.options) {\n if (option.required && !(option.key in normalized)) {\n errors.push(`Missing required type option \"${option.key}\" for type \"${typeDefinition.name}\"`);\n }\n }\n\n const sortedKeys = Object.keys(normalized).sort((left, right) => left.localeCompare(right));\n if (sortedKeys.length === 0) {\n return {\n normalized: undefined,\n errors,\n };\n }\n return {\n normalized: Object.fromEntries(sortedKeys.map((key) => [key, normalized[key]])),\n errors,\n };\n}\n"],"names":[],"mappings":"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","debugId":"39fa2531-24d5-5083-b5c3-c4cc25c014ff"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5d698c95-b557-5c29-bc3f-caf70b5d6d0f")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="639e41e7-594f-5eec-bef8-80e83500c08a")}catch(e){}}();
3
3
  import path from "node:path";
4
4
  import { getActiveExtensionRegistrations } from "../extensions/index.js";
5
5
  import { pathExists, readFileIfExists, removeFileIfExists, writeFileAtomic } from "../fs/fs-utils.js";
@@ -9,7 +9,7 @@ import { locateItem, readLocatedItem } from "../store/item-store.js";
9
9
  import { getSettingsPath } from "../store/paths.js";
10
10
  import { readSettings } from "../store/settings.js";
11
11
  import { executeEmbeddingBatchesWithRetry } from "./embedding-batches.js";
12
- import { buildSemanticCorpusInput } from "./corpus.js";
12
+ import { buildSemanticCorpusInput, resolveSemanticCorpusCharacterLimit, } from "./corpus.js";
13
13
  import { resolveEmbeddingProviders } from "./providers.js";
14
14
  import { resolveSettingsWithSemanticRuntimeDefaults } from "./semantic-defaults.js";
15
15
  import { scheduleBackgroundSemanticRefresh } from "./background-refresh.js";
@@ -204,8 +204,10 @@ async function collectSemanticRefreshWorkload(pmRoot, idPrefix, preferredFormat,
204
204
  };
205
205
  }
206
206
  async function embedLocatedSemanticVectors(settings, provider, documents) {
207
+ const corpusCharacterLimit = resolveSemanticCorpusCharacterLimit(provider.name, settings.search.embedding_corpus_max_characters).maxCharacters;
207
208
  const corpusInputs = documents.map((entry) => buildSemanticCorpusInput(entry.document, {
208
209
  providerName: provider.name,
210
+ maxCharacters: corpusCharacterLimit,
209
211
  }));
210
212
  const embeddingResult = await executeEmbeddingBatchesWithRetry(provider, settings, corpusInputs);
211
213
  return {
@@ -450,4 +452,4 @@ export async function refreshSearchArtifactsForMutation(pmRoot, itemIds, options
450
452
  };
451
453
  }
452
454
  //# sourceMappingURL=cache.js.map
453
- //# debugId=5d698c95-b557-5c29-bc3f-caf70b5d6d0f
455
+ //# debugId=639e41e7-594f-5eec-bef8-80e83500c08a
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sources":["core/search/cache.ts"],"sourceRoot":"/","sourcesContent":["import path from \"node:path\";\nimport { getActiveExtensionRegistrations } from \"../extensions/index.js\";\nimport { pathExists, readFileIfExists, removeFileIfExists, writeFileAtomic } from \"../fs/fs-utils.js\";\nimport { resolveItemTypeRegistry } from \"../item/type-registry.js\";\nimport { toErrorMessage } from \"../shared/primitives.js\";\nimport { locateItem, readLocatedItem } from \"../store/item-store.js\";\nimport { getSettingsPath } from \"../store/paths.js\";\nimport { readSettings } from \"../store/settings.js\";\nimport { executeEmbeddingBatchesWithRetry } from \"./embedding-batches.js\";\nimport { buildSemanticCorpusInput } from \"./corpus.js\";\nimport { resolveEmbeddingProviders } from \"./providers.js\";\nimport type { EmbeddingProviderConfig } from \"./providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"./semantic-defaults.js\";\nimport { scheduleBackgroundSemanticRefresh } from \"./background-refresh.js\";\nimport { executeVectorDelete, executeVectorReset, executeVectorUpsert, resolveVectorStores } from \"./vector-stores.js\";\nimport type { VectorStoreConfig } from \"./vector-stores.js\";\nimport {\n buildVectorizationEmbeddingIdentity,\n buildVectorizationEmbeddingMetadata,\n hasVectorizationEmbeddingIdentityChanged,\n hasVectorizationVectorDimensionChanged,\n inferConsistentVectorDimension,\n normalizeVectorizationEmbeddingMetadata,\n} from \"./vectorization-metadata.js\";\nimport type {\n VectorizationEmbeddingIdentity,\n VectorizationEmbeddingMetadata,\n} from \"./vectorization-metadata.js\";\nimport { nowIso } from \"../shared/time.js\";\nimport type { ItemDocument, ItemFrontMatter } from \"../../types/index.js\";\n\nexport const SEARCH_CACHE_ARTIFACT_PATHS = [\"index/manifest.json\", \"search/embeddings.jsonl\"] as const;\nexport const VECTORIZATION_STATUS_LEDGER_PATH = \"search/vectorization-status.json\";\n\nexport interface SearchCacheInvalidationResult {\n invalidated: string[];\n warnings: string[];\n}\n\nexport interface SemanticMutationRefreshResult {\n refreshed: string[];\n skipped: string[];\n warnings: string[];\n}\n\nexport interface SearchMutationArtifactRefreshResult extends SearchCacheInvalidationResult {\n refreshed: string[];\n skipped: string[];\n /** True when the semantic refresh was dispatched to a detached background worker. */\n scheduled?: boolean;\n}\n\nexport interface RefreshSearchArtifactsForMutationOptions {\n /**\n * When true and semantic search is active, the (slow) embedding refresh is\n * dispatched to a detached background worker instead of awaited inline so the\n * mutation returns immediately. The synchronous keyword-cache invalidation\n * still runs first. Callers pass this only outside test runners.\n */\n background?: boolean;\n}\n\nexport interface SemanticRefreshOptions {\n settings?: Awaited<ReturnType<typeof readSettings>>;\n apply_runtime_defaults?: boolean;\n}\n\nexport interface VectorizationStatusLedgerReadResult {\n entries: Record<string, string>;\n embedding: VectorizationEmbeddingMetadata | null;\n warnings: string[];\n}\n\nfunction formatInvalidationWarning(relativePath: string, error: unknown): string {\n return `search_cache_invalidation_failed:${relativePath}:${String(error)}`;\n}\n\n\nfunction toUniqueSorted(values: Iterable<string>): string[] {\n return [...new Set([...values].map((value) => value.trim()).filter((value) => value.length > 0))]\n .sort((left, right) => left.localeCompare(right));\n}\n\nfunction isValidUpdatedAt(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0 && Number.isFinite(Date.parse(value));\n}\n\nfunction normalizeVectorizationLedgerEntries(entries: Record<string, string>): Record<string, string> {\n const normalized = new Map<string, string>();\n for (const [rawId, rawUpdatedAt] of Object.entries(entries)) {\n const id = rawId.trim();\n if (id.length === 0 || !isValidUpdatedAt(rawUpdatedAt)) {\n continue;\n }\n normalized.set(id, rawUpdatedAt);\n }\n return Object.fromEntries([...normalized.entries()].sort((left, right) => left[0].localeCompare(right[0])));\n}\n\nexport async function readVectorizationStatusLedger(pmRoot: string): Promise<VectorizationStatusLedgerReadResult> {\n const ledgerPath = path.join(pmRoot, VECTORIZATION_STATUS_LEDGER_PATH);\n const raw = await readFileIfExists(ledgerPath);\n if (raw === null || raw.trim().length === 0) {\n return {\n entries: {},\n embedding: null,\n warnings: [],\n };\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n\n if (\n typeof parsed !== \"object\" ||\n parsed === null ||\n (parsed as { version?: unknown }).version !== 1 ||\n !Array.isArray((parsed as { items?: unknown }).items)\n ) {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n\n const mapped = new Map<string, string>();\n for (const entry of (parsed as { items: unknown[] }).items) {\n if (typeof entry !== \"object\" || entry === null) {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n const id = (entry as { id?: unknown }).id;\n const updatedAt = (entry as { updated_at?: unknown }).updated_at;\n if (typeof id !== \"string\" || id.trim().length === 0 || !isValidUpdatedAt(updatedAt)) {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n mapped.set(id.trim(), updatedAt);\n }\n\n let embedding: VectorizationEmbeddingMetadata | null = null;\n try {\n embedding = normalizeVectorizationEmbeddingMetadata((parsed as { embedding?: unknown }).embedding);\n } catch {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n\n return {\n entries: Object.fromEntries([...mapped.entries()].sort((left, right) => left[0].localeCompare(right[0]))),\n embedding,\n warnings: [],\n };\n}\n\nexport async function writeVectorizationStatusLedger(\n pmRoot: string,\n entries: Record<string, string>,\n embedding?: VectorizationEmbeddingMetadata | null,\n): Promise<void> {\n const normalizedEntries = normalizeVectorizationLedgerEntries(entries);\n const ledgerPath = path.join(pmRoot, VECTORIZATION_STATUS_LEDGER_PATH);\n const serialized = `${JSON.stringify(\n {\n version: 1,\n generated_at: nowIso(),\n ...(embedding ? { embedding } : {}),\n items: Object.entries(normalizedEntries).map(([id, updated_at]) => ({\n id,\n updated_at,\n })),\n },\n null,\n 2,\n )}\\n`;\n await writeFileAtomic(ledgerPath, serialized);\n}\n\nfunction buildVectorPayload(item: ItemFrontMatter): Record<string, unknown> {\n return {\n id: item.id,\n type: item.type,\n status: item.status,\n priority: item.priority,\n updated_at: item.updated_at,\n };\n}\n\ninterface SemanticRefreshRuntimeContext {\n settings: Awaited<ReturnType<typeof readSettings>>;\n provider: EmbeddingProviderConfig;\n vectorStore: VectorStoreConfig;\n}\n\ninterface SemanticRefreshWorkload {\n documents: Array<{ id: string; document: ItemDocument }>;\n missingIds: string[];\n skippedIds: string[];\n warnings: string[];\n}\n\ninterface SemanticRefreshOperationResult {\n refreshed: string[];\n skipped: string[];\n warnings: string[];\n}\n\ninterface SemanticEmbeddingOperationResult {\n vectors: number[][];\n vector_dimension: number;\n warnings: string[];\n}\n\nfunction buildVectorizationIdentityForProvider(provider: EmbeddingProviderConfig): VectorizationEmbeddingIdentity {\n const identity = buildVectorizationEmbeddingIdentity(provider.name, provider.model);\n if (!identity) {\n throw new Error(\"Embedding provider must include a provider name and model\");\n }\n return identity;\n}\n\nfunction buildSkippedSemanticRefreshResult(itemIds: string[], warning: string): SemanticMutationRefreshResult {\n return {\n refreshed: [],\n skipped: itemIds,\n warnings: [warning],\n };\n}\n\nasync function resolveSemanticRefreshRuntimeContext(\n pmRoot: string,\n normalizedItemIds: string[],\n options: SemanticRefreshOptions,\n): Promise<SemanticRefreshRuntimeContext | SemanticMutationRefreshResult> {\n if (!options.settings && !(await pathExists(getSettingsPath(pmRoot)))) {\n return buildSkippedSemanticRefreshResult(normalizedItemIds, \"search_semantic_refresh_skipped:settings_not_initialized\");\n }\n\n let settings: Awaited<ReturnType<typeof readSettings>>;\n try {\n settings = options.settings ?? (await readSettings(pmRoot));\n } catch (error: unknown) {\n return buildSkippedSemanticRefreshResult(\n normalizedItemIds,\n `search_semantic_refresh_skipped:settings_read_failed:${toErrorMessage(error)}`,\n );\n }\n const effectiveSettings = options.apply_runtime_defaults\n ? resolveSettingsWithSemanticRuntimeDefaults(settings).settings\n : settings;\n\n const provider = resolveEmbeddingProviders(effectiveSettings).active;\n if (!provider) {\n return buildSkippedSemanticRefreshResult(normalizedItemIds, \"search_semantic_refresh_skipped:provider_unconfigured\");\n }\n const vectorStore = resolveVectorStores(effectiveSettings).active;\n if (!vectorStore) {\n return buildSkippedSemanticRefreshResult(normalizedItemIds, \"search_semantic_refresh_skipped:vector_store_unconfigured\");\n }\n\n return {\n settings: effectiveSettings,\n provider,\n vectorStore,\n };\n}\n\nasync function collectSemanticRefreshWorkload(\n pmRoot: string,\n idPrefix: string,\n preferredFormat: \"toon\" | \"json_markdown\",\n normalizedItemIds: string[],\n typeToFolder: Record<string, string>,\n schema: Awaited<ReturnType<typeof readSettings>>[\"schema\"],\n): Promise<SemanticRefreshWorkload> {\n const warnings: string[] = [];\n const skipped = new Set<string>();\n const missing = new Set<string>();\n const documents: Array<{ id: string; document: ItemDocument }> = [];\n\n for (const itemId of normalizedItemIds) {\n const located = await locateItem(pmRoot, itemId, idPrefix, preferredFormat, typeToFolder);\n if (!located) {\n missing.add(itemId);\n continue;\n }\n\n try {\n const loaded = await readLocatedItem(located, { schema });\n documents.push({\n id: loaded.document.metadata.id,\n document: loaded.document,\n });\n } catch (error: unknown) {\n skipped.add(located.id);\n warnings.push(`search_semantic_refresh_item_read_failed:${located.id}:${toErrorMessage(error)}`);\n }\n }\n\n documents.sort((left, right) => left.id.localeCompare(right.id));\n return {\n documents,\n missingIds: toUniqueSorted(missing),\n skippedIds: toUniqueSorted(skipped),\n warnings,\n };\n}\n\nasync function embedLocatedSemanticVectors(\n settings: Awaited<ReturnType<typeof readSettings>>,\n provider: EmbeddingProviderConfig,\n documents: Array<{ id: string; document: ItemDocument }>,\n): Promise<SemanticEmbeddingOperationResult> {\n const corpusInputs = documents.map((entry) =>\n buildSemanticCorpusInput(entry.document, {\n providerName: provider.name,\n }),\n );\n const embeddingResult = await executeEmbeddingBatchesWithRetry(provider, settings, corpusInputs);\n return {\n vectors: embeddingResult.vectors,\n vector_dimension: inferConsistentVectorDimension(embeddingResult.vectors, \"Semantic refresh embedding\"),\n warnings: embeddingResult.warnings,\n };\n}\n\nasync function upsertLocatedSemanticVectors(\n vectorStore: VectorStoreConfig,\n documents: Array<{ id: string; document: ItemDocument }>,\n vectors: number[][],\n): Promise<SemanticRefreshOperationResult> {\n await executeVectorUpsert(\n vectorStore,\n documents.map((entry, index) => ({\n id: entry.id,\n vector: vectors[index],\n payload: buildVectorPayload(entry.document.metadata),\n })),\n );\n return {\n refreshed: documents.map((entry) => entry.id),\n skipped: [],\n warnings: [],\n };\n}\n\nasync function resetSemanticVectorStore(\n vectorStore: VectorStoreConfig,\n ledgerEntries: Record<string, string>,\n): Promise<SemanticRefreshOperationResult> {\n try {\n await executeVectorReset(vectorStore, Object.keys(ledgerEntries));\n return { refreshed: [], skipped: [], warnings: [] };\n } catch (error: unknown) {\n return {\n refreshed: [],\n skipped: [],\n warnings: [`search_semantic_refresh_reset_failed:${toErrorMessage(error)}`],\n };\n }\n}\n\nasync function pruneMissingSemanticVectors(\n vectorStore: VectorStoreConfig,\n missingIds: string[],\n): Promise<SemanticRefreshOperationResult> {\n if (missingIds.length === 0) {\n return { refreshed: [], skipped: [], warnings: [] };\n }\n try {\n await executeVectorDelete(vectorStore, missingIds);\n return {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n } catch (error: unknown) {\n return {\n refreshed: [],\n skipped: missingIds,\n warnings: [`search_semantic_refresh_delete_failed:${toErrorMessage(error)}`],\n };\n }\n}\n\nexport async function invalidateSearchCacheArtifacts(pmRoot: string): Promise<SearchCacheInvalidationResult> {\n const invalidated: string[] = [];\n const warnings: string[] = [];\n\n for (const relativePath of SEARCH_CACHE_ARTIFACT_PATHS) {\n const artifactPath = path.join(pmRoot, relativePath);\n try {\n if (!(await pathExists(artifactPath))) {\n continue;\n }\n await removeFileIfExists(artifactPath);\n invalidated.push(relativePath);\n } catch (error: unknown) {\n warnings.push(formatInvalidationWarning(relativePath, error));\n }\n }\n\n return {\n invalidated,\n warnings,\n };\n}\n\nexport async function refreshSemanticEmbeddingsForMutatedItems(\n pmRoot: string,\n itemIds: string[],\n options: SemanticRefreshOptions = {},\n): Promise<SemanticMutationRefreshResult> {\n const normalizedItemIds = toUniqueSorted(itemIds);\n if (normalizedItemIds.length === 0) {\n return {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n }\n\n const runtimeContext = await resolveSemanticRefreshRuntimeContext(pmRoot, normalizedItemIds, options);\n if (!(\"settings\" in runtimeContext)) {\n return runtimeContext;\n }\n const typeRegistry = resolveItemTypeRegistry(runtimeContext.settings, getActiveExtensionRegistrations());\n const workload = await collectSemanticRefreshWorkload(\n pmRoot,\n runtimeContext.settings.id_prefix,\n runtimeContext.settings.item_format,\n normalizedItemIds,\n typeRegistry.type_to_folder,\n runtimeContext.settings.schema,\n );\n const ledgerRead =\n workload.documents.length > 0 || workload.missingIds.length > 0\n ? await readVectorizationStatusLedger(pmRoot)\n : { entries: {}, embedding: null, warnings: [] };\n const embeddingIdentity = buildVectorizationIdentityForProvider(runtimeContext.provider);\n const nextLedgerBaseEntries = ledgerRead.entries;\n let refreshedResult: SemanticRefreshOperationResult = { refreshed: [], skipped: [], warnings: [] };\n let nextEmbeddingMetadata = ledgerRead.embedding;\n if (workload.documents.length > 0) {\n if (ledgerRead.embedding && hasVectorizationEmbeddingIdentityChanged(ledgerRead.embedding, embeddingIdentity)) {\n refreshedResult = {\n refreshed: [],\n skipped: workload.documents.map((entry) => entry.id),\n warnings: [\"search_semantic_refresh_requires_reindex:embedding_identity_changed\"],\n };\n } else {\n try {\n const embedded = await embedLocatedSemanticVectors(\n runtimeContext.settings,\n runtimeContext.provider,\n workload.documents,\n );\n if (hasVectorizationVectorDimensionChanged(ledgerRead.embedding, embedded.vector_dimension)) {\n refreshedResult = {\n refreshed: [],\n skipped: workload.documents.map((entry) => entry.id),\n warnings: [...embedded.warnings, \"search_semantic_refresh_requires_reindex:vector_dimension_changed\"],\n };\n } else {\n nextEmbeddingMetadata = buildVectorizationEmbeddingMetadata(embeddingIdentity, embedded.vector_dimension);\n const upserted = await upsertLocatedSemanticVectors(runtimeContext.vectorStore, workload.documents, embedded.vectors);\n refreshedResult = {\n refreshed: upserted.refreshed,\n skipped: upserted.skipped,\n warnings: [...embedded.warnings, ...upserted.warnings],\n };\n }\n } catch (error: unknown) {\n refreshedResult = {\n refreshed: [],\n skipped: workload.documents.map((entry) => entry.id),\n warnings: [`search_semantic_refresh_failed:${toErrorMessage(error)}`],\n };\n }\n }\n }\n const pruneResult = await pruneMissingSemanticVectors(runtimeContext.vectorStore, workload.missingIds);\n const refreshedIdSet = new Set(refreshedResult.refreshed);\n const refreshedEntries = Object.fromEntries(\n workload.documents\n .filter((entry) => refreshedIdSet.has(entry.id))\n .map((entry) => [entry.id, entry.document.metadata.updated_at]),\n );\n const ledgerWarnings: string[] = [];\n if (Object.keys(refreshedEntries).length > 0 || workload.missingIds.length > 0) {\n const nextEntries = {\n ...nextLedgerBaseEntries,\n ...normalizeVectorizationLedgerEntries(refreshedEntries),\n };\n for (const missingId of workload.missingIds) {\n delete nextEntries[missingId];\n }\n try {\n await writeVectorizationStatusLedger(pmRoot, nextEntries, nextEmbeddingMetadata);\n } catch (error: unknown) {\n ledgerWarnings.push(`search_vectorization_status_ledger_write_failed:${toErrorMessage(error)}`);\n }\n ledgerWarnings.push(...ledgerRead.warnings);\n }\n\n return {\n refreshed: toUniqueSorted([...refreshedResult.refreshed, ...pruneResult.refreshed]),\n skipped: toUniqueSorted([...workload.skippedIds, ...refreshedResult.skipped, ...pruneResult.skipped]),\n warnings: [...workload.warnings, ...refreshedResult.warnings, ...pruneResult.warnings, ...ledgerWarnings],\n };\n}\n\n/**\n * Returns true when a semantic embedding refresh would do real work for these\n * settings (an embedding provider AND a vector store both resolve). Used to\n * decide whether a mutation's refresh is worth dispatching to a background\n * worker — when semantic search is not configured the inline path is already a\n * fast no-op and no child is spawned.\n */\nexport function isSemanticRefreshActive(\n settings: Awaited<ReturnType<typeof readSettings>>,\n applyRuntimeDefaults: boolean,\n): boolean {\n const effectiveSettings = applyRuntimeDefaults\n ? resolveSettingsWithSemanticRuntimeDefaults(settings).settings\n : settings;\n return Boolean(resolveEmbeddingProviders(effectiveSettings).active && resolveVectorStores(effectiveSettings).active);\n}\n\nexport async function refreshSearchArtifactsForMutation(\n pmRoot: string,\n itemIds: string[],\n options: RefreshSearchArtifactsForMutationOptions = {},\n): Promise<SearchMutationArtifactRefreshResult> {\n const invalidation = await invalidateSearchCacheArtifacts(pmRoot);\n const normalizedItemIds = toUniqueSorted(itemIds);\n if (normalizedItemIds.length === 0) {\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: [],\n warnings: invalidation.warnings,\n };\n }\n\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n const semanticRefresh = await refreshSemanticEmbeddingsForMutatedItems(pmRoot, normalizedItemIds);\n return {\n invalidated: invalidation.invalidated,\n refreshed: semanticRefresh.refreshed,\n skipped: semanticRefresh.skipped,\n warnings: [...invalidation.warnings, ...semanticRefresh.warnings],\n };\n }\n\n let settings: Awaited<ReturnType<typeof readSettings>>;\n try {\n settings = await readSettings(pmRoot);\n } catch (error: unknown) {\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: normalizedItemIds,\n warnings: [\n ...invalidation.warnings,\n `search_semantic_refresh_skipped:settings_read_failed:${toErrorMessage(error)}`,\n ],\n };\n }\n\n if (settings.search.mutation_refresh_policy === \"cache_only\") {\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: normalizedItemIds,\n warnings: invalidation.warnings,\n };\n }\n\n const applyRuntimeDefaults = settings.search.mutation_refresh_policy === \"semantic_auto\";\n\n // Keyword cache is already invalidated synchronously above (so keyword search\n // stays immediately correct). When requested, dispatch the slow embedding\n // refresh to a detached worker so the mutation returns instantly; the\n // vector_index_stale health/search warning covers the catch-up window.\n if (options.background && isSemanticRefreshActive(settings, applyRuntimeDefaults)) {\n await scheduleBackgroundSemanticRefresh(pmRoot, normalizedItemIds);\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: [],\n warnings: [...invalidation.warnings, \"search_semantic_refresh_scheduled_background\"],\n scheduled: true,\n };\n }\n\n const semanticRefresh = await refreshSemanticEmbeddingsForMutatedItems(pmRoot, normalizedItemIds, {\n settings,\n apply_runtime_defaults: applyRuntimeDefaults,\n });\n return {\n invalidated: invalidation.invalidated,\n refreshed: semanticRefresh.refreshed,\n skipped: semanticRefresh.skipped,\n warnings: [...invalidation.warnings, ...semanticRefresh.warnings],\n };\n}\n"],"names":[],"mappings":"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","debugId":"5d698c95-b557-5c29-bc3f-caf70b5d6d0f"}
1
+ {"version":3,"file":"cache.js","sources":["core/search/cache.ts"],"sourceRoot":"/","sourcesContent":["import path from \"node:path\";\nimport { getActiveExtensionRegistrations } from \"../extensions/index.js\";\nimport { pathExists, readFileIfExists, removeFileIfExists, writeFileAtomic } from \"../fs/fs-utils.js\";\nimport { resolveItemTypeRegistry } from \"../item/type-registry.js\";\nimport { toErrorMessage } from \"../shared/primitives.js\";\nimport { locateItem, readLocatedItem } from \"../store/item-store.js\";\nimport { getSettingsPath } from \"../store/paths.js\";\nimport { readSettings } from \"../store/settings.js\";\nimport { executeEmbeddingBatchesWithRetry } from \"./embedding-batches.js\";\nimport {\n buildSemanticCorpusInput,\n resolveSemanticCorpusCharacterLimit,\n} from \"./corpus.js\";\nimport { resolveEmbeddingProviders } from \"./providers.js\";\nimport type { EmbeddingProviderConfig } from \"./providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"./semantic-defaults.js\";\nimport { scheduleBackgroundSemanticRefresh } from \"./background-refresh.js\";\nimport { executeVectorDelete, executeVectorReset, executeVectorUpsert, resolveVectorStores } from \"./vector-stores.js\";\nimport type { VectorStoreConfig } from \"./vector-stores.js\";\nimport {\n buildVectorizationEmbeddingIdentity,\n buildVectorizationEmbeddingMetadata,\n hasVectorizationEmbeddingIdentityChanged,\n hasVectorizationVectorDimensionChanged,\n inferConsistentVectorDimension,\n normalizeVectorizationEmbeddingMetadata,\n} from \"./vectorization-metadata.js\";\nimport type {\n VectorizationEmbeddingIdentity,\n VectorizationEmbeddingMetadata,\n} from \"./vectorization-metadata.js\";\nimport { nowIso } from \"../shared/time.js\";\nimport type { ItemDocument, ItemFrontMatter } from \"../../types/index.js\";\n\nexport const SEARCH_CACHE_ARTIFACT_PATHS = [\"index/manifest.json\", \"search/embeddings.jsonl\"] as const;\nexport const VECTORIZATION_STATUS_LEDGER_PATH = \"search/vectorization-status.json\";\n\nexport interface SearchCacheInvalidationResult {\n invalidated: string[];\n warnings: string[];\n}\n\nexport interface SemanticMutationRefreshResult {\n refreshed: string[];\n skipped: string[];\n warnings: string[];\n}\n\nexport interface SearchMutationArtifactRefreshResult extends SearchCacheInvalidationResult {\n refreshed: string[];\n skipped: string[];\n /** True when the semantic refresh was dispatched to a detached background worker. */\n scheduled?: boolean;\n}\n\nexport interface RefreshSearchArtifactsForMutationOptions {\n /**\n * When true and semantic search is active, the (slow) embedding refresh is\n * dispatched to a detached background worker instead of awaited inline so the\n * mutation returns immediately. The synchronous keyword-cache invalidation\n * still runs first. Callers pass this only outside test runners.\n */\n background?: boolean;\n}\n\nexport interface SemanticRefreshOptions {\n settings?: Awaited<ReturnType<typeof readSettings>>;\n apply_runtime_defaults?: boolean;\n}\n\nexport interface VectorizationStatusLedgerReadResult {\n entries: Record<string, string>;\n embedding: VectorizationEmbeddingMetadata | null;\n warnings: string[];\n}\n\nfunction formatInvalidationWarning(relativePath: string, error: unknown): string {\n return `search_cache_invalidation_failed:${relativePath}:${String(error)}`;\n}\n\n\nfunction toUniqueSorted(values: Iterable<string>): string[] {\n return [...new Set([...values].map((value) => value.trim()).filter((value) => value.length > 0))]\n .sort((left, right) => left.localeCompare(right));\n}\n\nfunction isValidUpdatedAt(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0 && Number.isFinite(Date.parse(value));\n}\n\nfunction normalizeVectorizationLedgerEntries(entries: Record<string, string>): Record<string, string> {\n const normalized = new Map<string, string>();\n for (const [rawId, rawUpdatedAt] of Object.entries(entries)) {\n const id = rawId.trim();\n if (id.length === 0 || !isValidUpdatedAt(rawUpdatedAt)) {\n continue;\n }\n normalized.set(id, rawUpdatedAt);\n }\n return Object.fromEntries([...normalized.entries()].sort((left, right) => left[0].localeCompare(right[0])));\n}\n\nexport async function readVectorizationStatusLedger(pmRoot: string): Promise<VectorizationStatusLedgerReadResult> {\n const ledgerPath = path.join(pmRoot, VECTORIZATION_STATUS_LEDGER_PATH);\n const raw = await readFileIfExists(ledgerPath);\n if (raw === null || raw.trim().length === 0) {\n return {\n entries: {},\n embedding: null,\n warnings: [],\n };\n }\n\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n\n if (\n typeof parsed !== \"object\" ||\n parsed === null ||\n (parsed as { version?: unknown }).version !== 1 ||\n !Array.isArray((parsed as { items?: unknown }).items)\n ) {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n\n const mapped = new Map<string, string>();\n for (const entry of (parsed as { items: unknown[] }).items) {\n if (typeof entry !== \"object\" || entry === null) {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n const id = (entry as { id?: unknown }).id;\n const updatedAt = (entry as { updated_at?: unknown }).updated_at;\n if (typeof id !== \"string\" || id.trim().length === 0 || !isValidUpdatedAt(updatedAt)) {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n mapped.set(id.trim(), updatedAt);\n }\n\n let embedding: VectorizationEmbeddingMetadata | null = null;\n try {\n embedding = normalizeVectorizationEmbeddingMetadata((parsed as { embedding?: unknown }).embedding);\n } catch {\n return {\n entries: {},\n embedding: null,\n warnings: [\"search_vectorization_status_ledger_invalid\"],\n };\n }\n\n return {\n entries: Object.fromEntries([...mapped.entries()].sort((left, right) => left[0].localeCompare(right[0]))),\n embedding,\n warnings: [],\n };\n}\n\nexport async function writeVectorizationStatusLedger(\n pmRoot: string,\n entries: Record<string, string>,\n embedding?: VectorizationEmbeddingMetadata | null,\n): Promise<void> {\n const normalizedEntries = normalizeVectorizationLedgerEntries(entries);\n const ledgerPath = path.join(pmRoot, VECTORIZATION_STATUS_LEDGER_PATH);\n const serialized = `${JSON.stringify(\n {\n version: 1,\n generated_at: nowIso(),\n ...(embedding ? { embedding } : {}),\n items: Object.entries(normalizedEntries).map(([id, updated_at]) => ({\n id,\n updated_at,\n })),\n },\n null,\n 2,\n )}\\n`;\n await writeFileAtomic(ledgerPath, serialized);\n}\n\nfunction buildVectorPayload(item: ItemFrontMatter): Record<string, unknown> {\n return {\n id: item.id,\n type: item.type,\n status: item.status,\n priority: item.priority,\n updated_at: item.updated_at,\n };\n}\n\ninterface SemanticRefreshRuntimeContext {\n settings: Awaited<ReturnType<typeof readSettings>>;\n provider: EmbeddingProviderConfig;\n vectorStore: VectorStoreConfig;\n}\n\ninterface SemanticRefreshWorkload {\n documents: Array<{ id: string; document: ItemDocument }>;\n missingIds: string[];\n skippedIds: string[];\n warnings: string[];\n}\n\ninterface SemanticRefreshOperationResult {\n refreshed: string[];\n skipped: string[];\n warnings: string[];\n}\n\ninterface SemanticEmbeddingOperationResult {\n vectors: number[][];\n vector_dimension: number;\n warnings: string[];\n}\n\nfunction buildVectorizationIdentityForProvider(provider: EmbeddingProviderConfig): VectorizationEmbeddingIdentity {\n const identity = buildVectorizationEmbeddingIdentity(provider.name, provider.model);\n if (!identity) {\n throw new Error(\"Embedding provider must include a provider name and model\");\n }\n return identity;\n}\n\nfunction buildSkippedSemanticRefreshResult(itemIds: string[], warning: string): SemanticMutationRefreshResult {\n return {\n refreshed: [],\n skipped: itemIds,\n warnings: [warning],\n };\n}\n\nasync function resolveSemanticRefreshRuntimeContext(\n pmRoot: string,\n normalizedItemIds: string[],\n options: SemanticRefreshOptions,\n): Promise<SemanticRefreshRuntimeContext | SemanticMutationRefreshResult> {\n if (!options.settings && !(await pathExists(getSettingsPath(pmRoot)))) {\n return buildSkippedSemanticRefreshResult(normalizedItemIds, \"search_semantic_refresh_skipped:settings_not_initialized\");\n }\n\n let settings: Awaited<ReturnType<typeof readSettings>>;\n try {\n settings = options.settings ?? (await readSettings(pmRoot));\n } catch (error: unknown) {\n return buildSkippedSemanticRefreshResult(\n normalizedItemIds,\n `search_semantic_refresh_skipped:settings_read_failed:${toErrorMessage(error)}`,\n );\n }\n const effectiveSettings = options.apply_runtime_defaults\n ? resolveSettingsWithSemanticRuntimeDefaults(settings).settings\n : settings;\n\n const provider = resolveEmbeddingProviders(effectiveSettings).active;\n if (!provider) {\n return buildSkippedSemanticRefreshResult(normalizedItemIds, \"search_semantic_refresh_skipped:provider_unconfigured\");\n }\n const vectorStore = resolveVectorStores(effectiveSettings).active;\n if (!vectorStore) {\n return buildSkippedSemanticRefreshResult(normalizedItemIds, \"search_semantic_refresh_skipped:vector_store_unconfigured\");\n }\n\n return {\n settings: effectiveSettings,\n provider,\n vectorStore,\n };\n}\n\nasync function collectSemanticRefreshWorkload(\n pmRoot: string,\n idPrefix: string,\n preferredFormat: \"toon\" | \"json_markdown\",\n normalizedItemIds: string[],\n typeToFolder: Record<string, string>,\n schema: Awaited<ReturnType<typeof readSettings>>[\"schema\"],\n): Promise<SemanticRefreshWorkload> {\n const warnings: string[] = [];\n const skipped = new Set<string>();\n const missing = new Set<string>();\n const documents: Array<{ id: string; document: ItemDocument }> = [];\n\n for (const itemId of normalizedItemIds) {\n const located = await locateItem(pmRoot, itemId, idPrefix, preferredFormat, typeToFolder);\n if (!located) {\n missing.add(itemId);\n continue;\n }\n\n try {\n const loaded = await readLocatedItem(located, { schema });\n documents.push({\n id: loaded.document.metadata.id,\n document: loaded.document,\n });\n } catch (error: unknown) {\n skipped.add(located.id);\n warnings.push(`search_semantic_refresh_item_read_failed:${located.id}:${toErrorMessage(error)}`);\n }\n }\n\n documents.sort((left, right) => left.id.localeCompare(right.id));\n return {\n documents,\n missingIds: toUniqueSorted(missing),\n skippedIds: toUniqueSorted(skipped),\n warnings,\n };\n}\n\nasync function embedLocatedSemanticVectors(\n settings: Awaited<ReturnType<typeof readSettings>>,\n provider: EmbeddingProviderConfig,\n documents: Array<{ id: string; document: ItemDocument }>,\n): Promise<SemanticEmbeddingOperationResult> {\n const corpusCharacterLimit = resolveSemanticCorpusCharacterLimit(\n provider.name,\n settings.search.embedding_corpus_max_characters,\n ).maxCharacters;\n const corpusInputs = documents.map((entry) =>\n buildSemanticCorpusInput(entry.document, {\n providerName: provider.name,\n maxCharacters: corpusCharacterLimit,\n }),\n );\n const embeddingResult = await executeEmbeddingBatchesWithRetry(provider, settings, corpusInputs);\n return {\n vectors: embeddingResult.vectors,\n vector_dimension: inferConsistentVectorDimension(embeddingResult.vectors, \"Semantic refresh embedding\"),\n warnings: embeddingResult.warnings,\n };\n}\n\nasync function upsertLocatedSemanticVectors(\n vectorStore: VectorStoreConfig,\n documents: Array<{ id: string; document: ItemDocument }>,\n vectors: number[][],\n): Promise<SemanticRefreshOperationResult> {\n await executeVectorUpsert(\n vectorStore,\n documents.map((entry, index) => ({\n id: entry.id,\n vector: vectors[index],\n payload: buildVectorPayload(entry.document.metadata),\n })),\n );\n return {\n refreshed: documents.map((entry) => entry.id),\n skipped: [],\n warnings: [],\n };\n}\n\nasync function resetSemanticVectorStore(\n vectorStore: VectorStoreConfig,\n ledgerEntries: Record<string, string>,\n): Promise<SemanticRefreshOperationResult> {\n try {\n await executeVectorReset(vectorStore, Object.keys(ledgerEntries));\n return { refreshed: [], skipped: [], warnings: [] };\n } catch (error: unknown) {\n return {\n refreshed: [],\n skipped: [],\n warnings: [`search_semantic_refresh_reset_failed:${toErrorMessage(error)}`],\n };\n }\n}\n\nasync function pruneMissingSemanticVectors(\n vectorStore: VectorStoreConfig,\n missingIds: string[],\n): Promise<SemanticRefreshOperationResult> {\n if (missingIds.length === 0) {\n return { refreshed: [], skipped: [], warnings: [] };\n }\n try {\n await executeVectorDelete(vectorStore, missingIds);\n return {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n } catch (error: unknown) {\n return {\n refreshed: [],\n skipped: missingIds,\n warnings: [`search_semantic_refresh_delete_failed:${toErrorMessage(error)}`],\n };\n }\n}\n\nexport async function invalidateSearchCacheArtifacts(pmRoot: string): Promise<SearchCacheInvalidationResult> {\n const invalidated: string[] = [];\n const warnings: string[] = [];\n\n for (const relativePath of SEARCH_CACHE_ARTIFACT_PATHS) {\n const artifactPath = path.join(pmRoot, relativePath);\n try {\n if (!(await pathExists(artifactPath))) {\n continue;\n }\n await removeFileIfExists(artifactPath);\n invalidated.push(relativePath);\n } catch (error: unknown) {\n warnings.push(formatInvalidationWarning(relativePath, error));\n }\n }\n\n return {\n invalidated,\n warnings,\n };\n}\n\nexport async function refreshSemanticEmbeddingsForMutatedItems(\n pmRoot: string,\n itemIds: string[],\n options: SemanticRefreshOptions = {},\n): Promise<SemanticMutationRefreshResult> {\n const normalizedItemIds = toUniqueSorted(itemIds);\n if (normalizedItemIds.length === 0) {\n return {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n }\n\n const runtimeContext = await resolveSemanticRefreshRuntimeContext(pmRoot, normalizedItemIds, options);\n if (!(\"settings\" in runtimeContext)) {\n return runtimeContext;\n }\n const typeRegistry = resolveItemTypeRegistry(runtimeContext.settings, getActiveExtensionRegistrations());\n const workload = await collectSemanticRefreshWorkload(\n pmRoot,\n runtimeContext.settings.id_prefix,\n runtimeContext.settings.item_format,\n normalizedItemIds,\n typeRegistry.type_to_folder,\n runtimeContext.settings.schema,\n );\n const ledgerRead =\n workload.documents.length > 0 || workload.missingIds.length > 0\n ? await readVectorizationStatusLedger(pmRoot)\n : { entries: {}, embedding: null, warnings: [] };\n const embeddingIdentity = buildVectorizationIdentityForProvider(runtimeContext.provider);\n const nextLedgerBaseEntries = ledgerRead.entries;\n let refreshedResult: SemanticRefreshOperationResult = { refreshed: [], skipped: [], warnings: [] };\n let nextEmbeddingMetadata = ledgerRead.embedding;\n if (workload.documents.length > 0) {\n if (ledgerRead.embedding && hasVectorizationEmbeddingIdentityChanged(ledgerRead.embedding, embeddingIdentity)) {\n refreshedResult = {\n refreshed: [],\n skipped: workload.documents.map((entry) => entry.id),\n warnings: [\"search_semantic_refresh_requires_reindex:embedding_identity_changed\"],\n };\n } else {\n try {\n const embedded = await embedLocatedSemanticVectors(\n runtimeContext.settings,\n runtimeContext.provider,\n workload.documents,\n );\n if (hasVectorizationVectorDimensionChanged(ledgerRead.embedding, embedded.vector_dimension)) {\n refreshedResult = {\n refreshed: [],\n skipped: workload.documents.map((entry) => entry.id),\n warnings: [...embedded.warnings, \"search_semantic_refresh_requires_reindex:vector_dimension_changed\"],\n };\n } else {\n nextEmbeddingMetadata = buildVectorizationEmbeddingMetadata(embeddingIdentity, embedded.vector_dimension);\n const upserted = await upsertLocatedSemanticVectors(runtimeContext.vectorStore, workload.documents, embedded.vectors);\n refreshedResult = {\n refreshed: upserted.refreshed,\n skipped: upserted.skipped,\n warnings: [...embedded.warnings, ...upserted.warnings],\n };\n }\n } catch (error: unknown) {\n refreshedResult = {\n refreshed: [],\n skipped: workload.documents.map((entry) => entry.id),\n warnings: [`search_semantic_refresh_failed:${toErrorMessage(error)}`],\n };\n }\n }\n }\n const pruneResult = await pruneMissingSemanticVectors(runtimeContext.vectorStore, workload.missingIds);\n const refreshedIdSet = new Set(refreshedResult.refreshed);\n const refreshedEntries = Object.fromEntries(\n workload.documents\n .filter((entry) => refreshedIdSet.has(entry.id))\n .map((entry) => [entry.id, entry.document.metadata.updated_at]),\n );\n const ledgerWarnings: string[] = [];\n if (Object.keys(refreshedEntries).length > 0 || workload.missingIds.length > 0) {\n const nextEntries = {\n ...nextLedgerBaseEntries,\n ...normalizeVectorizationLedgerEntries(refreshedEntries),\n };\n for (const missingId of workload.missingIds) {\n delete nextEntries[missingId];\n }\n try {\n await writeVectorizationStatusLedger(pmRoot, nextEntries, nextEmbeddingMetadata);\n } catch (error: unknown) {\n ledgerWarnings.push(`search_vectorization_status_ledger_write_failed:${toErrorMessage(error)}`);\n }\n ledgerWarnings.push(...ledgerRead.warnings);\n }\n\n return {\n refreshed: toUniqueSorted([...refreshedResult.refreshed, ...pruneResult.refreshed]),\n skipped: toUniqueSorted([...workload.skippedIds, ...refreshedResult.skipped, ...pruneResult.skipped]),\n warnings: [...workload.warnings, ...refreshedResult.warnings, ...pruneResult.warnings, ...ledgerWarnings],\n };\n}\n\n/**\n * Returns true when a semantic embedding refresh would do real work for these\n * settings (an embedding provider AND a vector store both resolve). Used to\n * decide whether a mutation's refresh is worth dispatching to a background\n * worker — when semantic search is not configured the inline path is already a\n * fast no-op and no child is spawned.\n */\nexport function isSemanticRefreshActive(\n settings: Awaited<ReturnType<typeof readSettings>>,\n applyRuntimeDefaults: boolean,\n): boolean {\n const effectiveSettings = applyRuntimeDefaults\n ? resolveSettingsWithSemanticRuntimeDefaults(settings).settings\n : settings;\n return Boolean(resolveEmbeddingProviders(effectiveSettings).active && resolveVectorStores(effectiveSettings).active);\n}\n\nexport async function refreshSearchArtifactsForMutation(\n pmRoot: string,\n itemIds: string[],\n options: RefreshSearchArtifactsForMutationOptions = {},\n): Promise<SearchMutationArtifactRefreshResult> {\n const invalidation = await invalidateSearchCacheArtifacts(pmRoot);\n const normalizedItemIds = toUniqueSorted(itemIds);\n if (normalizedItemIds.length === 0) {\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: [],\n warnings: invalidation.warnings,\n };\n }\n\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n const semanticRefresh = await refreshSemanticEmbeddingsForMutatedItems(pmRoot, normalizedItemIds);\n return {\n invalidated: invalidation.invalidated,\n refreshed: semanticRefresh.refreshed,\n skipped: semanticRefresh.skipped,\n warnings: [...invalidation.warnings, ...semanticRefresh.warnings],\n };\n }\n\n let settings: Awaited<ReturnType<typeof readSettings>>;\n try {\n settings = await readSettings(pmRoot);\n } catch (error: unknown) {\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: normalizedItemIds,\n warnings: [\n ...invalidation.warnings,\n `search_semantic_refresh_skipped:settings_read_failed:${toErrorMessage(error)}`,\n ],\n };\n }\n\n if (settings.search.mutation_refresh_policy === \"cache_only\") {\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: normalizedItemIds,\n warnings: invalidation.warnings,\n };\n }\n\n const applyRuntimeDefaults = settings.search.mutation_refresh_policy === \"semantic_auto\";\n\n // Keyword cache is already invalidated synchronously above (so keyword search\n // stays immediately correct). When requested, dispatch the slow embedding\n // refresh to a detached worker so the mutation returns instantly; the\n // vector_index_stale health/search warning covers the catch-up window.\n if (options.background && isSemanticRefreshActive(settings, applyRuntimeDefaults)) {\n await scheduleBackgroundSemanticRefresh(pmRoot, normalizedItemIds);\n return {\n invalidated: invalidation.invalidated,\n refreshed: [],\n skipped: [],\n warnings: [...invalidation.warnings, \"search_semantic_refresh_scheduled_background\"],\n scheduled: true,\n };\n }\n\n const semanticRefresh = await refreshSemanticEmbeddingsForMutatedItems(pmRoot, normalizedItemIds, {\n settings,\n apply_runtime_defaults: applyRuntimeDefaults,\n });\n return {\n invalidated: invalidation.invalidated,\n refreshed: semanticRefresh.refreshed,\n skipped: semanticRefresh.skipped,\n warnings: [...invalidation.warnings, ...semanticRefresh.warnings],\n };\n}\n"],"names":[],"mappings":"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","debugId":"639e41e7-594f-5eec-bef8-80e83500c08a"}
@@ -2,12 +2,18 @@ import type { ItemDocument, ItemMetadata } from "../../types/index.js";
2
2
  export declare const DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS = 8000;
3
3
  export declare const OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS = 3200;
4
4
  export declare const SEMANTIC_CORPUS_TRUNCATION_SUFFIX = "...[semantic corpus truncated]";
5
+ export declare const SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING = "search_embedding_corpus_max_characters_invalid:using_provider_default";
5
6
  export declare function buildReminderCorpus(item: ItemMetadata): string[];
6
7
  export declare function buildEventCorpus(item: ItemMetadata): string[];
7
8
  export declare function buildPlanFlatCorpus(item: ItemMetadata): string;
8
9
  export declare function buildPlanCorpus(item: ItemMetadata): Record<string, unknown> | undefined;
9
10
  export declare function buildSearchCorpus(document: ItemDocument): Record<string, unknown>;
10
11
  export declare function resolveSemanticCorpusInputCharacterLimit(providerName: string | undefined): number;
12
+ export interface SemanticCorpusCharacterLimitResolution {
13
+ maxCharacters: number;
14
+ warning: string | null;
15
+ }
16
+ export declare function resolveSemanticCorpusCharacterLimit(providerName: string | undefined, configuredMaxCharacters: unknown): SemanticCorpusCharacterLimitResolution;
11
17
  export interface SemanticCorpusInputOptions {
12
18
  providerName?: string;
13
19
  maxCharacters?: number;
@@ -1,8 +1,10 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7313bc13-6a82-501a-9415-96d797cfb917")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b06becd9-0d3b-5afb-94d7-86fbc9b9f82f")}catch(e){}}();
3
+ import { coercePositiveInteger } from "../shared/primitives.js";
3
4
  export const DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS = 8_000;
4
5
  export const OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS = 3_200;
5
6
  export const SEMANTIC_CORPUS_TRUNCATION_SUFFIX = "...[semantic corpus truncated]";
7
+ export const SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING = "search_embedding_corpus_max_characters_invalid:using_provider_default";
6
8
  function compactParts(parts) {
7
9
  return parts
8
10
  .map((part) => (part === undefined || part === null ? "" : String(part).trim()))
@@ -121,21 +123,32 @@ export function buildSearchCorpus(document) {
121
123
  }
122
124
  return corpus;
123
125
  }
124
- function resolveSemanticCorpusInputMaxCharacters(candidate) {
125
- if (Number.isFinite(candidate) && Number(candidate) > 0) {
126
- return Math.floor(Number(candidate));
127
- }
128
- return DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS;
129
- }
130
126
  export function resolveSemanticCorpusInputCharacterLimit(providerName) {
131
127
  if (providerName?.trim().toLowerCase() === "ollama") {
132
128
  return OLLAMA_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS;
133
129
  }
134
130
  return DEFAULT_SEMANTIC_CORPUS_INPUT_MAX_CHARACTERS;
135
131
  }
132
+ export function resolveSemanticCorpusCharacterLimit(providerName, configuredMaxCharacters) {
133
+ const providerDefaultLimit = resolveSemanticCorpusInputCharacterLimit(providerName);
134
+ const parsed = coercePositiveInteger(configuredMaxCharacters);
135
+ if (parsed !== null) {
136
+ return {
137
+ maxCharacters: parsed,
138
+ warning: null,
139
+ };
140
+ }
141
+ return {
142
+ maxCharacters: providerDefaultLimit,
143
+ warning: configuredMaxCharacters === undefined || configuredMaxCharacters === null
144
+ ? null
145
+ : SEARCH_EMBEDDING_CORPUS_MAX_CHARACTERS_INVALID_WARNING,
146
+ };
147
+ }
136
148
  export function buildSemanticCorpusInput(document, options = {}) {
137
149
  const serialized = JSON.stringify(buildSearchCorpus(document));
138
- const maxCharacters = resolveSemanticCorpusInputMaxCharacters(options.maxCharacters ?? resolveSemanticCorpusInputCharacterLimit(options.providerName));
150
+ const maxCharacters = resolveSemanticCorpusCharacterLimit(options.providerName, options.maxCharacters)
151
+ .maxCharacters;
139
152
  if (serialized.length <= maxCharacters) {
140
153
  return serialized;
141
154
  }
@@ -146,4 +159,4 @@ export function buildSemanticCorpusInput(document, options = {}) {
146
159
  return `${serialized.slice(0, keepLength)}${SEMANTIC_CORPUS_TRUNCATION_SUFFIX}`;
147
160
  }
148
161
  //# sourceMappingURL=corpus.js.map
149
- //# debugId=7313bc13-6a82-501a-9415-96d797cfb917
162
+ //# debugId=b06becd9-0d3b-5afb-94d7-86fbc9b9f82f