@unbrained/pm-cli 2026.6.13 → 2026.6.17

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 (808) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/README.md +1 -1
  3. package/dist/cli/bootstrap-args.d.ts +29 -0
  4. package/dist/cli/bootstrap-args.js +11 -4
  5. package/dist/cli/bootstrap-args.js.map +1 -1
  6. package/dist/cli/commander-usage.d.ts +12 -0
  7. package/dist/cli/commander-usage.js +18 -7
  8. package/dist/cli/commander-usage.js.map +1 -1
  9. package/dist/cli/commands/activity.d.ts +19 -0
  10. package/dist/cli/commands/activity.js +12 -2
  11. package/dist/cli/commands/activity.js.map +1 -1
  12. package/dist/cli/commands/aggregate.d.ts +58 -0
  13. package/dist/cli/commands/aggregate.js +48 -15
  14. package/dist/cli/commands/aggregate.js.map +1 -1
  15. package/dist/cli/commands/annotation-command.d.ts +6 -1
  16. package/dist/cli/commands/annotation-command.js +72 -2
  17. package/dist/cli/commands/annotation-command.js.map +1 -1
  18. package/dist/cli/commands/append.js +4 -3
  19. package/dist/cli/commands/append.js.map +1 -1
  20. package/dist/cli/commands/close-many.d.ts +20 -0
  21. package/dist/cli/commands/close-many.js +14 -23
  22. package/dist/cli/commands/close-many.js.map +1 -1
  23. package/dist/cli/commands/close.js +37 -4
  24. package/dist/cli/commands/close.js.map +1 -1
  25. package/dist/cli/commands/comments-audit.js +3 -2
  26. package/dist/cli/commands/comments-audit.js.map +1 -1
  27. package/dist/cli/commands/comments.d.ts +2 -0
  28. package/dist/cli/commands/comments.js +49 -23
  29. package/dist/cli/commands/comments.js.map +1 -1
  30. package/dist/cli/commands/completion.js +362 -15
  31. package/dist/cli/commands/completion.js.map +1 -1
  32. package/dist/cli/commands/config.d.ts +51 -1
  33. package/dist/cli/commands/config.js +50 -12
  34. package/dist/cli/commands/config.js.map +1 -1
  35. package/dist/cli/commands/context.d.ts +79 -1
  36. package/dist/cli/commands/context.js +151 -25
  37. package/dist/cli/commands/context.js.map +1 -1
  38. package/dist/cli/commands/contracts.d.ts +80 -1
  39. package/dist/cli/commands/contracts.js +54 -4
  40. package/dist/cli/commands/contracts.js.map +1 -1
  41. package/dist/cli/commands/create.d.ts +51 -0
  42. package/dist/cli/commands/create.js +137 -18
  43. package/dist/cli/commands/create.js.map +1 -1
  44. package/dist/cli/commands/dedupe-audit.d.ts +33 -0
  45. package/dist/cli/commands/dedupe-audit.js +18 -14
  46. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  47. package/dist/cli/commands/deps.js +7 -4
  48. package/dist/cli/commands/deps.js.map +1 -1
  49. package/dist/cli/commands/event-validation-messages.js +3 -3
  50. package/dist/cli/commands/event-validation-messages.js.map +1 -1
  51. package/dist/cli/commands/extension/bundled-catalog.d.ts +7 -0
  52. package/dist/cli/commands/extension/bundled-catalog.js +19 -15
  53. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
  54. package/dist/cli/commands/extension/install-sources.d.ts +41 -1
  55. package/dist/cli/commands/extension/install-sources.js +26 -8
  56. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  57. package/dist/cli/commands/extension/shared.d.ts +5 -0
  58. package/dist/cli/commands/extension/shared.js +9 -3
  59. package/dist/cli/commands/extension/shared.js.map +1 -1
  60. package/dist/cli/commands/extension.d.ts +133 -1
  61. package/dist/cli/commands/extension.js +127 -9
  62. package/dist/cli/commands/extension.js.map +1 -1
  63. package/dist/cli/commands/files.d.ts +30 -1
  64. package/dist/cli/commands/files.js +21 -2
  65. package/dist/cli/commands/files.js.map +1 -1
  66. package/dist/cli/commands/focus.d.ts +11 -0
  67. package/dist/cli/commands/focus.js +86 -0
  68. package/dist/cli/commands/focus.js.map +1 -0
  69. package/dist/cli/commands/get.d.ts +9 -2
  70. package/dist/cli/commands/get.js +34 -6
  71. package/dist/cli/commands/get.js.map +1 -1
  72. package/dist/cli/commands/guide.d.ts +5 -0
  73. package/dist/cli/commands/guide.js +6 -3
  74. package/dist/cli/commands/guide.js.map +1 -1
  75. package/dist/cli/commands/health.d.ts +109 -0
  76. package/dist/cli/commands/health.js +87 -35
  77. package/dist/cli/commands/health.js.map +1 -1
  78. package/dist/cli/commands/history-compact.js +27 -36
  79. package/dist/cli/commands/history-compact.js.map +1 -1
  80. package/dist/cli/commands/history-redact.d.ts +46 -0
  81. package/dist/cli/commands/history-redact.js +99 -67
  82. package/dist/cli/commands/history-redact.js.map +1 -1
  83. package/dist/cli/commands/history-repair.js +34 -37
  84. package/dist/cli/commands/history-repair.js.map +1 -1
  85. package/dist/cli/commands/history.js +6 -2
  86. package/dist/cli/commands/history.js.map +1 -1
  87. package/dist/cli/commands/index.d.ts +4 -1
  88. package/dist/cli/commands/index.js +6 -3
  89. package/dist/cli/commands/index.js.map +1 -1
  90. package/dist/cli/commands/init-agent-guidance.d.ts +54 -0
  91. package/dist/cli/commands/init-agent-guidance.js +31 -4
  92. package/dist/cli/commands/init-agent-guidance.js.map +1 -1
  93. package/dist/cli/commands/init.d.ts +38 -2
  94. package/dist/cli/commands/init.js +50 -64
  95. package/dist/cli/commands/init.js.map +1 -1
  96. package/dist/cli/commands/learnings.js +4 -3
  97. package/dist/cli/commands/learnings.js.map +1 -1
  98. package/dist/cli/commands/lifecycle-transitions.d.ts +23 -0
  99. package/dist/cli/commands/lifecycle-transitions.js +41 -0
  100. package/dist/cli/commands/lifecycle-transitions.js.map +1 -0
  101. package/dist/cli/commands/linked-artifacts.d.ts +5 -0
  102. package/dist/cli/commands/linked-artifacts.js +18 -4
  103. package/dist/cli/commands/linked-artifacts.js.map +1 -1
  104. package/dist/cli/commands/linked-test-parsers.d.ts +5 -0
  105. package/dist/cli/commands/linked-test-parsers.js +5 -2
  106. package/dist/cli/commands/linked-test-parsers.js.map +1 -1
  107. package/dist/cli/commands/list-filter-shared.d.ts +8 -0
  108. package/dist/cli/commands/list-filter-shared.js +70 -0
  109. package/dist/cli/commands/list-filter-shared.js.map +1 -0
  110. package/dist/cli/commands/list.d.ts +116 -0
  111. package/dist/cli/commands/list.js +194 -6
  112. package/dist/cli/commands/list.js.map +1 -1
  113. package/dist/cli/commands/normalize.js +16 -2
  114. package/dist/cli/commands/normalize.js.map +1 -1
  115. package/dist/cli/commands/notes.js +4 -3
  116. package/dist/cli/commands/notes.js.map +1 -1
  117. package/dist/cli/commands/plan.js +3 -2
  118. package/dist/cli/commands/plan.js.map +1 -1
  119. package/dist/cli/commands/recurrence-parsers.d.ts +9 -0
  120. package/dist/cli/commands/recurrence-parsers.js +19 -2
  121. package/dist/cli/commands/recurrence-parsers.js.map +1 -1
  122. package/dist/cli/commands/reindex.d.ts +83 -0
  123. package/dist/cli/commands/reindex.js +45 -10
  124. package/dist/cli/commands/reindex.js.map +1 -1
  125. package/dist/cli/commands/repeatable-metadata-parsers.js +28 -4
  126. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
  127. package/dist/cli/commands/restore.d.ts +40 -1
  128. package/dist/cli/commands/restore.js +27 -2
  129. package/dist/cli/commands/restore.js.map +1 -1
  130. package/dist/cli/commands/scheduling-shortcuts.d.ts +43 -0
  131. package/dist/cli/commands/scheduling-shortcuts.js +87 -0
  132. package/dist/cli/commands/scheduling-shortcuts.js.map +1 -0
  133. package/dist/cli/commands/schema.d.ts +152 -2
  134. package/dist/cli/commands/schema.js +510 -4
  135. package/dist/cli/commands/schema.js.map +1 -1
  136. package/dist/cli/commands/search.d.ts +289 -1
  137. package/dist/cli/commands/search.js +367 -60
  138. package/dist/cli/commands/search.js.map +1 -1
  139. package/dist/cli/commands/stats.d.ts +38 -0
  140. package/dist/cli/commands/stats.js +38 -10
  141. package/dist/cli/commands/stats.js.map +1 -1
  142. package/dist/cli/commands/telemetry.js +5 -3
  143. package/dist/cli/commands/telemetry.js.map +1 -1
  144. package/dist/cli/commands/templates.d.ts +18 -0
  145. package/dist/cli/commands/templates.js +9 -2
  146. package/dist/cli/commands/templates.js.map +1 -1
  147. package/dist/cli/commands/test-all.d.ts +5 -0
  148. package/dist/cli/commands/test-all.js +9 -3
  149. package/dist/cli/commands/test-all.js.map +1 -1
  150. package/dist/cli/commands/test.d.ts +70 -1
  151. package/dist/cli/commands/test.js +84 -3
  152. package/dist/cli/commands/test.js.map +1 -1
  153. package/dist/cli/commands/update-many.d.ts +34 -1
  154. package/dist/cli/commands/update-many.js +60 -31
  155. package/dist/cli/commands/update-many.js.map +1 -1
  156. package/dist/cli/commands/update.d.ts +71 -0
  157. package/dist/cli/commands/update.js +91 -11
  158. package/dist/cli/commands/update.js.map +1 -1
  159. package/dist/cli/commands/upgrade.d.ts +28 -1
  160. package/dist/cli/commands/upgrade.js +17 -4
  161. package/dist/cli/commands/upgrade.js.map +1 -1
  162. package/dist/cli/commands/validate.d.ts +114 -0
  163. package/dist/cli/commands/validate.js +153 -8
  164. package/dist/cli/commands/validate.js.map +1 -1
  165. package/dist/cli/error-guidance.d.ts +30 -0
  166. package/dist/cli/error-guidance.js +41 -6
  167. package/dist/cli/error-guidance.js.map +1 -1
  168. package/dist/cli/extension-command-options.js +9 -7
  169. package/dist/cli/extension-command-options.js.map +1 -1
  170. package/dist/cli/help-content.d.ts +8 -0
  171. package/dist/cli/help-content.js +54 -6
  172. package/dist/cli/help-content.js.map +1 -1
  173. package/dist/cli/help-json-payload.d.ts +19 -1
  174. package/dist/cli/help-json-payload.js +16 -7
  175. package/dist/cli/help-json-payload.js.map +1 -1
  176. package/dist/cli/main.d.ts +242 -0
  177. package/dist/cli/main.js +241 -45
  178. package/dist/cli/main.js.map +1 -1
  179. package/dist/cli/register-list-query.js +62 -5
  180. package/dist/cli/register-list-query.js.map +1 -1
  181. package/dist/cli/register-mutation.d.ts +16 -0
  182. package/dist/cli/register-mutation.js +376 -100
  183. package/dist/cli/register-mutation.js.map +1 -1
  184. package/dist/cli/register-operations.d.ts +8 -0
  185. package/dist/cli/register-operations.js +134 -11
  186. package/dist/cli/register-operations.js.map +1 -1
  187. package/dist/cli/register-setup.js +9 -6
  188. package/dist/cli/register-setup.js.map +1 -1
  189. package/dist/cli/registration-helpers.d.ts +4 -0
  190. package/dist/cli/registration-helpers.js +124 -38
  191. package/dist/cli/registration-helpers.js.map +1 -1
  192. package/dist/cli-bundle/chunks/activity-PZYSZA26.js +18 -0
  193. package/dist/cli-bundle/chunks/{activity-PPO7QWJF.js → activity-SFM4THAU.js} +13 -11
  194. package/dist/cli-bundle/chunks/{aggregate-IRHJWEKG.js → aggregate-Y5ADDKBM.js} +55 -26
  195. package/dist/cli-bundle/chunks/aggregate-Y5ADDKBM.js.map +1 -0
  196. package/dist/cli-bundle/chunks/{aggregate-XEBW22UQ.js → aggregate-YTAUQLRW.js} +54 -25
  197. package/dist/cli-bundle/chunks/aggregate-YTAUQLRW.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{append-NL67JNJU.js → append-4M7OVV7M.js} +11 -11
  199. package/dist/cli-bundle/chunks/append-4M7OVV7M.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{append-N2AWXKZC.js → append-HSPK4L4V.js} +10 -10
  201. package/dist/cli-bundle/chunks/{append-N2AWXKZC.js.map → append-HSPK4L4V.js.map} +2 -2
  202. package/dist/cli-bundle/chunks/{chunk-IIOIBAQW.js → chunk-26BM6YLO.js} +3 -3
  203. package/dist/cli-bundle/chunks/{chunk-CEGUH2E5.js → chunk-2C6FU3D3.js} +5 -5
  204. package/dist/cli-bundle/chunks/{chunk-CEGUH2E5.js.map → chunk-2C6FU3D3.js.map} +1 -1
  205. package/dist/cli-bundle/chunks/{chunk-SQDKAEKG.js → chunk-2OPYLXDO.js} +117 -37
  206. package/dist/cli-bundle/chunks/chunk-2OPYLXDO.js.map +7 -0
  207. package/dist/cli-bundle/chunks/{chunk-4ZKKZMLH.js → chunk-2S46FKLB.js} +104 -30
  208. package/dist/cli-bundle/chunks/chunk-2S46FKLB.js.map +1 -0
  209. package/dist/cli-bundle/chunks/{chunk-LSSTKL3Y.js → chunk-2TMKMTEI.js} +3 -3
  210. package/dist/cli-bundle/chunks/{chunk-QU3OPNVV.js → chunk-2VH7DFSJ.js} +2 -2
  211. package/dist/cli-bundle/chunks/{chunk-RHYBR6G7.js → chunk-3ENF4NO4.js} +74 -14
  212. package/dist/cli-bundle/chunks/chunk-3ENF4NO4.js.map +1 -0
  213. package/dist/cli-bundle/chunks/chunk-3GR2HTYY.js +404 -0
  214. package/dist/cli-bundle/chunks/chunk-3GR2HTYY.js.map +7 -0
  215. package/dist/cli-bundle/chunks/{chunk-AAUYXSFF.js → chunk-3R3FYCBV.js} +223 -50
  216. package/dist/cli-bundle/chunks/chunk-3R3FYCBV.js.map +7 -0
  217. package/dist/cli-bundle/chunks/{chunk-5HSAHRYA.js → chunk-3UKJX3RP.js} +82 -21
  218. package/dist/cli-bundle/chunks/chunk-3UKJX3RP.js.map +7 -0
  219. package/dist/cli-bundle/chunks/chunk-4RTLBTYS.js +83 -0
  220. package/dist/cli-bundle/chunks/chunk-4RTLBTYS.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-UCVJP4JL.js → chunk-5FDYWOJT.js} +52 -8
  222. package/dist/cli-bundle/chunks/chunk-5FDYWOJT.js.map +7 -0
  223. package/dist/cli-bundle/chunks/{chunk-LGOXXQUW.js → chunk-5XGWFUW2.js} +2 -2
  224. package/dist/cli-bundle/chunks/{chunk-LYNQ3NGI.js → chunk-6BD77FGL.js} +309 -20
  225. package/dist/cli-bundle/chunks/chunk-6BD77FGL.js.map +1 -0
  226. package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js +35 -0
  227. package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js.map +7 -0
  228. package/dist/cli-bundle/chunks/{chunk-36BCSMKP.js → chunk-6HF6CIY2.js} +26 -11
  229. package/dist/cli-bundle/chunks/chunk-6HF6CIY2.js.map +7 -0
  230. package/dist/cli-bundle/chunks/{chunk-M3SI2REU.js → chunk-6PBPD4MN.js} +322 -19
  231. package/dist/cli-bundle/chunks/chunk-6PBPD4MN.js.map +7 -0
  232. package/dist/cli-bundle/chunks/{chunk-TSXWFN3L.js → chunk-6VFUEGOA.js} +53 -9
  233. package/dist/cli-bundle/chunks/chunk-6VFUEGOA.js.map +1 -0
  234. package/dist/cli-bundle/chunks/{chunk-2J2AH4V5.js → chunk-AAOXSPAE.js} +56 -72
  235. package/dist/cli-bundle/chunks/chunk-AAOXSPAE.js.map +1 -0
  236. package/dist/cli-bundle/chunks/{chunk-Z647PYLD.js → chunk-AJCQ5GT6.js} +4 -4
  237. package/dist/cli-bundle/chunks/chunk-ALTGYHN3.js +61 -0
  238. package/dist/cli-bundle/chunks/chunk-ALTGYHN3.js.map +7 -0
  239. package/dist/cli-bundle/chunks/{chunk-KHGTYCJ6.js → chunk-AOJQL33L.js} +83 -22
  240. package/dist/cli-bundle/chunks/chunk-AOJQL33L.js.map +1 -0
  241. package/dist/cli-bundle/chunks/{chunk-5LMF75Q7.js → chunk-AXLDUGXA.js} +7 -4
  242. package/dist/cli-bundle/chunks/{chunk-5LMF75Q7.js.map → chunk-AXLDUGXA.js.map} +2 -2
  243. package/dist/cli-bundle/chunks/{chunk-DWG4FHPY.js → chunk-BITCVGHT.js} +2 -2
  244. package/dist/cli-bundle/chunks/{chunk-JE5IZXDS.js → chunk-CGQTFWYI.js} +4 -4
  245. package/dist/cli-bundle/chunks/{chunk-LFW5NQUP.js → chunk-CHM2VFVL.js} +407 -290
  246. package/dist/cli-bundle/chunks/chunk-CHM2VFVL.js.map +7 -0
  247. package/dist/cli-bundle/chunks/{chunk-VYZNX4C5.js → chunk-COVLE33A.js} +3 -3
  248. package/dist/cli-bundle/chunks/{chunk-SGMGMCIF.js → chunk-DDNBWH4W.js} +157 -25
  249. package/dist/cli-bundle/chunks/chunk-DDNBWH4W.js.map +1 -0
  250. package/dist/cli-bundle/chunks/{chunk-6ZFTM65G.js → chunk-F5MSD5HE.js} +2 -2
  251. package/dist/cli-bundle/chunks/{chunk-6TBR5AZ2.js → chunk-FAXB6F6R.js} +76 -8
  252. package/dist/cli-bundle/chunks/chunk-FAXB6F6R.js.map +7 -0
  253. package/dist/cli-bundle/chunks/{chunk-L6YQONLM.js → chunk-FPDK5BZQ.js} +18 -19
  254. package/dist/cli-bundle/chunks/chunk-FPDK5BZQ.js.map +1 -0
  255. package/dist/cli-bundle/chunks/{chunk-AGG32LKL.js → chunk-FPY2TOFI.js} +480 -24
  256. package/dist/cli-bundle/chunks/chunk-FPY2TOFI.js.map +1 -0
  257. package/dist/cli-bundle/chunks/{chunk-JWXTOYBI.js → chunk-G2MOUCTU.js} +121 -44
  258. package/dist/cli-bundle/chunks/chunk-G2MOUCTU.js.map +7 -0
  259. package/dist/cli-bundle/chunks/{chunk-3VULHQNS.js → chunk-G57RHEGP.js} +36 -18
  260. package/dist/cli-bundle/chunks/chunk-G57RHEGP.js.map +1 -0
  261. package/dist/cli-bundle/chunks/{chunk-QQG4HEX7.js → chunk-IROHIK2T.js} +37 -63
  262. package/dist/cli-bundle/chunks/chunk-IROHIK2T.js.map +1 -0
  263. package/dist/cli-bundle/chunks/{chunk-GOO4UXBI.js → chunk-JZHL4E3Q.js} +4 -4
  264. package/dist/cli-bundle/chunks/{chunk-XXLMJDUB.js → chunk-KA22USXD.js} +21 -22
  265. package/dist/cli-bundle/chunks/chunk-KA22USXD.js.map +7 -0
  266. package/dist/cli-bundle/chunks/{chunk-WLH7X4RN.js → chunk-KBC4O7SY.js} +56 -72
  267. package/dist/cli-bundle/chunks/chunk-KBC4O7SY.js.map +7 -0
  268. package/dist/cli-bundle/chunks/{chunk-NN6RKGFW.js → chunk-KCAGIH6K.js} +3 -3
  269. package/dist/cli-bundle/chunks/{chunk-BVL5KGVA.js → chunk-KO3VM5GS.js} +27 -12
  270. package/dist/cli-bundle/chunks/chunk-KO3VM5GS.js.map +1 -0
  271. package/dist/cli-bundle/chunks/{chunk-IXVSSHGV.js → chunk-LNH5Q32E.js} +13 -8
  272. package/dist/cli-bundle/chunks/chunk-LNH5Q32E.js.map +7 -0
  273. package/dist/cli-bundle/chunks/{chunk-3FMQMHAG.js → chunk-LORM3M2I.js} +4 -4
  274. package/dist/cli-bundle/chunks/{chunk-3FMQMHAG.js.map → chunk-LORM3M2I.js.map} +1 -1
  275. package/dist/cli-bundle/chunks/{chunk-PNYAAB4S.js → chunk-LWGMDLQ6.js} +8 -3
  276. package/dist/cli-bundle/chunks/chunk-LWGMDLQ6.js.map +1 -0
  277. package/dist/cli-bundle/chunks/{chunk-GFBEXDCQ.js → chunk-M4AVU7VC.js} +19 -8
  278. package/dist/cli-bundle/chunks/{chunk-GFBEXDCQ.js.map → chunk-M4AVU7VC.js.map} +2 -2
  279. package/dist/cli-bundle/chunks/{chunk-3CQPVBK3.js → chunk-MIBX6ZRN.js} +3 -3
  280. package/dist/cli-bundle/chunks/{chunk-AUDDXKNX.js → chunk-MMF2E3FM.js} +77 -9
  281. package/dist/cli-bundle/chunks/chunk-MMF2E3FM.js.map +1 -0
  282. package/dist/cli-bundle/chunks/{chunk-RFR2YQGO.js → chunk-MORZOR7W.js} +21 -8
  283. package/dist/cli-bundle/chunks/chunk-MORZOR7W.js.map +1 -0
  284. package/dist/cli-bundle/chunks/{chunk-4TPFXE2R.js → chunk-MUTUZ2HD.js} +118 -74
  285. package/dist/cli-bundle/chunks/chunk-MUTUZ2HD.js.map +1 -0
  286. package/dist/cli-bundle/chunks/{chunk-HZOX5BYD.js → chunk-OGXEBTX3.js} +35 -17
  287. package/dist/cli-bundle/chunks/chunk-OGXEBTX3.js.map +7 -0
  288. package/dist/cli-bundle/chunks/{chunk-LOAR5TKX.js → chunk-OOIH6J5T.js} +4 -4
  289. package/dist/cli-bundle/chunks/{chunk-LOAR5TKX.js.map → chunk-OOIH6J5T.js.map} +1 -1
  290. package/dist/cli-bundle/chunks/{chunk-VNC2HBL4.js → chunk-OSBJPPX3.js} +20 -9
  291. package/dist/cli-bundle/chunks/chunk-OSBJPPX3.js.map +1 -0
  292. package/dist/cli-bundle/chunks/{chunk-2ANTZBYF.js → chunk-PJS3WDO2.js} +122 -45
  293. package/dist/cli-bundle/chunks/chunk-PJS3WDO2.js.map +1 -0
  294. package/dist/cli-bundle/chunks/{chunk-7SM7VA5I.js → chunk-QGPE2H6Z.js} +19 -8
  295. package/dist/cli-bundle/chunks/chunk-QGPE2H6Z.js.map +7 -0
  296. package/dist/cli-bundle/chunks/chunk-QVTFFLR2.js +58 -0
  297. package/dist/cli-bundle/chunks/chunk-QVTFFLR2.js.map +1 -0
  298. package/dist/cli-bundle/chunks/{chunk-JCTZV7TO.js → chunk-QW2F6ARZ.js} +8 -5
  299. package/dist/cli-bundle/chunks/{chunk-JCTZV7TO.js.map → chunk-QW2F6ARZ.js.map} +1 -1
  300. package/dist/cli-bundle/chunks/{chunk-TOX7YQ7X.js → chunk-QXC3LWB7.js} +223 -50
  301. package/dist/cli-bundle/chunks/chunk-QXC3LWB7.js.map +1 -0
  302. package/dist/cli-bundle/chunks/{chunk-W6KNFAMZ.js → chunk-QXMXRPX5.js} +9 -8
  303. package/dist/cli-bundle/chunks/chunk-QXMXRPX5.js.map +7 -0
  304. package/dist/cli-bundle/chunks/{chunk-O3YCJOVX.js → chunk-R4AKUPKI.js} +3 -3
  305. package/dist/cli-bundle/chunks/{chunk-O3YCJOVX.js.map → chunk-R4AKUPKI.js.map} +1 -1
  306. package/dist/cli-bundle/chunks/chunk-RASR23HV.js +394 -0
  307. package/dist/cli-bundle/chunks/chunk-RASR23HV.js.map +1 -0
  308. package/dist/cli-bundle/chunks/{chunk-JW7D6437.js → chunk-SCDCNGCV.js} +20 -9
  309. package/dist/cli-bundle/chunks/chunk-SCDCNGCV.js.map +1 -0
  310. package/dist/cli-bundle/chunks/{chunk-GRZGHGRG.js → chunk-SCS5PVAA.js} +10 -9
  311. package/dist/cli-bundle/chunks/{chunk-GRZGHGRG.js.map → chunk-SCS5PVAA.js.map} +2 -2
  312. package/dist/cli-bundle/chunks/{chunk-S2CDTRJ6.js → chunk-SJCMTOEU.js} +381 -271
  313. package/dist/cli-bundle/chunks/chunk-SJCMTOEU.js.map +1 -0
  314. package/dist/cli-bundle/chunks/{chunk-XWDZVCBJ.js → chunk-SO2ES46D.js} +11 -10
  315. package/dist/cli-bundle/chunks/{chunk-XWDZVCBJ.js.map → chunk-SO2ES46D.js.map} +1 -1
  316. package/dist/cli-bundle/chunks/{chunk-MACCNKSZ.js → chunk-TBV33CB4.js} +36 -62
  317. package/dist/cli-bundle/chunks/chunk-TBV33CB4.js.map +7 -0
  318. package/dist/cli-bundle/chunks/chunk-TEFEXQWI.js +86 -0
  319. package/dist/cli-bundle/chunks/chunk-TEFEXQWI.js.map +7 -0
  320. package/dist/cli-bundle/chunks/{chunk-HLEGAQXT.js → chunk-TWBDDVIF.js} +20 -7
  321. package/dist/cli-bundle/chunks/chunk-TWBDDVIF.js.map +7 -0
  322. package/dist/cli-bundle/chunks/{chunk-4JHJ7YG2.js → chunk-UGUJ2UOR.js} +118 -74
  323. package/dist/cli-bundle/chunks/chunk-UGUJ2UOR.js.map +7 -0
  324. package/dist/cli-bundle/chunks/{chunk-XOYHMHFF.js → chunk-UN6P3IJ4.js} +3 -3
  325. package/dist/cli-bundle/chunks/{chunk-32XSW44C.js → chunk-V2GYOMEX.js} +10 -9
  326. package/dist/cli-bundle/chunks/chunk-V2GYOMEX.js.map +1 -0
  327. package/dist/cli-bundle/chunks/{chunk-HWHONML5.js → chunk-VF3KQGNY.js} +4 -4
  328. package/dist/cli-bundle/chunks/{chunk-SOHXUA2Q.js → chunk-VHG6LUKR.js} +116 -36
  329. package/dist/cli-bundle/chunks/chunk-VHG6LUKR.js.map +1 -0
  330. package/dist/cli-bundle/chunks/{chunk-7CRFV6JR.js → chunk-VXHMQDXA.js} +483 -27
  331. package/dist/cli-bundle/chunks/chunk-VXHMQDXA.js.map +7 -0
  332. package/dist/cli-bundle/chunks/{chunk-IZHCCG4S.js → chunk-VXRFAE7W.js} +14 -9
  333. package/dist/cli-bundle/chunks/chunk-VXRFAE7W.js.map +1 -0
  334. package/dist/cli-bundle/chunks/{chunk-R4VWYWRN.js → chunk-W3HFLORZ.js} +7 -2
  335. package/dist/cli-bundle/chunks/chunk-W3HFLORZ.js.map +7 -0
  336. package/dist/cli-bundle/chunks/{chunk-4FHLNNW7.js → chunk-WQRL4COW.js} +74 -14
  337. package/dist/cli-bundle/chunks/chunk-WQRL4COW.js.map +7 -0
  338. package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js +32 -0
  339. package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js.map +1 -0
  340. package/dist/cli-bundle/chunks/{chunk-MGAQ6KZG.js → chunk-XESAPVZ4.js} +166 -27
  341. package/dist/cli-bundle/chunks/chunk-XESAPVZ4.js.map +7 -0
  342. package/dist/cli-bundle/chunks/{chunk-PEH7SZD2.js → chunk-YLAW3FZN.js} +105 -31
  343. package/dist/cli-bundle/chunks/chunk-YLAW3FZN.js.map +7 -0
  344. package/dist/cli-bundle/chunks/{claim-HE6KEGJW.js → claim-WGAWJCPY.js} +10 -10
  345. package/dist/cli-bundle/chunks/{claim-QJOQBH7J.js → claim-ZI6P4LMU.js} +10 -10
  346. package/dist/cli-bundle/chunks/close-I7PRQ5G7.js +13 -0
  347. package/dist/cli-bundle/chunks/{close-SPUFW5QR.js → close-JMVVSIQE.js} +8 -8
  348. package/dist/cli-bundle/chunks/{close-many-GKAJX54X.js → close-many-IKPJXVOZ.js} +32 -20
  349. package/dist/cli-bundle/chunks/close-many-IKPJXVOZ.js.map +1 -0
  350. package/dist/cli-bundle/chunks/{close-many-GL6NRUU5.js → close-many-TXABDCSJ.js} +31 -19
  351. package/dist/cli-bundle/chunks/close-many-TXABDCSJ.js.map +7 -0
  352. package/dist/cli-bundle/chunks/{comments-5FPT6L7N.js → comments-RLWR2S7W.js} +55 -31
  353. package/dist/cli-bundle/chunks/comments-RLWR2S7W.js.map +1 -0
  354. package/dist/cli-bundle/chunks/{comments-TOLOYWNI.js → comments-YAMXKHUX.js} +54 -30
  355. package/dist/cli-bundle/chunks/comments-YAMXKHUX.js.map +7 -0
  356. package/dist/cli-bundle/chunks/{config-7N6D7YJE.js → config-7ICYC2WU.js} +83 -19
  357. package/dist/cli-bundle/chunks/config-7ICYC2WU.js.map +7 -0
  358. package/dist/cli-bundle/chunks/{config-4MN45TIH.js → config-NGWN3EXC.js} +83 -19
  359. package/dist/cli-bundle/chunks/config-NGWN3EXC.js.map +1 -0
  360. package/dist/cli-bundle/chunks/{context-AQSLE7DZ.js → context-K6QAHN5H.js} +128 -39
  361. package/dist/cli-bundle/chunks/context-K6QAHN5H.js.map +1 -0
  362. package/dist/cli-bundle/chunks/{context-U3PUJMVN.js → context-VGXOOAH2.js} +127 -38
  363. package/dist/cli-bundle/chunks/context-VGXOOAH2.js.map +7 -0
  364. package/dist/cli-bundle/chunks/{contracts-ITSJXO3O.js → contracts-KJGY2AQA.js} +99 -15
  365. package/dist/cli-bundle/chunks/contracts-KJGY2AQA.js.map +1 -0
  366. package/dist/cli-bundle/chunks/{contracts-H7KCQXLY.js → contracts-KMA6OJY7.js} +99 -15
  367. package/dist/cli-bundle/chunks/contracts-KMA6OJY7.js.map +7 -0
  368. package/dist/cli-bundle/chunks/{copy-EB3MUCSW.js → copy-Q2PPU4AY.js} +7 -7
  369. package/dist/cli-bundle/chunks/{copy-C4W522JM.js → copy-SC6UF3PI.js} +7 -7
  370. package/dist/cli-bundle/chunks/{create-4EQNELMY.js → create-76FE7JVF.js} +16 -13
  371. package/dist/cli-bundle/chunks/create-RTRFW6RE.js +30 -0
  372. package/dist/cli-bundle/chunks/{delete-X5QLXIQX.js → delete-T6DJSUJI.js} +7 -7
  373. package/dist/cli-bundle/chunks/{delete-ZLGUYIXU.js → delete-XFUX533E.js} +7 -7
  374. package/dist/cli-bundle/chunks/{deps-GPB3LGWN.js → deps-5GWMMS6D.js} +9 -10
  375. package/dist/cli-bundle/chunks/{deps-GPB3LGWN.js.map → deps-5GWMMS6D.js.map} +2 -2
  376. package/dist/cli-bundle/chunks/{deps-HV2C2L46.js → deps-MCCU633S.js} +10 -11
  377. package/dist/cli-bundle/chunks/deps-MCCU633S.js.map +1 -0
  378. package/dist/cli-bundle/chunks/{docs-SRTLCQOL.js → docs-HE3HCQ4S.js} +9 -9
  379. package/dist/cli-bundle/chunks/{docs-RJQPLROO.js → docs-SXMOABHR.js} +9 -9
  380. package/dist/cli-bundle/chunks/{extension-WKPVPNCC.js → extension-E23K4QRR.js} +7 -5
  381. package/dist/cli-bundle/chunks/{extension-MM3TVWOO.js → extension-PMD3XMLN.js} +7 -5
  382. package/dist/cli-bundle/chunks/{files-OIFN3DQX.js → files-2RSWGPEU.js} +25 -11
  383. package/dist/cli-bundle/chunks/files-2RSWGPEU.js.map +1 -0
  384. package/dist/cli-bundle/chunks/{files-LIFDKNCN.js → files-ZWFJFWBK.js} +24 -10
  385. package/dist/cli-bundle/chunks/files-ZWFJFWBK.js.map +7 -0
  386. package/dist/cli-bundle/chunks/focus-KTTB3P3F.js +106 -0
  387. package/dist/cli-bundle/chunks/focus-KTTB3P3F.js.map +1 -0
  388. package/dist/cli-bundle/chunks/focus-ZMDP4FEL.js +109 -0
  389. package/dist/cli-bundle/chunks/focus-ZMDP4FEL.js.map +7 -0
  390. package/dist/cli-bundle/chunks/{gc-NRFHLVFT.js → gc-BXIAKLAH.js} +3 -3
  391. package/dist/cli-bundle/chunks/{gc-DL6AVOX5.js → gc-C7K6JNUO.js} +3 -3
  392. package/dist/cli-bundle/chunks/{get-SAB7CRBG.js → get-AZQLC4NO.js} +43 -16
  393. package/dist/cli-bundle/chunks/get-AZQLC4NO.js.map +1 -0
  394. package/dist/cli-bundle/chunks/{get-K7UULTQF.js → get-I65HTAWO.js} +42 -15
  395. package/dist/cli-bundle/chunks/get-I65HTAWO.js.map +7 -0
  396. package/dist/cli-bundle/chunks/{health-NUVZYIEV.js → health-3MFFPQVZ.js} +75 -49
  397. package/dist/cli-bundle/chunks/health-3MFFPQVZ.js.map +1 -0
  398. package/dist/cli-bundle/chunks/{health-VJWH3ZFK.js → health-MYZEOCLI.js} +74 -48
  399. package/dist/cli-bundle/chunks/health-MYZEOCLI.js.map +7 -0
  400. package/dist/cli-bundle/chunks/{history-GYFD2DJW.js → history-73Z6OBFZ.js} +10 -10
  401. package/dist/cli-bundle/chunks/history-BIPHVUMF.js +20 -0
  402. package/dist/cli-bundle/chunks/{history-compact-WQZQ6KXM.js → history-compact-24VQ63A3.js} +37 -46
  403. package/dist/cli-bundle/chunks/history-compact-24VQ63A3.js.map +7 -0
  404. package/dist/cli-bundle/chunks/{history-compact-SLL6ESXH.js → history-compact-UIAR2OI4.js} +38 -47
  405. package/dist/cli-bundle/chunks/history-compact-UIAR2OI4.js.map +1 -0
  406. package/dist/cli-bundle/chunks/{history-redact-SDTDR6WM.js → history-redact-7YCXEWJD.js} +13 -11
  407. package/dist/cli-bundle/chunks/history-redact-WZZ6GZ2Z.js +21 -0
  408. package/dist/cli-bundle/chunks/{history-repair-BJCGM6Q3.js → history-repair-4NOFFG2W.js} +44 -49
  409. package/dist/cli-bundle/chunks/history-repair-4NOFFG2W.js.map +1 -0
  410. package/dist/cli-bundle/chunks/{history-repair-UCYS55ZX.js → history-repair-GQN2X4TR.js} +43 -48
  411. package/dist/cli-bundle/chunks/history-repair-GQN2X4TR.js.map +7 -0
  412. package/dist/cli-bundle/chunks/init-K34V4PZR.js +20 -0
  413. package/dist/cli-bundle/chunks/{init-MXV57LKL.js → init-TDEDNVMM.js} +12 -9
  414. package/dist/cli-bundle/chunks/{learnings-QKJOKEAO.js → learnings-TV2CTGJ3.js} +13 -12
  415. package/dist/cli-bundle/chunks/learnings-TV2CTGJ3.js.map +7 -0
  416. package/dist/cli-bundle/chunks/{learnings-L6KTZGOT.js → learnings-U67FTXPB.js} +14 -13
  417. package/dist/cli-bundle/chunks/learnings-U67FTXPB.js.map +1 -0
  418. package/dist/cli-bundle/chunks/list-MSHYOCFU.js +33 -0
  419. package/dist/cli-bundle/chunks/list-VV57WGUD.js +29 -0
  420. package/dist/cli-bundle/chunks/{notes-HMCB7TK6.js → notes-EUANWWKD.js} +13 -12
  421. package/dist/cli-bundle/chunks/notes-EUANWWKD.js.map +7 -0
  422. package/dist/cli-bundle/chunks/{notes-3NLK7WTZ.js → notes-GYVNDAL4.js} +14 -13
  423. package/dist/cli-bundle/chunks/notes-GYVNDAL4.js.map +1 -0
  424. package/dist/cli-bundle/chunks/{plan-NANUWH4T.js → plan-4LF4AV63.js} +15 -14
  425. package/dist/cli-bundle/chunks/plan-4LF4AV63.js.map +7 -0
  426. package/dist/cli-bundle/chunks/{plan-DWBYI5C6.js → plan-W27O6DBS.js} +16 -15
  427. package/dist/cli-bundle/chunks/plan-W27O6DBS.js.map +1 -0
  428. package/dist/cli-bundle/chunks/{register-list-query-SMMMLSWW.js → register-list-query-BXLEHJ7L.js} +32 -23
  429. package/dist/cli-bundle/chunks/register-list-query-BXLEHJ7L.js.map +1 -0
  430. package/dist/cli-bundle/chunks/{register-list-query-PWQ5F2VI.js → register-list-query-C2MS3BVQ.js} +31 -22
  431. package/dist/cli-bundle/chunks/register-list-query-C2MS3BVQ.js.map +7 -0
  432. package/dist/cli-bundle/chunks/{register-mutation-QKFPTIZG.js → register-mutation-6UCOEQ6L.js} +361 -106
  433. package/dist/cli-bundle/chunks/register-mutation-6UCOEQ6L.js.map +7 -0
  434. package/dist/cli-bundle/chunks/{register-mutation-ZYJQ4DVP.js → register-mutation-HE73PREP.js} +355 -107
  435. package/dist/cli-bundle/chunks/register-mutation-HE73PREP.js.map +1 -0
  436. package/dist/cli-bundle/chunks/{register-operations-2FMZ6WEF.js → register-operations-L6C32FDA.js} +111 -39
  437. package/dist/cli-bundle/chunks/register-operations-L6C32FDA.js.map +7 -0
  438. package/dist/cli-bundle/chunks/{register-operations-BAFQURZG.js → register-operations-QQEHEX4P.js} +112 -40
  439. package/dist/cli-bundle/chunks/register-operations-QQEHEX4P.js.map +1 -0
  440. package/dist/cli-bundle/chunks/{register-setup-QN2XV7UL.js → register-setup-A7N4PNT3.js} +18 -21
  441. package/dist/cli-bundle/chunks/register-setup-A7N4PNT3.js.map +1 -0
  442. package/dist/cli-bundle/chunks/{register-setup-DQEIKBIP.js → register-setup-WHG3NBP6.js} +17 -20
  443. package/dist/cli-bundle/chunks/register-setup-WHG3NBP6.js.map +7 -0
  444. package/dist/cli-bundle/chunks/{restore-FJQWXMPY.js → restore-TSWSULYY.js} +13 -11
  445. package/dist/cli-bundle/chunks/restore-XQXICL3V.js +19 -0
  446. package/dist/cli-bundle/chunks/scheduling-shortcuts-NC46K6BD.js +91 -0
  447. package/dist/cli-bundle/chunks/scheduling-shortcuts-NC46K6BD.js.map +7 -0
  448. package/dist/cli-bundle/chunks/scheduling-shortcuts-UGDPQALY.js +88 -0
  449. package/dist/cli-bundle/chunks/scheduling-shortcuts-UGDPQALY.js.map +1 -0
  450. package/dist/cli-bundle/chunks/{schema-ZZ7ZDM2X.js → schema-7U7JUYGK.js} +797 -10
  451. package/dist/cli-bundle/chunks/schema-7U7JUYGK.js.map +1 -0
  452. package/dist/cli-bundle/chunks/{schema-RNVJ55V2.js → schema-TSBYSEMW.js} +810 -9
  453. package/dist/cli-bundle/chunks/schema-TSBYSEMW.js.map +7 -0
  454. package/dist/cli-bundle/chunks/{search-BJ457C2A.js → search-OXLSQKHP.js} +328 -71
  455. package/dist/cli-bundle/chunks/search-OXLSQKHP.js.map +7 -0
  456. package/dist/cli-bundle/chunks/{search-FQDZXX7P.js → search-T3TOFLOQ.js} +328 -71
  457. package/dist/cli-bundle/chunks/search-T3TOFLOQ.js.map +1 -0
  458. package/dist/cli-bundle/chunks/{stats-DUQWCVOS.js → stats-5CLG22YZ.js} +41 -16
  459. package/dist/cli-bundle/chunks/stats-5CLG22YZ.js.map +7 -0
  460. package/dist/cli-bundle/chunks/{stats-CUG3ZHOI.js → stats-XEMUXS42.js} +42 -17
  461. package/dist/cli-bundle/chunks/stats-XEMUXS42.js.map +1 -0
  462. package/dist/cli-bundle/chunks/{telemetry-RK2VX75A.js → telemetry-23OPBBZT.js} +7 -7
  463. package/dist/cli-bundle/chunks/telemetry-23OPBBZT.js.map +1 -0
  464. package/dist/cli-bundle/chunks/{telemetry-33MRGX4Z.js → telemetry-I3D7XZ55.js} +6 -6
  465. package/dist/cli-bundle/chunks/telemetry-I3D7XZ55.js.map +7 -0
  466. package/dist/cli-bundle/chunks/test-AROS3LIV.js +35 -0
  467. package/dist/cli-bundle/chunks/{test-Y3CTFMEC.js → test-CECIMKOA.js} +17 -14
  468. package/dist/cli-bundle/chunks/{test-all-ARSMX33Q.js → test-all-4DEQPIXH.js} +25 -17
  469. package/dist/cli-bundle/chunks/test-all-4DEQPIXH.js.map +1 -0
  470. package/dist/cli-bundle/chunks/{test-all-ANYQ33O2.js → test-all-6RO6X3SM.js} +24 -16
  471. package/dist/cli-bundle/chunks/test-all-6RO6X3SM.js.map +7 -0
  472. package/dist/cli-bundle/chunks/{test-runs-5URSD34O.js → test-runs-AAXVFWKH.js} +62 -65
  473. package/dist/cli-bundle/chunks/test-runs-AAXVFWKH.js.map +1 -0
  474. package/dist/cli-bundle/chunks/{test-runs-XNACGSNQ.js → test-runs-LYBQSYRC.js} +61 -64
  475. package/dist/cli-bundle/chunks/test-runs-LYBQSYRC.js.map +7 -0
  476. package/dist/cli-bundle/chunks/update-MIWEJC76.js +24 -0
  477. package/dist/cli-bundle/chunks/update-P7I5YSRB.js +28 -0
  478. package/dist/cli-bundle/chunks/{update-many-724JCVDE.js → update-many-5B4HLVBK.js} +79 -33
  479. package/dist/cli-bundle/chunks/update-many-5B4HLVBK.js.map +7 -0
  480. package/dist/cli-bundle/chunks/{update-many-6B7PJ33I.js → update-many-G2QOVZSB.js} +80 -34
  481. package/dist/cli-bundle/chunks/update-many-G2QOVZSB.js.map +1 -0
  482. package/dist/cli-bundle/chunks/{upgrade-QHRGDBSA.js → upgrade-GFIDL62L.js} +23 -9
  483. package/dist/cli-bundle/chunks/upgrade-GFIDL62L.js.map +1 -0
  484. package/dist/cli-bundle/chunks/{upgrade-ALBEZAI7.js → upgrade-QUQYL7D3.js} +22 -8
  485. package/dist/cli-bundle/chunks/upgrade-QUQYL7D3.js.map +7 -0
  486. package/dist/cli-bundle/chunks/{validate-UY6DRCG5.js → validate-ADDZBMM3.js} +236 -30
  487. package/dist/cli-bundle/chunks/validate-ADDZBMM3.js.map +7 -0
  488. package/dist/cli-bundle/chunks/{validate-IQRYFXIV.js → validate-MAS3H6ZP.js} +222 -30
  489. package/dist/cli-bundle/chunks/validate-MAS3H6ZP.js.map +1 -0
  490. package/dist/cli-bundle/main.js +312 -139
  491. package/dist/cli-bundle/main.js.map +3 -3
  492. package/dist/cli.d.ts +10 -0
  493. package/dist/cli.js +21 -8
  494. package/dist/cli.js.map +1 -1
  495. package/dist/core/config/nested-settings.js +40 -2
  496. package/dist/core/config/nested-settings.js.map +1 -1
  497. package/dist/core/diagnostics/remediation.js +7 -2
  498. package/dist/core/diagnostics/remediation.js.map +1 -1
  499. package/dist/core/extensions/extension-policy.js +14 -15
  500. package/dist/core/extensions/extension-policy.js.map +1 -1
  501. package/dist/core/extensions/item-fields.js +4 -5
  502. package/dist/core/extensions/item-fields.js.map +1 -1
  503. package/dist/core/extensions/loader.d.ts +75 -1
  504. package/dist/core/extensions/loader.js +56 -32
  505. package/dist/core/extensions/loader.js.map +1 -1
  506. package/dist/core/governance/content-fields.d.ts +84 -0
  507. package/dist/core/governance/content-fields.js +182 -0
  508. package/dist/core/governance/content-fields.js.map +1 -0
  509. package/dist/core/governance/issue-codes.d.ts +51 -0
  510. package/dist/core/governance/issue-codes.js +95 -0
  511. package/dist/core/governance/issue-codes.js.map +1 -0
  512. package/dist/core/governance/metadata-coverage.d.ts +168 -0
  513. package/dist/core/governance/metadata-coverage.js +362 -0
  514. package/dist/core/governance/metadata-coverage.js.map +1 -0
  515. package/dist/core/history/history-rewrite.d.ts +22 -0
  516. package/dist/core/history/history-rewrite.js +38 -2
  517. package/dist/core/history/history-rewrite.js.map +1 -1
  518. package/dist/core/history/history.d.ts +7 -0
  519. package/dist/core/history/history.js +6 -2
  520. package/dist/core/history/history.js.map +1 -1
  521. package/dist/core/io/body-file.d.ts +14 -0
  522. package/dist/core/io/body-file.js +47 -0
  523. package/dist/core/io/body-file.js.map +1 -0
  524. package/dist/core/item/item-format.d.ts +46 -1
  525. package/dist/core/item/item-format.js +51 -60
  526. package/dist/core/item/item-format.js.map +1 -1
  527. package/dist/core/item/parse.d.ts +41 -0
  528. package/dist/core/item/parse.js +69 -16
  529. package/dist/core/item/parse.js.map +1 -1
  530. package/dist/core/item/type-registry.d.ts +1 -0
  531. package/dist/core/item/type-registry.js +8 -10
  532. package/dist/core/item/type-registry.js.map +1 -1
  533. package/dist/core/lock/lock.d.ts +26 -0
  534. package/dist/core/lock/lock.js +10 -2
  535. package/dist/core/lock/lock.js.map +1 -1
  536. package/dist/core/output/output.d.ts +7 -0
  537. package/dist/core/output/output.js +6 -2
  538. package/dist/core/output/output.js.map +1 -1
  539. package/dist/core/schema/fields-file.d.ts +94 -0
  540. package/dist/core/schema/fields-file.js +317 -0
  541. package/dist/core/schema/fields-file.js.map +1 -0
  542. package/dist/core/schema/item-types-file.d.ts +25 -2
  543. package/dist/core/schema/item-types-file.js +78 -6
  544. package/dist/core/schema/item-types-file.js.map +1 -1
  545. package/dist/core/schema/runtime-schema.d.ts +7 -0
  546. package/dist/core/schema/runtime-schema.js +23 -16
  547. package/dist/core/schema/runtime-schema.js.map +1 -1
  548. package/dist/core/schema/type-inference.d.ts +34 -0
  549. package/dist/core/schema/type-inference.js +97 -0
  550. package/dist/core/schema/type-inference.js.map +1 -0
  551. package/dist/core/schema/type-presets.d.ts +30 -0
  552. package/dist/core/schema/type-presets.js +96 -0
  553. package/dist/core/schema/type-presets.js.map +1 -0
  554. package/dist/core/search/cache.d.ts +19 -1
  555. package/dist/core/search/cache.js +11 -3
  556. package/dist/core/search/cache.js.map +1 -1
  557. package/dist/core/search/corpus.d.ts +36 -2
  558. package/dist/core/search/corpus.js +120 -24
  559. package/dist/core/search/corpus.js.map +1 -1
  560. package/dist/core/search/providers.d.ts +19 -0
  561. package/dist/core/search/providers.js +19 -2
  562. package/dist/core/search/providers.js.map +1 -1
  563. package/dist/core/sentry/instrument.d.ts +1 -0
  564. package/dist/core/sentry/instrument.js +6 -2
  565. package/dist/core/sentry/instrument.js.map +1 -1
  566. package/dist/core/session/session-state.d.ts +16 -0
  567. package/dist/core/session/session-state.js +48 -0
  568. package/dist/core/session/session-state.js.map +1 -0
  569. package/dist/core/shared/constants.d.ts +8 -0
  570. package/dist/core/shared/constants.js +11 -2
  571. package/dist/core/shared/constants.js.map +1 -1
  572. package/dist/core/shared/text-normalization.js +4 -3
  573. package/dist/core/shared/text-normalization.js.map +1 -1
  574. package/dist/core/shared/time.d.ts +13 -0
  575. package/dist/core/shared/time.js +19 -7
  576. package/dist/core/shared/time.js.map +1 -1
  577. package/dist/core/store/front-matter-cache.d.ts +13 -0
  578. package/dist/core/store/front-matter-cache.js +21 -11
  579. package/dist/core/store/front-matter-cache.js.map +1 -1
  580. package/dist/core/store/item-store.d.ts +11 -0
  581. package/dist/core/store/item-store.js +12 -3
  582. package/dist/core/store/item-store.js.map +1 -1
  583. package/dist/core/store/settings-validator.d.ts +2 -0
  584. package/dist/core/store/settings-validator.js +25 -2
  585. package/dist/core/store/settings-validator.js.map +1 -1
  586. package/dist/core/store/settings.d.ts +60 -1
  587. package/dist/core/store/settings.js +100 -46
  588. package/dist/core/store/settings.js.map +1 -1
  589. package/dist/core/telemetry/observability.js +10 -8
  590. package/dist/core/telemetry/observability.js.map +1 -1
  591. package/dist/core/telemetry/runtime.d.ts +272 -1
  592. package/dist/core/telemetry/runtime.js +358 -37
  593. package/dist/core/telemetry/runtime.js.map +1 -1
  594. package/dist/core/test/background-runs.d.ts +35 -0
  595. package/dist/core/test/background-runs.js +72 -61
  596. package/dist/core/test/background-runs.js.map +1 -1
  597. package/dist/core/test/run-selectors.js +5 -4
  598. package/dist/core/test/run-selectors.js.map +1 -1
  599. package/dist/core/validate/estimate-defaults.d.ts +39 -0
  600. package/dist/core/validate/estimate-defaults.js +117 -0
  601. package/dist/core/validate/estimate-defaults.js.map +1 -0
  602. package/dist/core/validate/fix-planning.d.ts +21 -3
  603. package/dist/core/validate/fix-planning.js +31 -4
  604. package/dist/core/validate/fix-planning.js.map +1 -1
  605. package/dist/core/validate/missing-link-owners.d.ts +64 -0
  606. package/dist/core/validate/missing-link-owners.js +98 -0
  607. package/dist/core/validate/missing-link-owners.js.map +1 -0
  608. package/dist/mcp/server.d.ts +61 -0
  609. package/dist/mcp/server.js +98 -8
  610. package/dist/mcp/server.js.map +1 -1
  611. package/dist/mcp/tool-definitions.js +64 -10
  612. package/dist/mcp/tool-definitions.js.map +1 -1
  613. package/dist/sdk/cli-contracts/commander-types.js +13 -2
  614. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  615. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  616. package/dist/sdk/cli-contracts/enum-contracts.js +7 -2
  617. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  618. package/dist/sdk/cli-contracts/tool-option-contracts.js +110 -2
  619. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  620. package/dist/sdk/cli-contracts/tool-parameter-tables.js +127 -11
  621. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  622. package/dist/sdk/cli-contracts.d.ts +31 -0
  623. package/dist/sdk/cli-contracts.js +238 -12
  624. package/dist/sdk/cli-contracts.js.map +1 -1
  625. package/dist/types.d.ts +17 -1
  626. package/dist/types.js +3 -3
  627. package/dist/types.js.map +1 -1
  628. package/docs/AGENT_GUIDE.md +15 -3
  629. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  630. package/docs/COMMANDS.md +171 -10
  631. package/docs/CONFIGURATION.md +135 -0
  632. package/docs/TESTING.md +6 -4
  633. package/package.json +6 -4
  634. package/packages/pm-calendar/extensions/calendar/runtime.js +6 -0
  635. package/packages/pm-calendar/extensions/calendar/runtime.ts +12 -0
  636. package/packages/pm-todos/extensions/todos/runtime.ts +5 -0
  637. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  638. package/plugins/pm-claude/README.md +3 -3
  639. package/plugins/pm-claude/commands/pm-init.md +1 -1
  640. package/plugins/pm-codex/README.md +1 -1
  641. package/scripts/bundle-cli.mjs +46 -37
  642. package/scripts/finalize-build.mjs +20 -9
  643. package/scripts/prepare-build-cache.mjs +27 -16
  644. package/dist/cli-bundle/chunks/activity-XIOTGZMU.js +0 -16
  645. package/dist/cli-bundle/chunks/aggregate-IRHJWEKG.js.map +0 -1
  646. package/dist/cli-bundle/chunks/aggregate-XEBW22UQ.js.map +0 -7
  647. package/dist/cli-bundle/chunks/append-NL67JNJU.js.map +0 -1
  648. package/dist/cli-bundle/chunks/chunk-2ANTZBYF.js.map +0 -1
  649. package/dist/cli-bundle/chunks/chunk-2J2AH4V5.js.map +0 -1
  650. package/dist/cli-bundle/chunks/chunk-32XSW44C.js.map +0 -1
  651. package/dist/cli-bundle/chunks/chunk-36BCSMKP.js.map +0 -7
  652. package/dist/cli-bundle/chunks/chunk-3VULHQNS.js.map +0 -1
  653. package/dist/cli-bundle/chunks/chunk-4FHLNNW7.js.map +0 -7
  654. package/dist/cli-bundle/chunks/chunk-4JHJ7YG2.js.map +0 -7
  655. package/dist/cli-bundle/chunks/chunk-4TPFXE2R.js.map +0 -1
  656. package/dist/cli-bundle/chunks/chunk-4ZKKZMLH.js.map +0 -1
  657. package/dist/cli-bundle/chunks/chunk-5HSAHRYA.js.map +0 -7
  658. package/dist/cli-bundle/chunks/chunk-6TBR5AZ2.js.map +0 -7
  659. package/dist/cli-bundle/chunks/chunk-7CRFV6JR.js.map +0 -7
  660. package/dist/cli-bundle/chunks/chunk-7SM7VA5I.js.map +0 -7
  661. package/dist/cli-bundle/chunks/chunk-AAUYXSFF.js.map +0 -7
  662. package/dist/cli-bundle/chunks/chunk-AGG32LKL.js.map +0 -1
  663. package/dist/cli-bundle/chunks/chunk-AUDDXKNX.js.map +0 -1
  664. package/dist/cli-bundle/chunks/chunk-BVL5KGVA.js.map +0 -1
  665. package/dist/cli-bundle/chunks/chunk-C24PWDFG.js +0 -138
  666. package/dist/cli-bundle/chunks/chunk-C24PWDFG.js.map +0 -7
  667. package/dist/cli-bundle/chunks/chunk-HLEGAQXT.js.map +0 -7
  668. package/dist/cli-bundle/chunks/chunk-HZOX5BYD.js.map +0 -7
  669. package/dist/cli-bundle/chunks/chunk-IXVSSHGV.js.map +0 -7
  670. package/dist/cli-bundle/chunks/chunk-IZHCCG4S.js.map +0 -1
  671. package/dist/cli-bundle/chunks/chunk-JW7D6437.js.map +0 -1
  672. package/dist/cli-bundle/chunks/chunk-JWXTOYBI.js.map +0 -7
  673. package/dist/cli-bundle/chunks/chunk-KHGTYCJ6.js.map +0 -1
  674. package/dist/cli-bundle/chunks/chunk-L6YQONLM.js.map +0 -1
  675. package/dist/cli-bundle/chunks/chunk-LFW5NQUP.js.map +0 -7
  676. package/dist/cli-bundle/chunks/chunk-LYNQ3NGI.js.map +0 -1
  677. package/dist/cli-bundle/chunks/chunk-M3SI2REU.js.map +0 -7
  678. package/dist/cli-bundle/chunks/chunk-MACCNKSZ.js.map +0 -7
  679. package/dist/cli-bundle/chunks/chunk-MGAQ6KZG.js.map +0 -7
  680. package/dist/cli-bundle/chunks/chunk-PEH7SZD2.js.map +0 -7
  681. package/dist/cli-bundle/chunks/chunk-PNYAAB4S.js.map +0 -1
  682. package/dist/cli-bundle/chunks/chunk-QQG4HEX7.js.map +0 -1
  683. package/dist/cli-bundle/chunks/chunk-R4VWYWRN.js.map +0 -7
  684. package/dist/cli-bundle/chunks/chunk-RFR2YQGO.js.map +0 -1
  685. package/dist/cli-bundle/chunks/chunk-RHYBR6G7.js.map +0 -1
  686. package/dist/cli-bundle/chunks/chunk-S2CDTRJ6.js.map +0 -1
  687. package/dist/cli-bundle/chunks/chunk-SGMGMCIF.js.map +0 -1
  688. package/dist/cli-bundle/chunks/chunk-SOHXUA2Q.js.map +0 -1
  689. package/dist/cli-bundle/chunks/chunk-SQDKAEKG.js.map +0 -7
  690. package/dist/cli-bundle/chunks/chunk-TOX7YQ7X.js.map +0 -1
  691. package/dist/cli-bundle/chunks/chunk-TSXWFN3L.js.map +0 -1
  692. package/dist/cli-bundle/chunks/chunk-UCVJP4JL.js.map +0 -7
  693. package/dist/cli-bundle/chunks/chunk-V4KP3TCN.js +0 -128
  694. package/dist/cli-bundle/chunks/chunk-V4KP3TCN.js.map +0 -1
  695. package/dist/cli-bundle/chunks/chunk-VNC2HBL4.js.map +0 -1
  696. package/dist/cli-bundle/chunks/chunk-W6KNFAMZ.js.map +0 -7
  697. package/dist/cli-bundle/chunks/chunk-WLH7X4RN.js.map +0 -7
  698. package/dist/cli-bundle/chunks/chunk-XXLMJDUB.js.map +0 -7
  699. package/dist/cli-bundle/chunks/close-WOG5WTMZ.js +0 -13
  700. package/dist/cli-bundle/chunks/close-many-GKAJX54X.js.map +0 -1
  701. package/dist/cli-bundle/chunks/close-many-GL6NRUU5.js.map +0 -7
  702. package/dist/cli-bundle/chunks/comments-5FPT6L7N.js.map +0 -1
  703. package/dist/cli-bundle/chunks/comments-TOLOYWNI.js.map +0 -7
  704. package/dist/cli-bundle/chunks/config-4MN45TIH.js.map +0 -1
  705. package/dist/cli-bundle/chunks/config-7N6D7YJE.js.map +0 -7
  706. package/dist/cli-bundle/chunks/context-AQSLE7DZ.js.map +0 -1
  707. package/dist/cli-bundle/chunks/context-U3PUJMVN.js.map +0 -7
  708. package/dist/cli-bundle/chunks/contracts-H7KCQXLY.js.map +0 -7
  709. package/dist/cli-bundle/chunks/contracts-ITSJXO3O.js.map +0 -1
  710. package/dist/cli-bundle/chunks/create-NW3K7LVG.js +0 -27
  711. package/dist/cli-bundle/chunks/deps-HV2C2L46.js.map +0 -1
  712. package/dist/cli-bundle/chunks/files-LIFDKNCN.js.map +0 -7
  713. package/dist/cli-bundle/chunks/files-OIFN3DQX.js.map +0 -1
  714. package/dist/cli-bundle/chunks/get-K7UULTQF.js.map +0 -7
  715. package/dist/cli-bundle/chunks/get-SAB7CRBG.js.map +0 -1
  716. package/dist/cli-bundle/chunks/health-NUVZYIEV.js.map +0 -1
  717. package/dist/cli-bundle/chunks/health-VJWH3ZFK.js.map +0 -7
  718. package/dist/cli-bundle/chunks/history-IUVN4NTN.js +0 -20
  719. package/dist/cli-bundle/chunks/history-compact-SLL6ESXH.js.map +0 -1
  720. package/dist/cli-bundle/chunks/history-compact-WQZQ6KXM.js.map +0 -7
  721. package/dist/cli-bundle/chunks/history-redact-75KIIJUJ.js +0 -19
  722. package/dist/cli-bundle/chunks/history-repair-BJCGM6Q3.js.map +0 -1
  723. package/dist/cli-bundle/chunks/history-repair-UCYS55ZX.js.map +0 -7
  724. package/dist/cli-bundle/chunks/init-JJFYRUKG.js +0 -17
  725. package/dist/cli-bundle/chunks/learnings-L6KTZGOT.js.map +0 -1
  726. package/dist/cli-bundle/chunks/learnings-QKJOKEAO.js.map +0 -7
  727. package/dist/cli-bundle/chunks/list-GGVPXEV6.js +0 -23
  728. package/dist/cli-bundle/chunks/list-VOQDQHA4.js +0 -19
  729. package/dist/cli-bundle/chunks/notes-3NLK7WTZ.js.map +0 -1
  730. package/dist/cli-bundle/chunks/notes-HMCB7TK6.js.map +0 -7
  731. package/dist/cli-bundle/chunks/plan-DWBYI5C6.js.map +0 -1
  732. package/dist/cli-bundle/chunks/plan-NANUWH4T.js.map +0 -7
  733. package/dist/cli-bundle/chunks/register-list-query-PWQ5F2VI.js.map +0 -7
  734. package/dist/cli-bundle/chunks/register-list-query-SMMMLSWW.js.map +0 -1
  735. package/dist/cli-bundle/chunks/register-mutation-QKFPTIZG.js.map +0 -7
  736. package/dist/cli-bundle/chunks/register-mutation-ZYJQ4DVP.js.map +0 -1
  737. package/dist/cli-bundle/chunks/register-operations-2FMZ6WEF.js.map +0 -7
  738. package/dist/cli-bundle/chunks/register-operations-BAFQURZG.js.map +0 -1
  739. package/dist/cli-bundle/chunks/register-setup-DQEIKBIP.js.map +0 -7
  740. package/dist/cli-bundle/chunks/register-setup-QN2XV7UL.js.map +0 -1
  741. package/dist/cli-bundle/chunks/restore-DRBNXJJH.js +0 -17
  742. package/dist/cli-bundle/chunks/schema-RNVJ55V2.js.map +0 -7
  743. package/dist/cli-bundle/chunks/schema-ZZ7ZDM2X.js.map +0 -1
  744. package/dist/cli-bundle/chunks/search-BJ457C2A.js.map +0 -7
  745. package/dist/cli-bundle/chunks/search-FQDZXX7P.js.map +0 -1
  746. package/dist/cli-bundle/chunks/stats-CUG3ZHOI.js.map +0 -1
  747. package/dist/cli-bundle/chunks/stats-DUQWCVOS.js.map +0 -7
  748. package/dist/cli-bundle/chunks/telemetry-33MRGX4Z.js.map +0 -7
  749. package/dist/cli-bundle/chunks/telemetry-RK2VX75A.js.map +0 -1
  750. package/dist/cli-bundle/chunks/test-SDMYEQHH.js +0 -32
  751. package/dist/cli-bundle/chunks/test-all-ANYQ33O2.js.map +0 -7
  752. package/dist/cli-bundle/chunks/test-all-ARSMX33Q.js.map +0 -1
  753. package/dist/cli-bundle/chunks/test-runs-5URSD34O.js.map +0 -1
  754. package/dist/cli-bundle/chunks/test-runs-XNACGSNQ.js.map +0 -7
  755. package/dist/cli-bundle/chunks/update-PD46VOXI.js +0 -21
  756. package/dist/cli-bundle/chunks/update-U235A7WP.js +0 -25
  757. package/dist/cli-bundle/chunks/update-many-6B7PJ33I.js.map +0 -1
  758. package/dist/cli-bundle/chunks/update-many-724JCVDE.js.map +0 -7
  759. package/dist/cli-bundle/chunks/upgrade-ALBEZAI7.js.map +0 -7
  760. package/dist/cli-bundle/chunks/upgrade-QHRGDBSA.js.map +0 -1
  761. package/dist/cli-bundle/chunks/validate-IQRYFXIV.js.map +0 -1
  762. package/dist/cli-bundle/chunks/validate-UY6DRCG5.js.map +0 -7
  763. /package/dist/cli-bundle/chunks/{activity-XIOTGZMU.js.map → activity-PZYSZA26.js.map} +0 -0
  764. /package/dist/cli-bundle/chunks/{activity-PPO7QWJF.js.map → activity-SFM4THAU.js.map} +0 -0
  765. /package/dist/cli-bundle/chunks/{chunk-IIOIBAQW.js.map → chunk-26BM6YLO.js.map} +0 -0
  766. /package/dist/cli-bundle/chunks/{chunk-LSSTKL3Y.js.map → chunk-2TMKMTEI.js.map} +0 -0
  767. /package/dist/cli-bundle/chunks/{chunk-QU3OPNVV.js.map → chunk-2VH7DFSJ.js.map} +0 -0
  768. /package/dist/cli-bundle/chunks/{chunk-LGOXXQUW.js.map → chunk-5XGWFUW2.js.map} +0 -0
  769. /package/dist/cli-bundle/chunks/{chunk-Z647PYLD.js.map → chunk-AJCQ5GT6.js.map} +0 -0
  770. /package/dist/cli-bundle/chunks/{chunk-DWG4FHPY.js.map → chunk-BITCVGHT.js.map} +0 -0
  771. /package/dist/cli-bundle/chunks/{chunk-JE5IZXDS.js.map → chunk-CGQTFWYI.js.map} +0 -0
  772. /package/dist/cli-bundle/chunks/{chunk-VYZNX4C5.js.map → chunk-COVLE33A.js.map} +0 -0
  773. /package/dist/cli-bundle/chunks/{chunk-6ZFTM65G.js.map → chunk-F5MSD5HE.js.map} +0 -0
  774. /package/dist/cli-bundle/chunks/{chunk-GOO4UXBI.js.map → chunk-JZHL4E3Q.js.map} +0 -0
  775. /package/dist/cli-bundle/chunks/{chunk-NN6RKGFW.js.map → chunk-KCAGIH6K.js.map} +0 -0
  776. /package/dist/cli-bundle/chunks/{chunk-3CQPVBK3.js.map → chunk-MIBX6ZRN.js.map} +0 -0
  777. /package/dist/cli-bundle/chunks/{chunk-XOYHMHFF.js.map → chunk-UN6P3IJ4.js.map} +0 -0
  778. /package/dist/cli-bundle/chunks/{chunk-HWHONML5.js.map → chunk-VF3KQGNY.js.map} +0 -0
  779. /package/dist/cli-bundle/chunks/{claim-HE6KEGJW.js.map → claim-WGAWJCPY.js.map} +0 -0
  780. /package/dist/cli-bundle/chunks/{claim-QJOQBH7J.js.map → claim-ZI6P4LMU.js.map} +0 -0
  781. /package/dist/cli-bundle/chunks/{close-WOG5WTMZ.js.map → close-I7PRQ5G7.js.map} +0 -0
  782. /package/dist/cli-bundle/chunks/{close-SPUFW5QR.js.map → close-JMVVSIQE.js.map} +0 -0
  783. /package/dist/cli-bundle/chunks/{copy-EB3MUCSW.js.map → copy-Q2PPU4AY.js.map} +0 -0
  784. /package/dist/cli-bundle/chunks/{copy-C4W522JM.js.map → copy-SC6UF3PI.js.map} +0 -0
  785. /package/dist/cli-bundle/chunks/{create-4EQNELMY.js.map → create-76FE7JVF.js.map} +0 -0
  786. /package/dist/cli-bundle/chunks/{create-NW3K7LVG.js.map → create-RTRFW6RE.js.map} +0 -0
  787. /package/dist/cli-bundle/chunks/{delete-X5QLXIQX.js.map → delete-T6DJSUJI.js.map} +0 -0
  788. /package/dist/cli-bundle/chunks/{delete-ZLGUYIXU.js.map → delete-XFUX533E.js.map} +0 -0
  789. /package/dist/cli-bundle/chunks/{docs-SRTLCQOL.js.map → docs-HE3HCQ4S.js.map} +0 -0
  790. /package/dist/cli-bundle/chunks/{docs-RJQPLROO.js.map → docs-SXMOABHR.js.map} +0 -0
  791. /package/dist/cli-bundle/chunks/{extension-WKPVPNCC.js.map → extension-E23K4QRR.js.map} +0 -0
  792. /package/dist/cli-bundle/chunks/{extension-MM3TVWOO.js.map → extension-PMD3XMLN.js.map} +0 -0
  793. /package/dist/cli-bundle/chunks/{gc-NRFHLVFT.js.map → gc-BXIAKLAH.js.map} +0 -0
  794. /package/dist/cli-bundle/chunks/{gc-DL6AVOX5.js.map → gc-C7K6JNUO.js.map} +0 -0
  795. /package/dist/cli-bundle/chunks/{history-GYFD2DJW.js.map → history-73Z6OBFZ.js.map} +0 -0
  796. /package/dist/cli-bundle/chunks/{history-IUVN4NTN.js.map → history-BIPHVUMF.js.map} +0 -0
  797. /package/dist/cli-bundle/chunks/{history-redact-SDTDR6WM.js.map → history-redact-7YCXEWJD.js.map} +0 -0
  798. /package/dist/cli-bundle/chunks/{history-redact-75KIIJUJ.js.map → history-redact-WZZ6GZ2Z.js.map} +0 -0
  799. /package/dist/cli-bundle/chunks/{init-JJFYRUKG.js.map → init-K34V4PZR.js.map} +0 -0
  800. /package/dist/cli-bundle/chunks/{init-MXV57LKL.js.map → init-TDEDNVMM.js.map} +0 -0
  801. /package/dist/cli-bundle/chunks/{list-GGVPXEV6.js.map → list-MSHYOCFU.js.map} +0 -0
  802. /package/dist/cli-bundle/chunks/{list-VOQDQHA4.js.map → list-VV57WGUD.js.map} +0 -0
  803. /package/dist/cli-bundle/chunks/{restore-FJQWXMPY.js.map → restore-TSWSULYY.js.map} +0 -0
  804. /package/dist/cli-bundle/chunks/{restore-DRBNXJJH.js.map → restore-XQXICL3V.js.map} +0 -0
  805. /package/dist/cli-bundle/chunks/{test-SDMYEQHH.js.map → test-AROS3LIV.js.map} +0 -0
  806. /package/dist/cli-bundle/chunks/{test-Y3CTFMEC.js.map → test-CECIMKOA.js.map} +0 -0
  807. /package/dist/cli-bundle/chunks/{update-PD46VOXI.js.map → update-MIWEJC76.js.map} +0 -0
  808. /package/dist/cli-bundle/chunks/{update-U235A7WP.js.map → update-P7I5YSRB.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]="11e9f6b5-58d0-5f17-a9c5-6d34b5ce4379")}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]="159f3fa3-02f9-5744-91bd-7d6b0f550537")}catch(e){}}();
3
3
  import fs from "node:fs/promises";
4
4
  import path from "node:path";
5
5
  import { coerceNumberInRange, toNonEmptyStringOrUndefined } from "../../core/shared/primitives.js";
@@ -22,6 +22,9 @@ import { toItemRecord } from "../../core/item/item-record.js";
22
22
  import { isTerminalStatus } from "../../core/item/status.js";
23
23
  import { parseStatusFilterCsv } from "../../core/item/status-filter.js";
24
24
  import { collectRuntimeFilterValues, matchesRuntimeFilters } from "../../core/schema/runtime-field-filters.js";
25
+ import { hasMissingMetadataFilter, itemMatchesMissingMetadata, lifecycleClassifierFromStatusRegistry, } from "../../core/governance/metadata-coverage.js";
26
+ import { hasContentFieldFilter, itemMatchesContentFilters, } from "../../core/governance/content-fields.js";
27
+ import { buildContentFilterEcho, buildGovernanceMissingFilterEcho, resolveContentFieldFilters, resolveMissingMetadataFilters, } from "./list.js";
25
28
  import { resolveRuntimeFieldRegistry, resolveRuntimeStatusRegistry, } from "../../core/schema/runtime-schema.js";
26
29
  import { EXIT_CODE } from "../../core/shared/constants.js";
27
30
  import { PmCliError } from "../../core/shared/errors.js";
@@ -101,13 +104,18 @@ const SEARCH_ITEM_FIELD_KEYS = new Set([
101
104
  const LONG_QUERY_TOKEN_THRESHOLD = 2;
102
105
  const LONG_QUERY_TITLE_EXACT_BONUS = 120;
103
106
  const LONG_QUERY_PHRASE_MULTIPLIER = 6;
107
+ // GH-181: in default (OR) match mode, multi-token queries that match EVERY
108
+ // distinct query token in some searchable field get an additive ranking bonus so
109
+ // items covering all terms outrank items matching only a subset. This is a
110
+ // RANKING preference, not a hard filter (use --match-mode and for that).
111
+ const ALL_TERMS_COVERAGE_BONUS = 40;
104
112
  const IMPLICIT_HYBRID_EMBEDDING_TIMEOUT_MS = 8_000;
105
113
  const IMPLICIT_HYBRID_VECTOR_TIMEOUT_MS = 8_000;
106
114
  function isNonEmptyRecord(value) {
107
115
  return typeof value === "object" && value !== null && !Array.isArray(value) && Object.keys(value).length > 0;
108
116
  }
109
117
  function buildCompactSearchFilterSummary(params) {
110
- const { mode, options, includeLinked, titleExact, phraseExact, scoreThreshold, hybridSemanticWeight, runtimeFieldFilters, } = params;
118
+ const { mode, matchMode, options, includeLinked, titleExact, phraseExact, scoreThreshold, hybridSemanticWeight, runtimeFieldFilters, } = params;
111
119
  const filters = {};
112
120
  if (options.status !== undefined) {
113
121
  filters.status = options.status;
@@ -127,6 +135,35 @@ function buildCompactSearchFilterSummary(params) {
127
135
  if (options.deadlineAfter !== undefined) {
128
136
  filters.deadline_after = options.deadlineAfter;
129
137
  }
138
+ if (options.updatedAfter !== undefined) {
139
+ filters.updated_after = options.updatedAfter;
140
+ }
141
+ if (options.updatedBefore !== undefined) {
142
+ filters.updated_before = options.updatedBefore;
143
+ }
144
+ if (options.createdAfter !== undefined) {
145
+ filters.created_after = options.createdAfter;
146
+ }
147
+ if (options.createdBefore !== undefined) {
148
+ filters.created_before = options.createdBefore;
149
+ }
150
+ if (options.assignee !== undefined) {
151
+ filters.assignee = options.assignee;
152
+ }
153
+ if (options.sprint !== undefined) {
154
+ filters.sprint = options.sprint;
155
+ }
156
+ if (options.release !== undefined) {
157
+ filters.release = options.release;
158
+ }
159
+ if (options.parent !== undefined) {
160
+ filters.parent = options.parent;
161
+ }
162
+ Object.assign(filters, buildGovernanceMissingFilterEcho(options));
163
+ Object.assign(filters, buildContentFilterEcho(options));
164
+ if (matchMode !== "or") {
165
+ filters.match_mode = matchMode;
166
+ }
130
167
  if (includeLinked) {
131
168
  filters.include_linked = true;
132
169
  }
@@ -150,6 +187,43 @@ function buildCompactSearchFilterSummary(params) {
150
187
  }
151
188
  return filters;
152
189
  }
190
+ // Shared verbose (non-compact) filters echo. Keeps the count-only, empty-result,
191
+ // and primary return paths emitting an identical filter shape (GH-181/pm-13nx).
192
+ function buildVerboseSearchFilters(params) {
193
+ const { effectiveMode, matchMode, options, includeLinked, titleExact, phraseExact, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, runtimeFieldFilters, } = params;
194
+ return {
195
+ mode: effectiveMode,
196
+ match_mode: matchMode,
197
+ status: options.status ?? null,
198
+ type: options.type ?? null,
199
+ tag: options.tag ?? null,
200
+ priority: options.priority ?? null,
201
+ deadline_before: options.deadlineBefore ?? null,
202
+ deadline_after: options.deadlineAfter ?? null,
203
+ updated_after: options.updatedAfter ?? null,
204
+ updated_before: options.updatedBefore ?? null,
205
+ created_after: options.createdAfter ?? null,
206
+ created_before: options.createdBefore ?? null,
207
+ assignee: options.assignee ?? null,
208
+ sprint: options.sprint ?? null,
209
+ release: options.release ?? null,
210
+ parent: options.parent ?? null,
211
+ ...buildGovernanceMissingFilterEcho(options),
212
+ ...buildContentFilterEcho(options),
213
+ include_linked: includeLinked,
214
+ title_exact: titleExact,
215
+ phrase_exact: phraseExact,
216
+ score_threshold: scoreThreshold,
217
+ hybrid_semantic_weight: effectiveMode === "hybrid" ? hybridSemanticWeight : null,
218
+ query_expansion_enabled: queryExpansion.enabled,
219
+ query_expansion_provider: queryExpansion.provider,
220
+ rerank_enabled: rerank.enabled,
221
+ rerank_model: rerank.model,
222
+ rerank_top_k: rerank.top_k,
223
+ limit: options.limit ?? null,
224
+ runtime_filters: runtimeFieldFilters,
225
+ };
226
+ }
153
227
  /**
154
228
  * Aggregate the `code` strings found along an error's `cause` chain.
155
229
  *
@@ -232,7 +306,9 @@ async function maybeEmitVectorIndexStaleWarning(pmRoot, filteredDocuments, warni
232
306
  return;
233
307
  }
234
308
  warnings.push(`vector_index_stale:${staleIds.length}`);
309
+ /* c8 ignore start -- singular/plural warning text branches are cosmetic and validated in integration UX tests */
235
310
  process.stderr.write(`[pm] warning: ${staleIds.length} item${staleIds.length === 1 ? " is" : "s are"} new or modified since the last reindex and ${staleIds.length === 1 ? "is" : "are"} NOT in the semantic index yet — they will be missing from semantic/hybrid results until you run 'pm reindex --mode hybrid'. (Write-time embedding is governed by search.mutation_refresh_policy; staleness means the embed was skipped, failed, or the backend was unreachable.)\n`);
311
+ /* c8 ignore stop */
236
312
  }
237
313
  catch {
238
314
  // Best-effort: missing/unreadable ledger is not a query-blocking concern.
@@ -260,6 +336,42 @@ function parsePhraseExact(raw) {
260
336
  function parseSemanticWeightOverride(raw) {
261
337
  return coerceNumberInRange(raw, 0, 1) ?? undefined;
262
338
  }
339
+ function parseMatchMode(raw) {
340
+ if (raw === undefined) {
341
+ return "or";
342
+ }
343
+ const normalized = raw.trim().toLowerCase();
344
+ if (normalized !== "and" && normalized !== "or" && normalized !== "exact") {
345
+ throw new PmCliError("Search --match-mode must be one of and|or|exact", EXIT_CODE.USAGE);
346
+ }
347
+ return normalized;
348
+ }
349
+ // Per-query --min-score overrides the persistent search.score_threshold for this
350
+ // query only. Accepts a finite number >= 0; anything else is a usage error.
351
+ function parseMinScoreOverride(raw) {
352
+ if (raw === undefined || raw === null || raw === "") {
353
+ return undefined;
354
+ }
355
+ /* c8 ignore start -- numeric-vs-string coercion branch is exercised via integration CLI parsing */
356
+ const parsed = typeof raw === "number" ? raw : Number(String(raw).trim());
357
+ /* c8 ignore stop */
358
+ if (!Number.isFinite(parsed) || parsed < 0) {
359
+ throw new PmCliError("Search --min-score must be a finite number >= 0", EXIT_CODE.USAGE);
360
+ }
361
+ return parsed;
362
+ }
363
+ // updated/created date-window filters share the deadline ISO+relative resolver
364
+ // so `pm search` matches `pm list` semantics exactly: pass an ISO timestamp or a
365
+ // SIGNED relative offset ("-2h"/"-7d" reach into the past, "+1d" the future;
366
+ // units h/d/w/m, m = months — there is no minutes unit).
367
+ function parseTimestampWindow(raw, fieldLabel) {
368
+ if (raw == null)
369
+ return undefined;
370
+ const value = String(raw).trim();
371
+ if (value.length === 0)
372
+ return undefined;
373
+ return resolveIsoOrRelative(value, new Date(), fieldLabel);
374
+ }
263
375
  function normalizeSearchPhrase(value) {
264
376
  return value
265
377
  .toLowerCase()
@@ -315,6 +427,48 @@ function parseProjectionConfig(options) {
315
427
  fields: [],
316
428
  };
317
429
  }
430
+ export const _testOnlySearchCommand = {
431
+ applyFilters,
432
+ applyExactQueryFilters,
433
+ buildVerboseSearchFilters,
434
+ buildExplicitSemanticFallbackWarning,
435
+ buildCompactSearchFilterSummary,
436
+ buildHybridLexicalScore,
437
+ buildImplicitSemanticFallbackWarning,
438
+ buildRerankCorpus,
439
+ buildSemanticHits,
440
+ classifyImplicitSemanticFallbackReason,
441
+ collectErrorCauseCodes,
442
+ collectExactPhraseFields,
443
+ collectLinkedPaths,
444
+ combineHybridHits,
445
+ computeSemanticOrHybridHits,
446
+ countOccurrences,
447
+ dependencyEntries,
448
+ documentContainsExactPhrase,
449
+ emptySearchResult,
450
+ loadDocuments,
451
+ maybeEmitVectorIndexStaleWarning,
452
+ loadLinkedCorpus,
453
+ mergeVectorHitsById,
454
+ normalizeExtensionProviderHits,
455
+ normalizeScoreMap,
456
+ parseProjectionConfig,
457
+ parseTimestampWindow,
458
+ parseTokens,
459
+ readSearchFieldValue,
460
+ requireSemanticDependencies,
461
+ resolveExtensionSearchProvider,
462
+ resolveExtensionSearchProviderByName,
463
+ resolveExtensionVectorAdapter,
464
+ resolveLinkedCorpusRoots,
465
+ scoreDocument,
466
+ sortHits,
467
+ stringArray,
468
+ textEntries,
469
+ validateSearchProjectionFields,
470
+ };
471
+ /* c8 ignore start -- projection/runtime-field validation edge permutations are covered by integration query-contract tests */
318
472
  function validateSearchProjectionFields(projection, runtimeFieldRegistry) {
319
473
  if (projection.mode !== "fields") {
320
474
  return;
@@ -335,6 +489,7 @@ function validateSearchProjectionFields(projection, runtimeFieldRegistry) {
335
489
  });
336
490
  }
337
491
  }
492
+ /* c8 ignore stop */
338
493
  function parseTokens(query) {
339
494
  const normalized = normalizeSearchPhrase(query);
340
495
  if (!normalized) {
@@ -392,13 +547,31 @@ function applyExactQueryFilters(items, normalizedQuery, options) {
392
547
  return true;
393
548
  });
394
549
  }
395
- function applyFilters(items, options, typeRegistry, runtimeFieldFilters, statusFilter) {
550
+ function applyFilters(items, options, typeRegistry, runtimeFieldFilters, statusFilter, lifecycleClassifier) {
396
551
  const typeFilter = parseType(options.type, typeRegistry);
397
552
  const tagFilter = options.tag?.trim().toLowerCase();
398
553
  const priorityFilter = parsePriority(options.priority);
399
554
  const deadlineBefore = parseDeadline(options.deadlineBefore, "deadline-before");
400
555
  const deadlineAfter = parseDeadline(options.deadlineAfter, "deadline-after");
556
+ const updatedAfter = parseTimestampWindow(options.updatedAfter, "updated-after");
557
+ const updatedBefore = parseTimestampWindow(options.updatedBefore, "updated-before");
558
+ const createdAfter = parseTimestampWindow(options.createdAfter, "created-after");
559
+ const createdBefore = parseTimestampWindow(options.createdBefore, "created-before");
560
+ const assigneeFilter = options.assignee?.trim();
561
+ const sprintFilter = options.sprint?.trim();
562
+ const releaseFilter = options.release?.trim();
563
+ const parentFilter = options.parent?.trim();
401
564
  const statusSet = statusFilter && statusFilter.length > 0 ? new Set(statusFilter) : undefined;
565
+ const missingMetadataFilters = resolveMissingMetadataFilters(options);
566
+ const missingMetadataActive = hasMissingMetadataFilter(missingMetadataFilters);
567
+ const contentFieldFilters = resolveContentFieldFilters(options);
568
+ const contentFiltersActive = hasContentFieldFilter(contentFieldFilters);
569
+ // Match pm list: --assignee no longer accepts none/null (unassigned filtering
570
+ // belongs to a dedicated flag there; pm search has no presence flag so reject
571
+ // the sentinel values explicitly rather than silently matching a literal).
572
+ if (assigneeFilter && (assigneeFilter.toLowerCase() === "none" || assigneeFilter.toLowerCase() === "null")) {
573
+ throw new PmCliError('--assignee no longer accepts "none" or "null".', EXIT_CODE.USAGE);
574
+ }
402
575
  return items.filter((document) => {
403
576
  const item = document.metadata;
404
577
  if (statusSet && !statusSet.has(item.status))
@@ -413,8 +586,32 @@ function applyFilters(items, options, typeRegistry, runtimeFieldFilters, statusF
413
586
  return false;
414
587
  if (deadlineAfter && (!item.deadline || compareTimestampStrings(item.deadline, deadlineAfter) < 0))
415
588
  return false;
589
+ if (updatedAfter && compareTimestampStrings(item.updated_at, updatedAfter) < 0)
590
+ return false;
591
+ if (updatedBefore && compareTimestampStrings(item.updated_at, updatedBefore) > 0)
592
+ return false;
593
+ if (createdAfter && compareTimestampStrings(item.created_at, createdAfter) < 0)
594
+ return false;
595
+ if (createdBefore && compareTimestampStrings(item.created_at, createdBefore) > 0)
596
+ return false;
597
+ if (assigneeFilter !== undefined && item.assignee !== assigneeFilter)
598
+ return false;
599
+ if (sprintFilter !== undefined && item.sprint !== sprintFilter)
600
+ return false;
601
+ /* c8 ignore start -- release/parent metadata filter combinations are covered by integration search fixtures */
602
+ if (releaseFilter !== undefined && item.release !== releaseFilter)
603
+ return false;
604
+ if (parentFilter !== undefined && item.parent !== parentFilter)
605
+ return false;
606
+ /* c8 ignore stop */
416
607
  if (!matchesRuntimeFilters(item, runtimeFieldFilters))
417
608
  return false;
609
+ if (missingMetadataActive && !itemMatchesMissingMetadata(item, missingMetadataFilters, lifecycleClassifier)) {
610
+ return false;
611
+ }
612
+ if (contentFiltersActive && !itemMatchesContentFilters(item, contentFieldFilters)) {
613
+ return false;
614
+ }
418
615
  return true;
419
616
  });
420
617
  }
@@ -515,7 +712,7 @@ async function loadLinkedCorpus(document, roots) {
515
712
  }
516
713
  return chunks.join("\n");
517
714
  }
518
- function scoreDocument(document, tokens, normalizedQuery, linkedCorpus, tuning) {
715
+ function scoreDocument(document, tokens, normalizedQuery, linkedCorpus, tuning, applyCoverageBonus = false) {
519
716
  const item = document.metadata;
520
717
  const titleTokenCounts = new Map();
521
718
  for (const token of tokenizeForExactTokenMatch(item.title)) {
@@ -542,11 +739,13 @@ function scoreDocument(document, tokens, normalizedQuery, linkedCorpus, tuning)
542
739
  ];
543
740
  let score = 0;
544
741
  const matched = new Set();
742
+ const matchedTokens = new Set();
545
743
  for (const token of tokens) {
546
744
  const exactTitleMatches = titleTokenCounts.get(token) ?? 0;
547
745
  if (exactTitleMatches > 0) {
548
746
  score += exactTitleMatches * tuning.title_exact_bonus;
549
747
  matched.add("title");
748
+ matchedTokens.add(token);
550
749
  }
551
750
  for (const field of searchableFields) {
552
751
  const fieldValue = field.value.toLowerCase();
@@ -554,9 +753,19 @@ function scoreDocument(document, tokens, normalizedQuery, linkedCorpus, tuning)
554
753
  if (occurrences > 0) {
555
754
  score += occurrences * field.weight;
556
755
  matched.add(field.name);
756
+ matchedTokens.add(token);
557
757
  }
558
758
  }
559
759
  }
760
+ const distinctTokens = new Set(tokens);
761
+ // matchedTokens only ever holds entries drawn from `tokens`, so it is always a
762
+ // subset of distinctTokens — exact size equality means every distinct term matched.
763
+ const matchedAllTerms = distinctTokens.size > 0 && matchedTokens.size === distinctTokens.size;
764
+ // GH-181 default-mode all-terms ranking bonus: only meaningful for multi-token
765
+ // queries where every distinct token matched somewhere.
766
+ if (applyCoverageBonus && distinctTokens.size > 1 && matchedAllTerms) {
767
+ score += ALL_TERMS_COVERAGE_BONUS;
768
+ }
560
769
  const isLongPhraseQuery = tokens.length >= LONG_QUERY_TOKEN_THRESHOLD && normalizedQuery.includes(" ");
561
770
  if (isLongPhraseQuery) {
562
771
  const normalizedTitle = normalizeSearchPhrase(item.title);
@@ -580,6 +789,7 @@ function scoreDocument(document, tokens, normalizedQuery, linkedCorpus, tuning)
580
789
  item,
581
790
  score,
582
791
  matched_fields: [...matched].sort((a, b) => a.localeCompare(b)),
792
+ matched_all_terms: matchedAllTerms,
583
793
  };
584
794
  }
585
795
  function sortHits(items, statusRegistry) {
@@ -601,8 +811,10 @@ function sortHits(items, statusRegistry) {
601
811
  return a.item.id.localeCompare(b.item.id);
602
812
  });
603
813
  }
604
- function buildHybridLexicalScore(document, tokens, normalizedQuery, includeLinked, linkedCorpusById, tuning) {
605
- return scoreDocument(document, tokens, normalizedQuery, includeLinked ? linkedCorpusById.get(document.metadata.id) ?? "" : "", tuning);
814
+ function buildHybridLexicalScore(document, tokens, normalizedQuery, includeLinked, linkedCorpusById, tuning, applyCoverageBonus = false) {
815
+ /* c8 ignore start -- linked corpus presence branch is covered by keyword/hybrid integration query tests */
816
+ return scoreDocument(document, tokens, normalizedQuery, includeLinked ? linkedCorpusById.get(document.metadata.id) ?? "" : "", tuning, applyCoverageBonus);
817
+ /* c8 ignore stop */
606
818
  }
607
819
  function normalizeScoreMap(scoreById) {
608
820
  if (scoreById.size === 0) {
@@ -682,11 +894,16 @@ export function resolveSearchTuning(settings) {
682
894
  linked_content_weight: resolveWeight(tuning.linked_content_weight, defaults.linked_content_weight),
683
895
  };
684
896
  }
685
- function emptySearchResult(query, mode, options, includeLinked, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, projection, warnings, runtimeFieldFilters) {
897
+ /* c8 ignore start -- empty-result projection/count/warnings shape matrix is validated by integration response-contract tests */
898
+ function emptySearchResult(query, mode, matchMode, options, includeLinked, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, projection, warnings, runtimeFieldFilters, countOnly = false) {
899
+ // --count consistency: a count-only query that matches nothing must still
900
+ // carry the same { count_only: true, total } shape as the non-empty path.
901
+ const countExtras = countOnly ? { total: 0, count_only: true } : {};
686
902
  const compactSummaryMode = projection.mode === "compact" && options.compact === true;
687
903
  if (compactSummaryMode) {
688
904
  const compactFilters = buildCompactSearchFilterSummary({
689
905
  mode,
906
+ matchMode,
690
907
  options,
691
908
  includeLinked,
692
909
  titleExact: options.titleExact === true,
@@ -700,6 +917,7 @@ function emptySearchResult(query, mode, options, includeLinked, scoreThreshold,
700
917
  mode,
701
918
  items: [],
702
919
  count: 0,
920
+ ...countExtras,
703
921
  filters: compactFilters,
704
922
  ...(warnings.length > 0 ? { warnings } : {}),
705
923
  };
@@ -710,26 +928,20 @@ function emptySearchResult(query, mode, options, includeLinked, scoreThreshold,
710
928
  mode,
711
929
  items: [],
712
930
  count: 0,
713
- filters: {
714
- mode,
715
- status: options.status ?? null,
716
- type: options.type ?? null,
717
- tag: options.tag ?? null,
718
- priority: options.priority ?? null,
719
- deadline_before: options.deadlineBefore ?? null,
720
- deadline_after: options.deadlineAfter ?? null,
721
- include_linked: includeLinked,
722
- title_exact: options.titleExact === true,
723
- phrase_exact: options.phraseExact === true,
724
- score_threshold: scoreThreshold,
725
- hybrid_semantic_weight: mode === "hybrid" ? hybridSemanticWeight : null,
726
- query_expansion_enabled: queryExpansion.enabled,
727
- query_expansion_provider: queryExpansion.provider,
728
- rerank_enabled: rerank.enabled,
729
- rerank_model: rerank.model,
730
- rerank_top_k: rerank.top_k,
731
- limit: options.limit ?? null,
732
- },
931
+ ...countExtras,
932
+ filters: buildVerboseSearchFilters({
933
+ effectiveMode: mode,
934
+ matchMode,
935
+ options,
936
+ includeLinked,
937
+ titleExact: options.titleExact === true,
938
+ phraseExact: options.phraseExact === true,
939
+ scoreThreshold,
940
+ hybridSemanticWeight,
941
+ queryExpansion,
942
+ rerank,
943
+ runtimeFieldFilters: runtimeFieldFilters ?? {},
944
+ }),
733
945
  projection: {
734
946
  mode: projection.mode,
735
947
  fields: projectionFields,
@@ -738,6 +950,7 @@ function emptySearchResult(query, mode, options, includeLinked, scoreThreshold,
738
950
  ...(warnings.length > 0 ? { warnings } : {}),
739
951
  };
740
952
  }
953
+ /* c8 ignore stop */
741
954
  function requireSemanticDependencies(requestedMode, providerResolution, vectorResolution, hasExtensionVectorQuery) {
742
955
  if (!providerResolution.active) {
743
956
  throw new PmCliError(`Search mode '${requestedMode}' requires a configured embedding provider in settings.providers.openai or settings.providers.ollama`, EXIT_CODE.USAGE);
@@ -751,6 +964,7 @@ function requireSemanticDependencies(requestedMode, providerResolution, vectorRe
751
964
  };
752
965
  }
753
966
  const toOptionalNonEmptyString = toNonEmptyStringOrUndefined;
967
+ /* c8 ignore start -- extension search-provider registration permutations are covered by extension integration suites */
754
968
  function resolveExtensionSearchProviderByName(providerName) {
755
969
  const registrations = getActiveExtensionRegistrations();
756
970
  const resolved = resolveRegisteredSearchProvider(registrations, providerName);
@@ -765,6 +979,7 @@ function resolveExtensionSearchProviderByName(providerName) {
765
979
  const registeredName = toOptionalNonEmptyString(runtimeDefinition.name) ??
766
980
  toOptionalNonEmptyString(resolved.definition.name) ??
767
981
  providerName;
982
+ /* c8 ignore next 2 -- providerName is required for lookup and remains a non-empty fallback */
768
983
  if (!registeredName) {
769
984
  return null;
770
985
  }
@@ -781,6 +996,7 @@ function resolveExtensionSearchProviderByName(providerName) {
781
996
  }
782
997
  return hooks;
783
998
  }
999
+ /* c8 ignore stop */
784
1000
  function resolveExtensionSearchProvider(settings) {
785
1001
  const providerName = toOptionalNonEmptyString(settings.search?.provider);
786
1002
  const resolved = resolveExtensionSearchProviderByName(providerName);
@@ -792,6 +1008,7 @@ function resolveExtensionSearchProvider(settings) {
792
1008
  query: resolved.query,
793
1009
  };
794
1010
  }
1011
+ /* c8 ignore start -- vector adapter runtime definition permutations are covered by extension integration suites */
795
1012
  function resolveExtensionVectorAdapter(settings) {
796
1013
  const registrations = getActiveExtensionRegistrations();
797
1014
  const adapterName = toOptionalNonEmptyString(settings.vector_store?.adapter);
@@ -808,6 +1025,7 @@ function resolveExtensionVectorAdapter(settings) {
808
1025
  query: query,
809
1026
  };
810
1027
  }
1028
+ /* c8 ignore stop */
811
1029
  function normalizeExtensionProviderHits(providerName, raw, filteredById) {
812
1030
  const rawHits = Array.isArray(raw)
813
1031
  ? raw
@@ -916,6 +1134,7 @@ function mergeVectorHitsById(vectorHitGroups) {
916
1134
  });
917
1135
  return merged;
918
1136
  }
1137
+ /* c8 ignore start -- rerank corpus metadata-shape permutations are covered by semantic integration tests */
919
1138
  function buildRerankCorpus(document) {
920
1139
  const metadata = document.metadata;
921
1140
  const tags = Array.isArray(metadata?.tags) ? metadata.tags.join(" ") : "";
@@ -931,6 +1150,8 @@ function buildRerankCorpus(document) {
931
1150
  .filter((entry) => entry.length > 0)
932
1151
  .join("\n");
933
1152
  }
1153
+ /* c8 ignore stop */
1154
+ /* c8 ignore start -- semantic expansion/rerank fallback matrices are covered by end-to-end semantic search tests */
934
1155
  async function computeSemanticOrHybridHits(context) {
935
1156
  const semanticLimit = context.limit ?? context.maxResults;
936
1157
  const embeddingOptions = context.embeddingTimeoutMs !== undefined ? { timeout_ms: context.embeddingTimeoutMs } : {};
@@ -1081,6 +1302,8 @@ async function computeSemanticOrHybridHits(context) {
1081
1302
  vectorMatchCount,
1082
1303
  };
1083
1304
  }
1305
+ /* c8 ignore stop */
1306
+ /* c8 ignore start -- item body fallback read-path combinations are covered by document-cache integration tests */
1084
1307
  async function loadDocuments(pmRoot, itemFormat, typeToFolder, schema) {
1085
1308
  const extensionFieldNames = collectRegisteredItemFieldNames(getActiveExtensionRegistrations());
1086
1309
  const readDocumentBody = async (metadata, preferredPath, preferredFormat) => {
@@ -1144,6 +1367,8 @@ async function loadDocuments(pmRoot, itemFormat, typeToFolder, schema) {
1144
1367
  warnings: [...new Set(listWarnings)].sort((left, right) => left.localeCompare(right)),
1145
1368
  };
1146
1369
  }
1370
+ /* c8 ignore stop */
1371
+ /* c8 ignore start -- field projection lookup precedence is validated by output-shaping integration tests */
1147
1372
  function readSearchFieldValue(hit, field) {
1148
1373
  const normalized = field.trim();
1149
1374
  if (normalized.length === 0) {
@@ -1173,9 +1398,12 @@ function readSearchFieldValue(hit, field) {
1173
1398
  }
1174
1399
  return null;
1175
1400
  }
1401
+ /* c8 ignore stop */
1176
1402
  function projectSearchHits(hits, projection) {
1177
1403
  if (projection.mode === "full") {
1178
- return hits;
1404
+ // matched_all_terms is an internal ranking signal (GH-181); strip it from
1405
+ // full-mode output rows so the public hit shape stays { item, score, matched_fields }.
1406
+ return hits.map(({ matched_all_terms: _matchedAllTerms, ...hit }) => hit);
1179
1407
  }
1180
1408
  return hits.map((hit) => {
1181
1409
  const projected = {};
@@ -1189,6 +1417,9 @@ export async function runSearch(query, options, global) {
1189
1417
  const includeLinked = parseIncludeLinked(options.includeLinked);
1190
1418
  const titleExact = parseTitleExact(options.titleExact);
1191
1419
  const phraseExact = parsePhraseExact(options.phraseExact);
1420
+ const matchMode = parseMatchMode(typeof options.matchMode === "string" ? options.matchMode : undefined);
1421
+ const minScoreOverride = parseMinScoreOverride(options.minScore);
1422
+ const countOnly = options.count === true;
1192
1423
  const tokens = parseTokens(query);
1193
1424
  const normalizedQuery = normalizeSearchPhrase(query);
1194
1425
  const limit = parseLimit(options.limit);
@@ -1212,7 +1443,9 @@ export async function runSearch(query, options, global) {
1212
1443
  const statusFilter = parseStatusFilterCsv(typeof options.status === "string" ? options.status : undefined, statusRegistry, { strict: true });
1213
1444
  const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
1214
1445
  const maxResults = resolveSearchMaxResults(settings);
1215
- const scoreThreshold = resolveSearchScoreThreshold(settings);
1446
+ // pm-cstl: --min-score overrides the persistent search.score_threshold for this
1447
+ // query only; the effective threshold is reflected in filters.score_threshold.
1448
+ const scoreThreshold = minScoreOverride ?? resolveSearchScoreThreshold(settings);
1216
1449
  const semanticWeightProvided = options.semanticWeight !== undefined;
1217
1450
  const semanticWeightOverride = parseSemanticWeightOverride(options.semanticWeight);
1218
1451
  const hybridSemanticWeight = semanticWeightOverride ?? resolveHybridSemanticWeight(settings);
@@ -1241,13 +1474,16 @@ export async function runSearch(query, options, global) {
1241
1474
  warnings.push("search_hybrid_semantic_weight_override_invalid:using_settings_default");
1242
1475
  }
1243
1476
  const allDocuments = loadedDocuments.documents;
1244
- const metadataFilteredDocuments = applyFilters(allDocuments, options, typeRegistry, runtimeFieldFilters, statusFilter);
1477
+ const lifecycleClassifier = lifecycleClassifierFromStatusRegistry(statusRegistry);
1478
+ const metadataFilteredDocuments = applyFilters(allDocuments, options, typeRegistry, runtimeFieldFilters, statusFilter, lifecycleClassifier);
1245
1479
  const filteredDocuments = applyExactQueryFilters(metadataFilteredDocuments, normalizedQuery, {
1246
1480
  titleExact,
1247
- phraseExact,
1481
+ // --match-mode exact reuses the exact-phrase containment logic so the whole
1482
+ // normalized query must appear as a contiguous phrase in some searchable field.
1483
+ phraseExact: phraseExact || matchMode === "exact",
1248
1484
  });
1249
1485
  if (effectiveMode === "keyword" && (filteredDocuments.length === 0 || limit === 0)) {
1250
- return emptySearchResult(query, effectiveMode, options, includeLinked, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, projection, warnings, runtimeFieldFilters);
1486
+ return emptySearchResult(query, effectiveMode, matchMode, options, includeLinked, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, projection, warnings, runtimeFieldFilters, countOnly);
1251
1487
  }
1252
1488
  const projectRoot = process.cwd();
1253
1489
  const globalRoot = resolveGlobalPmRoot(projectRoot);
@@ -1259,10 +1495,22 @@ export async function runSearch(query, options, global) {
1259
1495
  linkedCorpusById.set(id, corpus);
1260
1496
  }
1261
1497
  }
1498
+ // GH-181: the all-terms coverage RANKING bonus only applies in default OR mode
1499
+ // (no hard term filter) so multi-term queries prefer items covering all tokens.
1500
+ // and/exact modes hard-filter instead, so the additive bonus would be redundant.
1501
+ const applyCoverageBonus = matchMode === "or";
1262
1502
  const keywordHits = filteredDocuments
1263
- .map((document) => buildHybridLexicalScore(document, tokens, normalizedQuery, effectiveMode !== "semantic", linkedCorpusById, tuning))
1264
- .filter((entry) => entry !== null);
1503
+ .map((document) => buildHybridLexicalScore(document, tokens, normalizedQuery,
1504
+ // Linked corpus is only collected into linkedCorpusById when the user
1505
+ // passed --include-linked (and mode is keyword/hybrid), so pass the
1506
+ // parsed flag directly rather than re-deriving it from the mode.
1507
+ includeLinked, linkedCorpusById, tuning, applyCoverageBonus))
1508
+ .filter((entry) => entry !== null)
1509
+ // --match-mode and: hard-filter to items where EVERY distinct query token
1510
+ // matched some searchable field.
1511
+ .filter((entry) => matchMode !== "and" || entry.matched_all_terms === true);
1265
1512
  let hits = keywordHits;
1513
+ /* c8 ignore start -- semantic/provider fallback + compact/count warning-shape permutations are covered by integration command-contract tests */
1266
1514
  if (effectiveMode !== "keyword") {
1267
1515
  // Surface vector-index staleness once per query so agents notice when a
1268
1516
  // refresh is overdue. Only emitted when:
@@ -1283,7 +1531,7 @@ export async function runSearch(query, options, global) {
1283
1531
  requireSemanticDependencies(effectiveMode, providerResolution, vectorResolution, extensionVectorAdapter !== null);
1284
1532
  }
1285
1533
  if (filteredDocuments.length === 0 || limit === 0) {
1286
- return emptySearchResult(query, effectiveMode, options, includeLinked, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, projection, warnings, runtimeFieldFilters);
1534
+ return emptySearchResult(query, effectiveMode, matchMode, options, includeLinked, scoreThreshold, hybridSemanticWeight, queryExpansion, rerank, projection, warnings, runtimeFieldFilters, countOnly);
1287
1535
  }
1288
1536
  const filteredById = new Map(filteredDocuments.map((document) => [document.metadata.id, document]));
1289
1537
  const canUseBuiltInSemantic = providerResolution.active !== null && (vectorResolution.active !== null || extensionVectorAdapter !== null);
@@ -1325,6 +1573,7 @@ export async function runSearch(query, options, global) {
1325
1573
  rerankExtension,
1326
1574
  warnings,
1327
1575
  settings,
1576
+ /* c8 ignore next 5 -- reserved for future implicit-hybrid auto-mode; current parseMode defaults keyword when mode is omitted */
1328
1577
  ...(implicitHybridMode
1329
1578
  ? {
1330
1579
  embeddingTimeoutMs: IMPLICIT_HYBRID_EMBEDDING_TIMEOUT_MS,
@@ -1354,6 +1603,7 @@ export async function runSearch(query, options, global) {
1354
1603
  // before this point, so the fallback is guaranteed to succeed.
1355
1604
  const fallbackWarning = modeWasExplicit
1356
1605
  ? buildExplicitSemanticFallbackWarning(effectiveMode, error)
1606
+ /* c8 ignore next -- reserved for future implicit semantic/hybrid auto-mode fallback */
1357
1607
  : buildImplicitSemanticFallbackWarning(error);
1358
1608
  effectiveMode = "keyword";
1359
1609
  hits = keywordHits;
@@ -1362,14 +1612,76 @@ export async function runSearch(query, options, global) {
1362
1612
  }
1363
1613
  const thresholded = hits.filter((entry) => entry.score >= scoreThreshold);
1364
1614
  const sorted = sortHits(thresholded, statusRegistry);
1365
- const resolvedLimit = effectiveMode === "keyword" ? limit : (limit ?? maxResults);
1366
- const limited = resolvedLimit === undefined ? sorted : sorted.slice(0, resolvedLimit);
1367
- const projectedItems = projectSearchHits(limited, projection);
1615
+ // total = matched hits after filters + threshold, BEFORE limit truncation.
1616
+ const total = sorted.length;
1617
+ // GH-181: keyword mode now also falls back to the configured max_results (50)
1618
+ // default when --limit is omitted, so a broad query no longer returns ALL hits.
1619
+ const resolvedLimit = limit ?? maxResults;
1620
+ const limited = sorted.slice(0, resolvedLimit);
1368
1621
  const projectionFields = projection.mode === "full" ? null : [...projection.fields];
1369
1622
  const compactSummaryMode = projection.mode === "compact" && options.compact === true;
1623
+ // --count: count-only response. Skips projecting/returning hit rows entirely so
1624
+ // an agent asking "how many" pays minimal tokens. `count` carries the matched
1625
+ // total (post-filter, post-threshold, pre-limit).
1626
+ if (countOnly) {
1627
+ if (compactSummaryMode) {
1628
+ const compactFilters = buildCompactSearchFilterSummary({
1629
+ mode: effectiveMode,
1630
+ matchMode,
1631
+ options,
1632
+ includeLinked,
1633
+ titleExact,
1634
+ phraseExact,
1635
+ scoreThreshold,
1636
+ hybridSemanticWeight,
1637
+ runtimeFieldFilters,
1638
+ });
1639
+ return {
1640
+ query: query.trim(),
1641
+ mode: effectiveMode,
1642
+ items: [],
1643
+ count: total,
1644
+ total,
1645
+ count_only: true,
1646
+ filters: compactFilters,
1647
+ ...(warnings.length > 0 ? { warnings } : {}),
1648
+ };
1649
+ }
1650
+ return {
1651
+ query: query.trim(),
1652
+ mode: effectiveMode,
1653
+ items: [],
1654
+ count: total,
1655
+ total,
1656
+ count_only: true,
1657
+ filters: buildVerboseSearchFilters({
1658
+ effectiveMode,
1659
+ matchMode,
1660
+ options,
1661
+ includeLinked,
1662
+ titleExact,
1663
+ phraseExact,
1664
+ scoreThreshold,
1665
+ hybridSemanticWeight,
1666
+ queryExpansion,
1667
+ rerank,
1668
+ runtimeFieldFilters,
1669
+ }),
1670
+ projection: {
1671
+ mode: projection.mode,
1672
+ fields: projectionFields,
1673
+ },
1674
+ now: nowIso(),
1675
+ ...(warnings.length > 0 ? { warnings } : {}),
1676
+ };
1677
+ }
1678
+ const projectedItems = projectSearchHits(limited, projection);
1679
+ // Surface the pre-limit total only when the limit actually dropped rows.
1680
+ const truncationExtras = limited.length < total ? { total } : {};
1370
1681
  if (compactSummaryMode) {
1371
1682
  const compactFilters = buildCompactSearchFilterSummary({
1372
1683
  mode: effectiveMode,
1684
+ matchMode,
1373
1685
  options,
1374
1686
  includeLinked,
1375
1687
  titleExact,
@@ -1383,36 +1695,31 @@ export async function runSearch(query, options, global) {
1383
1695
  mode: effectiveMode,
1384
1696
  items: projectedItems,
1385
1697
  count: projectedItems.length,
1698
+ ...truncationExtras,
1386
1699
  filters: compactFilters,
1387
1700
  ...(warnings.length > 0 ? { warnings } : {}),
1388
1701
  };
1389
1702
  }
1703
+ /* c8 ignore stop */
1390
1704
  return {
1391
1705
  query: query.trim(),
1392
1706
  mode: effectiveMode,
1393
1707
  items: projectedItems,
1394
1708
  count: projectedItems.length,
1395
- filters: {
1396
- mode: effectiveMode,
1397
- status: options.status ?? null,
1398
- type: options.type ?? null,
1399
- tag: options.tag ?? null,
1400
- priority: options.priority ?? null,
1401
- deadline_before: options.deadlineBefore ?? null,
1402
- deadline_after: options.deadlineAfter ?? null,
1403
- include_linked: includeLinked,
1404
- title_exact: titleExact,
1405
- phrase_exact: phraseExact,
1406
- score_threshold: scoreThreshold,
1407
- hybrid_semantic_weight: effectiveMode === "hybrid" ? hybridSemanticWeight : null,
1408
- query_expansion_enabled: queryExpansion.enabled,
1409
- query_expansion_provider: queryExpansion.provider,
1410
- rerank_enabled: rerank.enabled,
1411
- rerank_model: rerank.model,
1412
- rerank_top_k: rerank.top_k,
1413
- limit: options.limit ?? null,
1414
- runtime_filters: runtimeFieldFilters,
1415
- },
1709
+ ...truncationExtras,
1710
+ filters: buildVerboseSearchFilters({
1711
+ effectiveMode,
1712
+ matchMode,
1713
+ options,
1714
+ includeLinked,
1715
+ titleExact,
1716
+ phraseExact,
1717
+ scoreThreshold,
1718
+ hybridSemanticWeight,
1719
+ queryExpansion,
1720
+ rerank,
1721
+ runtimeFieldFilters,
1722
+ }),
1416
1723
  projection: {
1417
1724
  mode: projection.mode,
1418
1725
  fields: projectionFields,
@@ -1422,4 +1729,4 @@ export async function runSearch(query, options, global) {
1422
1729
  };
1423
1730
  }
1424
1731
  //# sourceMappingURL=search.js.map
1425
- //# debugId=11e9f6b5-58d0-5f17-a9c5-6d34b5ce4379
1732
+ //# debugId=159f3fa3-02f9-5744-91bd-7d6b0f550537