@unbrained/pm-cli 2026.6.10 → 2026.6.11

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 (368) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +16 -0
  3. package/README.md +1 -1
  4. package/dist/cli/bootstrap-args.d.ts +11 -0
  5. package/dist/cli/bootstrap-args.js +88 -4
  6. package/dist/cli/bootstrap-args.js.map +1 -1
  7. package/dist/cli/commands/contracts.d.ts +2 -0
  8. package/dist/cli/commands/contracts.js +9 -2
  9. package/dist/cli/commands/contracts.js.map +1 -1
  10. package/dist/cli/error-guidance.d.ts +8 -0
  11. package/dist/cli/error-guidance.js +102 -2
  12. package/dist/cli/error-guidance.js.map +1 -1
  13. package/dist/cli-bundle/chunks/{activity-W6TS5F2L.js → activity-XADJOG6G.js} +11 -11
  14. package/dist/cli-bundle/chunks/activity-XZIUPGZH.js +16 -0
  15. package/dist/cli-bundle/chunks/{aggregate-UK2WJ4Z3.js → aggregate-6OTS3AOO.js} +10 -10
  16. package/dist/cli-bundle/chunks/{aggregate-NNJLKGEK.js → aggregate-OD36DJU5.js} +10 -10
  17. package/dist/cli-bundle/chunks/{append-DHGTLUZW.js → append-JYWO4P7W.js} +8 -8
  18. package/dist/cli-bundle/chunks/{append-7BS36Z2L.js → append-KG55G7S3.js} +8 -8
  19. package/dist/cli-bundle/chunks/{chunk-XRE4CTNP.js → chunk-3KLPFWZ4.js} +6 -6
  20. package/dist/cli-bundle/chunks/{chunk-WWEFBBVF.js → chunk-3SLOMKCJ.js} +12 -12
  21. package/dist/cli-bundle/chunks/{chunk-WSWOQP3Z.js → chunk-4HFU4UO2.js} +3 -3
  22. package/dist/cli-bundle/chunks/{chunk-UNH3KSHG.js → chunk-4JCSYR6F.js} +3 -3
  23. package/dist/cli-bundle/chunks/{chunk-73PSHEMT.js → chunk-4YFAGDRH.js} +8 -8
  24. package/dist/cli-bundle/chunks/{chunk-7GYMMDDW.js → chunk-5SCT2JCT.js} +2 -2
  25. package/dist/cli-bundle/chunks/{chunk-Q6PSD5DZ.js → chunk-73ZPG2I3.js} +3 -3
  26. package/dist/cli-bundle/chunks/{chunk-CTW7QAHM.js → chunk-7IYFN5R7.js} +3 -3
  27. package/dist/cli-bundle/chunks/{chunk-QGIWURY3.js → chunk-7RIT3OCD.js} +12 -12
  28. package/dist/cli-bundle/chunks/{chunk-OSGWBWLK.js → chunk-7UGSRQCL.js} +5 -5
  29. package/dist/cli-bundle/chunks/{chunk-WNMRICXH.js → chunk-A6LXQFO7.js} +4 -3
  30. package/dist/cli-bundle/chunks/chunk-A6LXQFO7.js.map +1 -0
  31. package/dist/cli-bundle/chunks/{chunk-UDWUDUJI.js → chunk-ATEES5SX.js} +2 -2
  32. package/dist/cli-bundle/chunks/{chunk-2MKBPWMK.js → chunk-AVGHVVF7.js} +3 -3
  33. package/dist/cli-bundle/chunks/{chunk-A6XVYNQJ.js → chunk-B65UUCGQ.js} +5 -5
  34. package/dist/cli-bundle/chunks/{chunk-344GDQTH.js → chunk-CCX4RSYZ.js} +2 -2
  35. package/dist/cli-bundle/chunks/{chunk-6KQS23TX.js → chunk-CW6E4NAT.js} +8 -8
  36. package/dist/cli-bundle/chunks/{chunk-K45NAJV2.js → chunk-DY6C42S6.js} +9 -9
  37. package/dist/cli-bundle/chunks/{chunk-GP6SHEAI.js → chunk-E5DUIJA4.js} +5 -5
  38. package/dist/cli-bundle/chunks/{chunk-ANVZCNL5.js → chunk-ESANVZF4.js} +3 -3
  39. package/dist/cli-bundle/chunks/{chunk-6OSG3EMX.js → chunk-EWFY7SLA.js} +8 -8
  40. package/dist/cli-bundle/chunks/{chunk-DMDEC4QP.js → chunk-F75JSIOZ.js} +6 -6
  41. package/dist/cli-bundle/chunks/{chunk-TALBUVWF.js → chunk-FDH2X65L.js} +2 -2
  42. package/dist/cli-bundle/chunks/{chunk-QJ2OIEOC.js → chunk-FXRU333M.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-OQGJSCZZ.js → chunk-FY4SPXSC.js} +3 -2
  44. package/dist/cli-bundle/chunks/chunk-FY4SPXSC.js.map +7 -0
  45. package/dist/cli-bundle/chunks/{chunk-TZLGCTA5.js → chunk-GKIZW7SM.js} +3 -3
  46. package/dist/cli-bundle/chunks/{chunk-UMWF6ZAS.js → chunk-GWZSYR6X.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-KHBRV5JU.js → chunk-HGLC63AU.js} +8 -8
  48. package/dist/cli-bundle/chunks/{chunk-CMEHZD6G.js → chunk-HHHJ2GI3.js} +8 -8
  49. package/dist/cli-bundle/chunks/{chunk-MF6KSSMF.js → chunk-HI7STVF2.js} +6 -6
  50. package/dist/cli-bundle/chunks/{chunk-IEQ3N7WP.js → chunk-I2IJY2NL.js} +2 -2
  51. package/dist/cli-bundle/chunks/{chunk-O64EYNHF.js → chunk-I53JBTJW.js} +6 -6
  52. package/dist/cli-bundle/chunks/{chunk-K7SXBA75.js → chunk-I7NYDZDV.js} +2 -2
  53. package/dist/cli-bundle/chunks/{chunk-WBU257Z4.js → chunk-IGVJRZ6H.js} +8 -8
  54. package/dist/cli-bundle/chunks/{chunk-KRZQGRVL.js → chunk-IH4MBKK7.js} +5 -5
  55. package/dist/cli-bundle/chunks/{chunk-ZH7C7ZVX.js → chunk-IKOH24GZ.js} +12 -12
  56. package/dist/cli-bundle/chunks/{chunk-7TW64BS5.js → chunk-IUKD4W6Z.js} +2 -2
  57. package/dist/cli-bundle/chunks/{chunk-XH6RA5A5.js → chunk-J3GD64J2.js} +12 -12
  58. package/dist/cli-bundle/chunks/{chunk-OVNSQHDG.js → chunk-KWAXVAXX.js} +4 -4
  59. package/dist/cli-bundle/chunks/{chunk-XSCGU4WT.js → chunk-LCSCXBGT.js} +4 -4
  60. package/dist/cli-bundle/chunks/{chunk-6ADVKPVV.js → chunk-OASDW5UI.js} +7 -7
  61. package/dist/cli-bundle/chunks/{chunk-EIS32UA4.js → chunk-OLKBSY4N.js} +2 -2
  62. package/dist/cli-bundle/chunks/{chunk-GF5XIBUH.js → chunk-P2PSODAQ.js} +2 -2
  63. package/dist/cli-bundle/chunks/{chunk-X3IPJU2O.js → chunk-P5BJOMBB.js} +9 -9
  64. package/dist/cli-bundle/chunks/{chunk-LYL32FT6.js → chunk-P5U5EOMA.js} +3 -3
  65. package/dist/cli-bundle/chunks/{chunk-DTRIVUTN.js → chunk-PSD7F7DX.js} +5 -5
  66. package/dist/cli-bundle/chunks/{chunk-TV6FZGVK.js → chunk-QJMGRZO2.js} +3 -3
  67. package/dist/cli-bundle/chunks/{chunk-KMMUDSSB.js → chunk-QKW5D45B.js} +5 -5
  68. package/dist/cli-bundle/chunks/{chunk-4H2NDEGJ.js → chunk-QNJSITCX.js} +7 -7
  69. package/dist/cli-bundle/chunks/{chunk-VSS3CSTF.js → chunk-RXAP6JL5.js} +9 -9
  70. package/dist/cli-bundle/chunks/{chunk-3VTWCBXL.js → chunk-S26FESD4.js} +3 -3
  71. package/dist/cli-bundle/chunks/{chunk-DEYNERFX.js → chunk-S2ZLDYGS.js} +4 -4
  72. package/dist/cli-bundle/chunks/{chunk-F2PVV7IX.js → chunk-SXKNJPQ7.js} +3 -3
  73. package/dist/cli-bundle/chunks/{chunk-5OMABP7I.js → chunk-TK5VZFHY.js} +7 -7
  74. package/dist/cli-bundle/chunks/{chunk-UY26RIBR.js → chunk-TNAP7EJX.js} +2 -2
  75. package/dist/cli-bundle/chunks/{chunk-EAQLLID6.js → chunk-UOO6BYIA.js} +4 -4
  76. package/dist/cli-bundle/chunks/{chunk-SNASEDXB.js → chunk-UUWGCWBU.js} +3 -3
  77. package/dist/cli-bundle/chunks/{chunk-6N46IM44.js → chunk-VAOUX6TK.js} +2 -2
  78. package/dist/cli-bundle/chunks/{chunk-X5YC5DZM.js → chunk-VFUZV5EB.js} +5 -5
  79. package/dist/cli-bundle/chunks/{chunk-I2FM2SMO.js → chunk-VPEAS7PS.js} +2 -2
  80. package/dist/cli-bundle/chunks/{chunk-7DUVDW7C.js → chunk-VSRZRLG3.js} +3 -3
  81. package/dist/cli-bundle/chunks/{chunk-PYULT32I.js → chunk-WUNFKP7M.js} +2 -2
  82. package/dist/cli-bundle/chunks/{chunk-LUJQJR7G.js → chunk-XJDGS74Y.js} +5 -5
  83. package/dist/cli-bundle/chunks/{chunk-TXWMLDMG.js → chunk-XMBI6TNW.js} +4 -4
  84. package/dist/cli-bundle/chunks/{chunk-4CYHWHZU.js → chunk-XTKJSVWH.js} +2 -2
  85. package/dist/cli-bundle/chunks/{chunk-T6QLB34N.js → chunk-XUC4C4PT.js} +3 -3
  86. package/dist/cli-bundle/chunks/{chunk-OROMGSBP.js → chunk-Y3YKK7CY.js} +2 -2
  87. package/dist/cli-bundle/chunks/{chunk-D6JZBUZ6.js → chunk-YW6Q3RYZ.js} +7 -7
  88. package/dist/cli-bundle/chunks/{chunk-GRHPU6EM.js → chunk-ZLMIWZUG.js} +2 -2
  89. package/dist/cli-bundle/chunks/{chunk-5HH6QRH5.js → chunk-ZMW77VWV.js} +9 -9
  90. package/dist/cli-bundle/chunks/{chunk-BE5G7HEL.js → chunk-ZYNJNPYD.js} +4 -4
  91. package/dist/cli-bundle/chunks/{claim-3TY5LE54.js → claim-2RDYMCTP.js} +10 -10
  92. package/dist/cli-bundle/chunks/{claim-LM4YY6QQ.js → claim-MJ7DZFC3.js} +10 -10
  93. package/dist/cli-bundle/chunks/close-4FMAPEMY.js +13 -0
  94. package/dist/cli-bundle/chunks/{close-CSD4LEMT.js → close-XLEKIQSW.js} +8 -8
  95. package/dist/cli-bundle/chunks/{close-many-B5SHDX6W.js → close-many-AOD4HSAZ.js} +15 -15
  96. package/dist/cli-bundle/chunks/{close-many-WRXB5KVY.js → close-many-XKAQY5CQ.js} +15 -15
  97. package/dist/cli-bundle/chunks/{comments-BDDEK3VW.js → comments-B4RWWDJT.js} +10 -10
  98. package/dist/cli-bundle/chunks/{comments-A5ALOYTG.js → comments-RN5TG4ZN.js} +10 -10
  99. package/dist/cli-bundle/chunks/{config-W2NHDNQT.js → config-3JXJ3XZ7.js} +8 -8
  100. package/dist/cli-bundle/chunks/{config-YUYBMJOW.js → config-FZ4UDC4B.js} +8 -8
  101. package/dist/cli-bundle/chunks/{context-LRJ74NSU.js → context-L36PIN35.js} +13 -13
  102. package/dist/cli-bundle/chunks/{context-R2QLOJCK.js → context-QBPO3BFM.js} +13 -13
  103. package/dist/cli-bundle/chunks/{contracts-HJHR4NCD.js → contracts-3NKWYKKU.js} +309 -6
  104. package/dist/cli-bundle/chunks/contracts-3NKWYKKU.js.map +1 -0
  105. package/dist/cli-bundle/chunks/{contracts-47X7RYUF.js → contracts-MIXBWJIB.js} +315 -5
  106. package/dist/cli-bundle/chunks/contracts-MIXBWJIB.js.map +7 -0
  107. package/dist/cli-bundle/chunks/{copy-P4UVYZ7M.js → copy-ALU5WMHA.js} +7 -7
  108. package/dist/cli-bundle/chunks/{copy-B7HFOWFB.js → copy-FWIVTLBO.js} +7 -7
  109. package/dist/cli-bundle/chunks/{create-5ERJF64D.js → create-IFA26O2I.js} +13 -13
  110. package/dist/cli-bundle/chunks/create-JVXYHYH4.js +27 -0
  111. package/dist/cli-bundle/chunks/{delete-LX3LGBCH.js → delete-IYTIYAJS.js} +7 -7
  112. package/dist/cli-bundle/chunks/{delete-S3WVK6LP.js → delete-Y2SGJBGY.js} +7 -7
  113. package/dist/cli-bundle/chunks/{deps-YSM4LZQD.js → deps-6TSPOSGU.js} +7 -7
  114. package/dist/cli-bundle/chunks/{deps-GWSNH7OZ.js → deps-CZ4PTVXU.js} +7 -7
  115. package/dist/cli-bundle/chunks/{docs-TG6JMVMY.js → docs-5WMBVQT2.js} +9 -9
  116. package/dist/cli-bundle/chunks/{docs-7RYFBHQD.js → docs-MB53UJAJ.js} +9 -9
  117. package/dist/cli-bundle/chunks/{extension-R3LUKMX7.js → extension-Q34OEWO5.js} +5 -5
  118. package/dist/cli-bundle/chunks/{extension-VNMRKIHI.js → extension-WH2FOIOZ.js} +5 -5
  119. package/dist/cli-bundle/chunks/{files-QB3EYPMO.js → files-DLB5LJEP.js} +9 -9
  120. package/dist/cli-bundle/chunks/{files-KAKU57OT.js → files-GVMNVLCB.js} +9 -9
  121. package/dist/cli-bundle/chunks/{gc-KNUPLPSW.js → gc-2WEPW6D6.js} +3 -3
  122. package/dist/cli-bundle/chunks/{gc-B747VM4M.js → gc-4Z3IKHAZ.js} +3 -3
  123. package/dist/cli-bundle/chunks/{get-GMGLIQ5I.js → get-PCHS7RA6.js} +11 -11
  124. package/dist/cli-bundle/chunks/{get-SBL6NHYQ.js → get-QARTE6BL.js} +11 -11
  125. package/dist/cli-bundle/chunks/{health-IG43Z4KL.js → health-4ZYB3IYQ.js} +13 -13
  126. package/dist/cli-bundle/chunks/{health-WWZJ5KJS.js → health-YO5LRWN4.js} +13 -13
  127. package/dist/cli-bundle/chunks/{history-XCWRXBXC.js → history-7WUAEWHW.js} +10 -10
  128. package/dist/cli-bundle/chunks/history-L2FQFRTU.js +20 -0
  129. package/dist/cli-bundle/chunks/{history-compact-KICKUCR7.js → history-compact-3EJ3L2O7.js} +11 -11
  130. package/dist/cli-bundle/chunks/{history-compact-IDH7E7VN.js → history-compact-LW27IPFK.js} +11 -11
  131. package/dist/cli-bundle/chunks/{history-redact-JJWH3QWK.js → history-redact-G72A4EJ4.js} +11 -11
  132. package/dist/cli-bundle/chunks/history-redact-QWQCX5DZ.js +19 -0
  133. package/dist/cli-bundle/chunks/{history-repair-N5HXKJOI.js → history-repair-KVPFJKOS.js} +11 -11
  134. package/dist/cli-bundle/chunks/{history-repair-7HWBZKXN.js → history-repair-RUGKD3YR.js} +11 -11
  135. package/dist/cli-bundle/chunks/init-4BKRHGWW.js +17 -0
  136. package/dist/cli-bundle/chunks/{init-OQA3TWIS.js → init-S5WEGUJY.js} +9 -9
  137. package/dist/cli-bundle/chunks/{learnings-L7VQUSVI.js → learnings-HQXSSKZ5.js} +10 -10
  138. package/dist/cli-bundle/chunks/{learnings-Z4GAIZQ5.js → learnings-XK3P4ZDR.js} +10 -10
  139. package/dist/cli-bundle/chunks/{list-W5ROBC5U.js → list-6CL3XFT6.js} +10 -10
  140. package/dist/cli-bundle/chunks/list-BYNN4ZEO.js +19 -0
  141. package/dist/cli-bundle/chunks/{notes-JJDOEDFK.js → notes-5T6P7C5V.js} +10 -10
  142. package/dist/cli-bundle/chunks/{notes-SDCK7BEN.js → notes-U5FZCSBT.js} +10 -10
  143. package/dist/cli-bundle/chunks/{plan-W2B5RYR3.js → plan-FQLMJRLZ.js} +13 -13
  144. package/dist/cli-bundle/chunks/{plan-H5HYHMBB.js → plan-VNUG3WZZ.js} +13 -13
  145. package/dist/cli-bundle/chunks/{register-list-query-V4S23735.js → register-list-query-NPE3ECJQ.js} +18 -18
  146. package/dist/cli-bundle/chunks/{register-list-query-QGRFMDWA.js → register-list-query-VHDXWEPP.js} +18 -18
  147. package/dist/cli-bundle/chunks/{register-mutation-I57PLUHA.js → register-mutation-DG53FCBV.js} +32 -32
  148. package/dist/cli-bundle/chunks/{register-mutation-ZPZNJXSA.js → register-mutation-EAYNLGOS.js} +32 -32
  149. package/dist/cli-bundle/chunks/{register-operations-KAMLXAF5.js → register-operations-AM6KTWB6.js} +30 -30
  150. package/dist/cli-bundle/chunks/{register-operations-YEN4YEZ2.js → register-operations-FWFE64JG.js} +30 -30
  151. package/dist/cli-bundle/chunks/{register-setup-WLFL3OUF.js → register-setup-G4QYI3RX.js} +15 -15
  152. package/dist/cli-bundle/chunks/{register-setup-BZ3TNE3G.js → register-setup-IKX5524L.js} +15 -15
  153. package/dist/cli-bundle/chunks/restore-CHIOQAQL.js +17 -0
  154. package/dist/cli-bundle/chunks/{restore-RGFSPG4K.js → restore-M6AFHMV4.js} +11 -11
  155. package/dist/cli-bundle/chunks/{schema-CCDU3RLC.js → schema-76HDZJCC.js} +8 -8
  156. package/dist/cli-bundle/chunks/{schema-KZASL323.js → schema-AINZ2IMM.js} +8 -8
  157. package/dist/cli-bundle/chunks/{search-7KSOLI2E.js → search-JMLFQEPJ.js} +10 -10
  158. package/dist/cli-bundle/chunks/{search-DTL7CO22.js → search-NL3TSCYB.js} +10 -10
  159. package/dist/cli-bundle/chunks/{stats-QNV7B2CE.js → stats-BKXCBIGT.js} +7 -7
  160. package/dist/cli-bundle/chunks/{stats-IOXQMGI6.js → stats-UBD56TGK.js} +7 -7
  161. package/dist/cli-bundle/chunks/{telemetry-NHR5RFXT.js → telemetry-N454RHG5.js} +4 -4
  162. package/dist/cli-bundle/chunks/{telemetry-IV5C6JOM.js → telemetry-ZJXK3H7X.js} +4 -4
  163. package/dist/cli-bundle/chunks/{test-PIL2CEEB.js → test-BQAKIXAT.js} +14 -14
  164. package/dist/cli-bundle/chunks/test-O74JFUH5.js +32 -0
  165. package/dist/cli-bundle/chunks/{test-all-MFN4MYCV.js → test-all-7LV3I6S5.js} +14 -14
  166. package/dist/cli-bundle/chunks/{test-all-GRLYHBNP.js → test-all-TDYCCBA4.js} +14 -14
  167. package/dist/cli-bundle/chunks/{test-runs-7WCSC3TY.js → test-runs-E64M6XS3.js} +5 -5
  168. package/dist/cli-bundle/chunks/{test-runs-7LRFWWCA.js → test-runs-LXZLULCI.js} +5 -5
  169. package/dist/cli-bundle/chunks/update-2EVXOC7V.js +21 -0
  170. package/dist/cli-bundle/chunks/update-5A2B6QYB.js +25 -0
  171. package/dist/cli-bundle/chunks/{update-many-LOTAYUTN.js → update-many-TUGU5YXQ.js} +22 -22
  172. package/dist/cli-bundle/chunks/{update-many-UYMTVF42.js → update-many-V4LA3C4H.js} +22 -22
  173. package/dist/cli-bundle/chunks/{upgrade-ZZSC7CLV.js → upgrade-37F7JKES.js} +5 -5
  174. package/dist/cli-bundle/chunks/{upgrade-LT2MLLPS.js → upgrade-L32JA4TZ.js} +5 -5
  175. package/dist/cli-bundle/chunks/{validate-IQIQSKUX.js → validate-EQTT6WVX.js} +16 -16
  176. package/dist/cli-bundle/chunks/{validate-3XRORNMP.js → validate-XN4I4DPL.js} +16 -16
  177. package/dist/cli-bundle/main.js +162 -21
  178. package/dist/cli-bundle/main.js.map +2 -2
  179. package/dist/core/output/query-summary.d.ts +31 -0
  180. package/dist/core/output/query-summary.js +62 -0
  181. package/dist/core/output/query-summary.js.map +1 -0
  182. package/dist/core/shared/constants.js +3 -2
  183. package/dist/core/shared/constants.js.map +1 -1
  184. package/dist/mcp/server.js +35 -260
  185. package/dist/mcp/server.js.map +1 -1
  186. package/dist/mcp/tool-definitions.d.ts +27 -0
  187. package/dist/mcp/tool-definitions.js +330 -0
  188. package/dist/mcp/tool-definitions.js.map +1 -0
  189. package/docs/AGENT_GUIDE.md +1 -1
  190. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  191. package/docs/COMMANDS.md +2 -1
  192. package/marketplace.json +1 -1
  193. package/package.json +1 -1
  194. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  195. package/plugins/pm-claude/README.md +7 -3
  196. package/plugins/pm-claude/commands/pm-init.md +1 -1
  197. package/plugins/pm-codex/README.md +2 -2
  198. package/dist/cli-bundle/chunks/activity-5QLX6DHN.js +0 -16
  199. package/dist/cli-bundle/chunks/chunk-OQGJSCZZ.js.map +0 -7
  200. package/dist/cli-bundle/chunks/chunk-WNMRICXH.js.map +0 -1
  201. package/dist/cli-bundle/chunks/close-SIQCDOBR.js +0 -13
  202. package/dist/cli-bundle/chunks/contracts-47X7RYUF.js.map +0 -7
  203. package/dist/cli-bundle/chunks/contracts-HJHR4NCD.js.map +0 -1
  204. package/dist/cli-bundle/chunks/create-TXNRPS4K.js +0 -27
  205. package/dist/cli-bundle/chunks/history-6UKSZTRT.js +0 -20
  206. package/dist/cli-bundle/chunks/history-redact-HKYBTK6X.js +0 -19
  207. package/dist/cli-bundle/chunks/init-27JLDUO2.js +0 -17
  208. package/dist/cli-bundle/chunks/list-6U3CJVXS.js +0 -19
  209. package/dist/cli-bundle/chunks/restore-GNI2W5CN.js +0 -17
  210. package/dist/cli-bundle/chunks/test-4Z37CXW4.js +0 -32
  211. package/dist/cli-bundle/chunks/update-I4G34LKJ.js +0 -21
  212. package/dist/cli-bundle/chunks/update-VI5DBZ3G.js +0 -25
  213. /package/dist/cli-bundle/chunks/{activity-W6TS5F2L.js.map → activity-XADJOG6G.js.map} +0 -0
  214. /package/dist/cli-bundle/chunks/{activity-5QLX6DHN.js.map → activity-XZIUPGZH.js.map} +0 -0
  215. /package/dist/cli-bundle/chunks/{aggregate-UK2WJ4Z3.js.map → aggregate-6OTS3AOO.js.map} +0 -0
  216. /package/dist/cli-bundle/chunks/{aggregate-NNJLKGEK.js.map → aggregate-OD36DJU5.js.map} +0 -0
  217. /package/dist/cli-bundle/chunks/{append-DHGTLUZW.js.map → append-JYWO4P7W.js.map} +0 -0
  218. /package/dist/cli-bundle/chunks/{append-7BS36Z2L.js.map → append-KG55G7S3.js.map} +0 -0
  219. /package/dist/cli-bundle/chunks/{chunk-XRE4CTNP.js.map → chunk-3KLPFWZ4.js.map} +0 -0
  220. /package/dist/cli-bundle/chunks/{chunk-WWEFBBVF.js.map → chunk-3SLOMKCJ.js.map} +0 -0
  221. /package/dist/cli-bundle/chunks/{chunk-WSWOQP3Z.js.map → chunk-4HFU4UO2.js.map} +0 -0
  222. /package/dist/cli-bundle/chunks/{chunk-UNH3KSHG.js.map → chunk-4JCSYR6F.js.map} +0 -0
  223. /package/dist/cli-bundle/chunks/{chunk-73PSHEMT.js.map → chunk-4YFAGDRH.js.map} +0 -0
  224. /package/dist/cli-bundle/chunks/{chunk-7GYMMDDW.js.map → chunk-5SCT2JCT.js.map} +0 -0
  225. /package/dist/cli-bundle/chunks/{chunk-Q6PSD5DZ.js.map → chunk-73ZPG2I3.js.map} +0 -0
  226. /package/dist/cli-bundle/chunks/{chunk-CTW7QAHM.js.map → chunk-7IYFN5R7.js.map} +0 -0
  227. /package/dist/cli-bundle/chunks/{chunk-QGIWURY3.js.map → chunk-7RIT3OCD.js.map} +0 -0
  228. /package/dist/cli-bundle/chunks/{chunk-OSGWBWLK.js.map → chunk-7UGSRQCL.js.map} +0 -0
  229. /package/dist/cli-bundle/chunks/{chunk-UDWUDUJI.js.map → chunk-ATEES5SX.js.map} +0 -0
  230. /package/dist/cli-bundle/chunks/{chunk-2MKBPWMK.js.map → chunk-AVGHVVF7.js.map} +0 -0
  231. /package/dist/cli-bundle/chunks/{chunk-A6XVYNQJ.js.map → chunk-B65UUCGQ.js.map} +0 -0
  232. /package/dist/cli-bundle/chunks/{chunk-344GDQTH.js.map → chunk-CCX4RSYZ.js.map} +0 -0
  233. /package/dist/cli-bundle/chunks/{chunk-6KQS23TX.js.map → chunk-CW6E4NAT.js.map} +0 -0
  234. /package/dist/cli-bundle/chunks/{chunk-K45NAJV2.js.map → chunk-DY6C42S6.js.map} +0 -0
  235. /package/dist/cli-bundle/chunks/{chunk-GP6SHEAI.js.map → chunk-E5DUIJA4.js.map} +0 -0
  236. /package/dist/cli-bundle/chunks/{chunk-ANVZCNL5.js.map → chunk-ESANVZF4.js.map} +0 -0
  237. /package/dist/cli-bundle/chunks/{chunk-6OSG3EMX.js.map → chunk-EWFY7SLA.js.map} +0 -0
  238. /package/dist/cli-bundle/chunks/{chunk-DMDEC4QP.js.map → chunk-F75JSIOZ.js.map} +0 -0
  239. /package/dist/cli-bundle/chunks/{chunk-TALBUVWF.js.map → chunk-FDH2X65L.js.map} +0 -0
  240. /package/dist/cli-bundle/chunks/{chunk-QJ2OIEOC.js.map → chunk-FXRU333M.js.map} +0 -0
  241. /package/dist/cli-bundle/chunks/{chunk-TZLGCTA5.js.map → chunk-GKIZW7SM.js.map} +0 -0
  242. /package/dist/cli-bundle/chunks/{chunk-UMWF6ZAS.js.map → chunk-GWZSYR6X.js.map} +0 -0
  243. /package/dist/cli-bundle/chunks/{chunk-KHBRV5JU.js.map → chunk-HGLC63AU.js.map} +0 -0
  244. /package/dist/cli-bundle/chunks/{chunk-CMEHZD6G.js.map → chunk-HHHJ2GI3.js.map} +0 -0
  245. /package/dist/cli-bundle/chunks/{chunk-MF6KSSMF.js.map → chunk-HI7STVF2.js.map} +0 -0
  246. /package/dist/cli-bundle/chunks/{chunk-IEQ3N7WP.js.map → chunk-I2IJY2NL.js.map} +0 -0
  247. /package/dist/cli-bundle/chunks/{chunk-O64EYNHF.js.map → chunk-I53JBTJW.js.map} +0 -0
  248. /package/dist/cli-bundle/chunks/{chunk-K7SXBA75.js.map → chunk-I7NYDZDV.js.map} +0 -0
  249. /package/dist/cli-bundle/chunks/{chunk-WBU257Z4.js.map → chunk-IGVJRZ6H.js.map} +0 -0
  250. /package/dist/cli-bundle/chunks/{chunk-KRZQGRVL.js.map → chunk-IH4MBKK7.js.map} +0 -0
  251. /package/dist/cli-bundle/chunks/{chunk-ZH7C7ZVX.js.map → chunk-IKOH24GZ.js.map} +0 -0
  252. /package/dist/cli-bundle/chunks/{chunk-7TW64BS5.js.map → chunk-IUKD4W6Z.js.map} +0 -0
  253. /package/dist/cli-bundle/chunks/{chunk-XH6RA5A5.js.map → chunk-J3GD64J2.js.map} +0 -0
  254. /package/dist/cli-bundle/chunks/{chunk-OVNSQHDG.js.map → chunk-KWAXVAXX.js.map} +0 -0
  255. /package/dist/cli-bundle/chunks/{chunk-XSCGU4WT.js.map → chunk-LCSCXBGT.js.map} +0 -0
  256. /package/dist/cli-bundle/chunks/{chunk-6ADVKPVV.js.map → chunk-OASDW5UI.js.map} +0 -0
  257. /package/dist/cli-bundle/chunks/{chunk-EIS32UA4.js.map → chunk-OLKBSY4N.js.map} +0 -0
  258. /package/dist/cli-bundle/chunks/{chunk-GF5XIBUH.js.map → chunk-P2PSODAQ.js.map} +0 -0
  259. /package/dist/cli-bundle/chunks/{chunk-X3IPJU2O.js.map → chunk-P5BJOMBB.js.map} +0 -0
  260. /package/dist/cli-bundle/chunks/{chunk-LYL32FT6.js.map → chunk-P5U5EOMA.js.map} +0 -0
  261. /package/dist/cli-bundle/chunks/{chunk-DTRIVUTN.js.map → chunk-PSD7F7DX.js.map} +0 -0
  262. /package/dist/cli-bundle/chunks/{chunk-TV6FZGVK.js.map → chunk-QJMGRZO2.js.map} +0 -0
  263. /package/dist/cli-bundle/chunks/{chunk-KMMUDSSB.js.map → chunk-QKW5D45B.js.map} +0 -0
  264. /package/dist/cli-bundle/chunks/{chunk-4H2NDEGJ.js.map → chunk-QNJSITCX.js.map} +0 -0
  265. /package/dist/cli-bundle/chunks/{chunk-VSS3CSTF.js.map → chunk-RXAP6JL5.js.map} +0 -0
  266. /package/dist/cli-bundle/chunks/{chunk-3VTWCBXL.js.map → chunk-S26FESD4.js.map} +0 -0
  267. /package/dist/cli-bundle/chunks/{chunk-DEYNERFX.js.map → chunk-S2ZLDYGS.js.map} +0 -0
  268. /package/dist/cli-bundle/chunks/{chunk-F2PVV7IX.js.map → chunk-SXKNJPQ7.js.map} +0 -0
  269. /package/dist/cli-bundle/chunks/{chunk-5OMABP7I.js.map → chunk-TK5VZFHY.js.map} +0 -0
  270. /package/dist/cli-bundle/chunks/{chunk-UY26RIBR.js.map → chunk-TNAP7EJX.js.map} +0 -0
  271. /package/dist/cli-bundle/chunks/{chunk-EAQLLID6.js.map → chunk-UOO6BYIA.js.map} +0 -0
  272. /package/dist/cli-bundle/chunks/{chunk-SNASEDXB.js.map → chunk-UUWGCWBU.js.map} +0 -0
  273. /package/dist/cli-bundle/chunks/{chunk-6N46IM44.js.map → chunk-VAOUX6TK.js.map} +0 -0
  274. /package/dist/cli-bundle/chunks/{chunk-X5YC5DZM.js.map → chunk-VFUZV5EB.js.map} +0 -0
  275. /package/dist/cli-bundle/chunks/{chunk-I2FM2SMO.js.map → chunk-VPEAS7PS.js.map} +0 -0
  276. /package/dist/cli-bundle/chunks/{chunk-7DUVDW7C.js.map → chunk-VSRZRLG3.js.map} +0 -0
  277. /package/dist/cli-bundle/chunks/{chunk-PYULT32I.js.map → chunk-WUNFKP7M.js.map} +0 -0
  278. /package/dist/cli-bundle/chunks/{chunk-LUJQJR7G.js.map → chunk-XJDGS74Y.js.map} +0 -0
  279. /package/dist/cli-bundle/chunks/{chunk-TXWMLDMG.js.map → chunk-XMBI6TNW.js.map} +0 -0
  280. /package/dist/cli-bundle/chunks/{chunk-4CYHWHZU.js.map → chunk-XTKJSVWH.js.map} +0 -0
  281. /package/dist/cli-bundle/chunks/{chunk-T6QLB34N.js.map → chunk-XUC4C4PT.js.map} +0 -0
  282. /package/dist/cli-bundle/chunks/{chunk-OROMGSBP.js.map → chunk-Y3YKK7CY.js.map} +0 -0
  283. /package/dist/cli-bundle/chunks/{chunk-D6JZBUZ6.js.map → chunk-YW6Q3RYZ.js.map} +0 -0
  284. /package/dist/cli-bundle/chunks/{chunk-GRHPU6EM.js.map → chunk-ZLMIWZUG.js.map} +0 -0
  285. /package/dist/cli-bundle/chunks/{chunk-5HH6QRH5.js.map → chunk-ZMW77VWV.js.map} +0 -0
  286. /package/dist/cli-bundle/chunks/{chunk-BE5G7HEL.js.map → chunk-ZYNJNPYD.js.map} +0 -0
  287. /package/dist/cli-bundle/chunks/{claim-3TY5LE54.js.map → claim-2RDYMCTP.js.map} +0 -0
  288. /package/dist/cli-bundle/chunks/{claim-LM4YY6QQ.js.map → claim-MJ7DZFC3.js.map} +0 -0
  289. /package/dist/cli-bundle/chunks/{close-SIQCDOBR.js.map → close-4FMAPEMY.js.map} +0 -0
  290. /package/dist/cli-bundle/chunks/{close-CSD4LEMT.js.map → close-XLEKIQSW.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{close-many-B5SHDX6W.js.map → close-many-AOD4HSAZ.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{close-many-WRXB5KVY.js.map → close-many-XKAQY5CQ.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{comments-BDDEK3VW.js.map → comments-B4RWWDJT.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{comments-A5ALOYTG.js.map → comments-RN5TG4ZN.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{config-W2NHDNQT.js.map → config-3JXJ3XZ7.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{config-YUYBMJOW.js.map → config-FZ4UDC4B.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{context-LRJ74NSU.js.map → context-L36PIN35.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{context-R2QLOJCK.js.map → context-QBPO3BFM.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{copy-P4UVYZ7M.js.map → copy-ALU5WMHA.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{copy-B7HFOWFB.js.map → copy-FWIVTLBO.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{create-5ERJF64D.js.map → create-IFA26O2I.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{create-TXNRPS4K.js.map → create-JVXYHYH4.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{delete-LX3LGBCH.js.map → delete-IYTIYAJS.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{delete-S3WVK6LP.js.map → delete-Y2SGJBGY.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{deps-YSM4LZQD.js.map → deps-6TSPOSGU.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{deps-GWSNH7OZ.js.map → deps-CZ4PTVXU.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{docs-TG6JMVMY.js.map → docs-5WMBVQT2.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{docs-7RYFBHQD.js.map → docs-MB53UJAJ.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{extension-R3LUKMX7.js.map → extension-Q34OEWO5.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{extension-VNMRKIHI.js.map → extension-WH2FOIOZ.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{files-QB3EYPMO.js.map → files-DLB5LJEP.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{files-KAKU57OT.js.map → files-GVMNVLCB.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{gc-KNUPLPSW.js.map → gc-2WEPW6D6.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{gc-B747VM4M.js.map → gc-4Z3IKHAZ.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{get-GMGLIQ5I.js.map → get-PCHS7RA6.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{get-SBL6NHYQ.js.map → get-QARTE6BL.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{health-IG43Z4KL.js.map → health-4ZYB3IYQ.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{health-WWZJ5KJS.js.map → health-YO5LRWN4.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{history-XCWRXBXC.js.map → history-7WUAEWHW.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{history-6UKSZTRT.js.map → history-L2FQFRTU.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{history-compact-KICKUCR7.js.map → history-compact-3EJ3L2O7.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{history-compact-IDH7E7VN.js.map → history-compact-LW27IPFK.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{history-redact-JJWH3QWK.js.map → history-redact-G72A4EJ4.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{history-redact-HKYBTK6X.js.map → history-redact-QWQCX5DZ.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{history-repair-N5HXKJOI.js.map → history-repair-KVPFJKOS.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{history-repair-7HWBZKXN.js.map → history-repair-RUGKD3YR.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{init-27JLDUO2.js.map → init-4BKRHGWW.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{init-OQA3TWIS.js.map → init-S5WEGUJY.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{learnings-L7VQUSVI.js.map → learnings-HQXSSKZ5.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{learnings-Z4GAIZQ5.js.map → learnings-XK3P4ZDR.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{list-W5ROBC5U.js.map → list-6CL3XFT6.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{list-6U3CJVXS.js.map → list-BYNN4ZEO.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{notes-JJDOEDFK.js.map → notes-5T6P7C5V.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{notes-SDCK7BEN.js.map → notes-U5FZCSBT.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{plan-W2B5RYR3.js.map → plan-FQLMJRLZ.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{plan-H5HYHMBB.js.map → plan-VNUG3WZZ.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{register-list-query-V4S23735.js.map → register-list-query-NPE3ECJQ.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{register-list-query-QGRFMDWA.js.map → register-list-query-VHDXWEPP.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{register-mutation-I57PLUHA.js.map → register-mutation-DG53FCBV.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{register-mutation-ZPZNJXSA.js.map → register-mutation-EAYNLGOS.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{register-operations-KAMLXAF5.js.map → register-operations-AM6KTWB6.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{register-operations-YEN4YEZ2.js.map → register-operations-FWFE64JG.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{register-setup-WLFL3OUF.js.map → register-setup-G4QYI3RX.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{register-setup-BZ3TNE3G.js.map → register-setup-IKX5524L.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{restore-GNI2W5CN.js.map → restore-CHIOQAQL.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{restore-RGFSPG4K.js.map → restore-M6AFHMV4.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{schema-CCDU3RLC.js.map → schema-76HDZJCC.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{schema-KZASL323.js.map → schema-AINZ2IMM.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{search-7KSOLI2E.js.map → search-JMLFQEPJ.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{search-DTL7CO22.js.map → search-NL3TSCYB.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{stats-QNV7B2CE.js.map → stats-BKXCBIGT.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{stats-IOXQMGI6.js.map → stats-UBD56TGK.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{telemetry-NHR5RFXT.js.map → telemetry-N454RHG5.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{telemetry-IV5C6JOM.js.map → telemetry-ZJXK3H7X.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{test-PIL2CEEB.js.map → test-BQAKIXAT.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{test-4Z37CXW4.js.map → test-O74JFUH5.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{test-all-MFN4MYCV.js.map → test-all-7LV3I6S5.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{test-all-GRLYHBNP.js.map → test-all-TDYCCBA4.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{test-runs-7WCSC3TY.js.map → test-runs-E64M6XS3.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{test-runs-7LRFWWCA.js.map → test-runs-LXZLULCI.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{update-I4G34LKJ.js.map → update-2EVXOC7V.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{update-VI5DBZ3G.js.map → update-5A2B6QYB.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{update-many-LOTAYUTN.js.map → update-many-TUGU5YXQ.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{update-many-UYMTVF42.js.map → update-many-V4LA3C4H.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{upgrade-ZZSC7CLV.js.map → upgrade-37F7JKES.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{upgrade-LT2MLLPS.js.map → upgrade-L32JA4TZ.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{validate-IQIQSKUX.js.map → validate-EQTT6WVX.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{validate-3XRORNMP.js.map → validate-XN4I4DPL.js.map} +0 -0
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Applied-query echo for agent-facing list/search results (pm-rmjy).
3
+ *
4
+ * Narrow MCP tools accept filters nested inside `options: {}`, so an agent has
5
+ * no structured confirmation of which filters were actually applied or which
6
+ * projection mode resolved. `withQuerySummary` attaches a small `query_summary`
7
+ * block ({ filters, projection }) to the result so the feedback loop closes
8
+ * without the agent re-echoing its inputs.
9
+ */
10
+ export interface QuerySummary {
11
+ filters: Record<string, unknown>;
12
+ projection: string;
13
+ }
14
+ /**
15
+ * Resolve the projection label implied by list/search projection options.
16
+ * Used when the result payload itself carries no projection metadata (the
17
+ * compact summary paths omit it for token efficiency).
18
+ */
19
+ export declare function resolveQueryProjectionLabel(options: Record<string, unknown>): string;
20
+ /**
21
+ * Attach a `query_summary` to a list/search result.
22
+ *
23
+ * `brief` is the most specific requested label, so it wins outright (the list
24
+ * command reports brief as projection mode "compact" with narrowed fields).
25
+ * Otherwise the result's own `projection.mode` states the resolved mode for
26
+ * verbose payloads, and the options-derived label covers the compact summary
27
+ * paths that omit projection metadata.
28
+ */
29
+ export declare function withQuerySummary<T extends Record<string, unknown>>(result: T, options: Record<string, unknown>): T & {
30
+ query_summary: QuerySummary;
31
+ };
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Applied-query echo for agent-facing list/search results (pm-rmjy).
3
+ *
4
+ * Narrow MCP tools accept filters nested inside `options: {}`, so an agent has
5
+ * no structured confirmation of which filters were actually applied or which
6
+ * projection mode resolved. `withQuerySummary` attaches a small `query_summary`
7
+ * block ({ filters, projection }) to the result so the feedback loop closes
8
+ * without the agent re-echoing its inputs.
9
+ */
10
+
11
+ !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]="1f071316-a968-5ca1-92c7-79931b2156c5")}catch(e){}}();
12
+ function isRecord(value) {
13
+ return value !== null && typeof value === "object" && !Array.isArray(value);
14
+ }
15
+ /**
16
+ * Resolve the projection label implied by list/search projection options.
17
+ * Used when the result payload itself carries no projection metadata (the
18
+ * compact summary paths omit it for token efficiency).
19
+ */
20
+ export function resolveQueryProjectionLabel(options) {
21
+ if (options.brief === true) {
22
+ return "brief";
23
+ }
24
+ if (typeof options.fields === "string" && options.fields.trim().length > 0) {
25
+ return "fields";
26
+ }
27
+ // The MCP boundary coerces fields arrays to CSV, but tolerate array input
28
+ // here too so direct callers get the same projection label.
29
+ if (Array.isArray(options.fields) && options.fields.length > 0) {
30
+ return "fields";
31
+ }
32
+ if (options.compact === true) {
33
+ return "compact";
34
+ }
35
+ return "full";
36
+ }
37
+ /**
38
+ * Attach a `query_summary` to a list/search result.
39
+ *
40
+ * `brief` is the most specific requested label, so it wins outright (the list
41
+ * command reports brief as projection mode "compact" with narrowed fields).
42
+ * Otherwise the result's own `projection.mode` states the resolved mode for
43
+ * verbose payloads, and the options-derived label covers the compact summary
44
+ * paths that omit projection metadata.
45
+ */
46
+ export function withQuerySummary(result, options) {
47
+ const requestedLabel = resolveQueryProjectionLabel(options);
48
+ const projection = requestedLabel === "brief"
49
+ ? requestedLabel
50
+ : isRecord(result.projection) && typeof result.projection.mode === "string"
51
+ ? result.projection.mode
52
+ : requestedLabel;
53
+ return {
54
+ ...result,
55
+ query_summary: {
56
+ filters: isRecord(result.filters) ? result.filters : {},
57
+ projection,
58
+ },
59
+ };
60
+ }
61
+ //# sourceMappingURL=query-summary.js.map
62
+ //# debugId=1f071316-a968-5ca1-92c7-79931b2156c5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-summary.js","sources":["core/output/query-summary.ts"],"sourceRoot":"/","sourcesContent":["/**\n * Applied-query echo for agent-facing list/search results (pm-rmjy).\n *\n * Narrow MCP tools accept filters nested inside `options: {}`, so an agent has\n * no structured confirmation of which filters were actually applied or which\n * projection mode resolved. `withQuerySummary` attaches a small `query_summary`\n * block ({ filters, projection }) to the result so the feedback loop closes\n * without the agent re-echoing its inputs.\n */\n\nexport interface QuerySummary {\n filters: Record<string, unknown>;\n projection: string;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/**\n * Resolve the projection label implied by list/search projection options.\n * Used when the result payload itself carries no projection metadata (the\n * compact summary paths omit it for token efficiency).\n */\nexport function resolveQueryProjectionLabel(options: Record<string, unknown>): string {\n if (options.brief === true) {\n return \"brief\";\n }\n if (typeof options.fields === \"string\" && options.fields.trim().length > 0) {\n return \"fields\";\n }\n // The MCP boundary coerces fields arrays to CSV, but tolerate array input\n // here too so direct callers get the same projection label.\n if (Array.isArray(options.fields) && options.fields.length > 0) {\n return \"fields\";\n }\n if (options.compact === true) {\n return \"compact\";\n }\n return \"full\";\n}\n\n/**\n * Attach a `query_summary` to a list/search result.\n *\n * `brief` is the most specific requested label, so it wins outright (the list\n * command reports brief as projection mode \"compact\" with narrowed fields).\n * Otherwise the result's own `projection.mode` states the resolved mode for\n * verbose payloads, and the options-derived label covers the compact summary\n * paths that omit projection metadata.\n */\nexport function withQuerySummary<T extends Record<string, unknown>>(\n result: T,\n options: Record<string, unknown>,\n): T & { query_summary: QuerySummary } {\n const requestedLabel = resolveQueryProjectionLabel(options);\n const projection = requestedLabel === \"brief\"\n ? requestedLabel\n : isRecord(result.projection) && typeof result.projection.mode === \"string\"\n ? result.projection.mode\n : requestedLabel;\n return {\n ...result,\n query_summary: {\n filters: isRecord(result.filters) ? result.filters : {},\n projection,\n },\n };\n}\n"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;;;AAOH,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAgC;IAC1E,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,0EAA0E;IAC1E,4DAA4D;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/D,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAS,EACT,OAAgC;IAEhC,MAAM,cAAc,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,UAAU,GAAG,cAAc,KAAK,OAAO;QAC3C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;YACzE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI;YACxB,CAAC,CAAC,cAAc,CAAC;IACrB,OAAO;QACL,GAAG,MAAM;QACT,aAAa,EAAE;YACb,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvD,UAAU;SACX;KACF,CAAC;AACJ,CAAC","debugId":"1f071316-a968-5ca1-92c7-79931b2156c5"}
@@ -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]="e3d8f708-ea81-58a5-920a-ee9f27c436ab")}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]="aaaabb17-ee0f-5c5d-8111-3406542035c3")}catch(e){}}();
3
3
  import { createDefaultExtensionGovernancePolicy } from "../extensions/extension-types.js";
4
4
  /**
5
5
  * Canonical default lifecycle status model and workflow role mapping.
@@ -351,6 +351,7 @@ export const TELEMETRY_ERROR_CATEGORY_BY_CODE = Object.freeze({
351
351
  missing_required_option: "usage",
352
352
  missing_required_argument: "usage",
353
353
  invalid_command_usage: "usage",
354
+ linked_test_value_not_quoted: "usage",
354
355
  invalid_argument_value: "validation",
355
356
  health_findings: "validation",
356
357
  validation_findings: "validation",
@@ -390,4 +391,4 @@ export function resolveTelemetryErrorCategory(errorCode) {
390
391
  return "unknown";
391
392
  }
392
393
  //# sourceMappingURL=constants.js.map
393
- //# debugId=e3d8f708-ea81-58a5-920a-ee9f27c436ab
394
+ //# debugId=aaaabb17-ee0f-5c5d-8111-3406542035c3
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["core/shared/constants.ts"],"sourceRoot":"/","sourcesContent":["import type {\n BuiltinItemType,\n GovernancePreset,\n GovernanceSettings,\n ItemFrontMatter,\n PmSettings,\n RuntimeStatusDefinition,\n RuntimeWorkflowDefinition,\n} from \"../../types/index.js\";\nimport { createDefaultExtensionGovernancePolicy } from \"../extensions/extension-types.js\";\n\n/**\n * Canonical default lifecycle status model and workflow role mapping.\n *\n * Single source of truth: `SETTINGS_DEFAULTS.schema` references these, and\n * `src/core/schema/runtime-schema.ts` re-exports them as\n * `DEFAULT_RUNTIME_STATUS_DEFINITIONS` / `DEFAULT_RUNTIME_WORKFLOW`.\n */\nexport const DEFAULT_STATUS_DEFINITIONS: ReadonlyArray<RuntimeStatusDefinition> = Object.freeze([\n {\n id: \"draft\",\n roles: [\"draft\"],\n },\n {\n id: \"open\",\n roles: [\"active\", \"default_open\"],\n },\n {\n id: \"in_progress\",\n aliases: [\"in-progress\"],\n roles: [\"active\"],\n },\n {\n id: \"blocked\",\n roles: [\"blocked\"],\n },\n {\n id: \"closed\",\n roles: [\"terminal\", \"terminal_done\", \"default_close\"],\n },\n {\n id: \"canceled\",\n aliases: [\"cancelled\"],\n roles: [\"terminal\", \"terminal_canceled\", \"default_cancel\"],\n },\n]);\n\nexport const DEFAULT_WORKFLOW_DEFINITION: RuntimeWorkflowDefinition = Object.freeze({\n draft_status: \"draft\",\n open_status: \"open\",\n in_progress_status: \"in_progress\",\n blocked_status: \"blocked\",\n close_status: \"closed\",\n canceled_status: \"canceled\",\n});\n\nexport const PM_DIRNAME = \".agents/pm\";\nexport const SETTINGS_FILENAME = \"settings.json\";\n\nexport const PM_CORE_REQUIRED_SUBDIRS = [\n \"\",\n \"epics\",\n \"features\",\n \"tasks\",\n \"chores\",\n \"issues\",\n \"schema\",\n \"history\",\n \"search\",\n \"extensions\",\n \"locks\",\n] as const;\n\nexport const PM_OPTIONAL_TYPE_SUBDIRS = [\n \"decisions\",\n \"events\",\n \"reminders\",\n \"milestones\",\n \"meetings\",\n \"plans\",\n] as const;\n\nexport const PM_REQUIRED_SUBDIRS = [...PM_CORE_REQUIRED_SUBDIRS, ...PM_OPTIONAL_TYPE_SUBDIRS] as const;\n\nexport const TYPE_TO_FOLDER: Record<BuiltinItemType, string> = {\n Epic: \"epics\",\n Feature: \"features\",\n Task: \"tasks\",\n Chore: \"chores\",\n Issue: \"issues\",\n Decision: \"decisions\",\n Event: \"events\",\n Reminder: \"reminders\",\n Milestone: \"milestones\",\n Meeting: \"meetings\",\n Plan: \"plans\",\n};\n\nexport const FRONT_MATTER_KEY_ORDER: ReadonlyArray<string> = [\n \"id\",\n \"title\",\n \"description\",\n \"type\",\n \"source_type\",\n \"type_options\",\n \"status\",\n \"priority\",\n \"tags\",\n \"created_at\",\n \"updated_at\",\n \"deadline\",\n \"reminders\",\n \"events\",\n \"closed_at\",\n \"assignee\",\n \"source_owner\",\n \"author\",\n \"estimated_minutes\",\n \"acceptance_criteria\",\n \"design\",\n \"external_ref\",\n \"definition_of_ready\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"why_now\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blocked_by\",\n \"blocked_reason\",\n \"unblock_note\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"repro_steps\",\n \"resolution\",\n \"expected_result\",\n \"actual_result\",\n \"affected_version\",\n \"fixed_version\",\n \"component\",\n \"regression\",\n \"customer_impact\",\n \"dependencies\",\n \"comments\",\n \"notes\",\n \"learnings\",\n \"files\",\n \"tests\",\n \"test_runs\",\n \"docs\",\n \"close_reason\",\n \"duplicate_of\",\n \"plan_mode\",\n \"plan_scope\",\n \"plan_harness\",\n \"plan_resume_context\",\n \"plan_validation\",\n \"plan_decisions\",\n \"plan_discoveries\",\n \"plan_steps\",\n];\n\ntype BuiltinGovernancePreset = Exclude<GovernancePreset, \"custom\">;\n\nexport const GOVERNANCE_PRESET_DEFAULTS: Record<BuiltinGovernancePreset, Omit<GovernanceSettings, \"preset\">> = {\n minimal: {\n ownership_enforcement: \"none\",\n create_mode_default: \"progressive\",\n close_validation_default: \"off\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: false,\n },\n default: {\n ownership_enforcement: \"warn\",\n create_mode_default: \"progressive\",\n close_validation_default: \"warn\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: true,\n },\n strict: {\n ownership_enforcement: \"strict\",\n create_mode_default: \"strict\",\n close_validation_default: \"strict\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"strict\",\n force_required_for_stale_lock: true,\n },\n};\n\nexport const DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS = [\n \"no active blocker\",\n \"ready for planned execution sequencing\",\n \"work completed\",\n \"work is closed\",\n] as const;\n\nexport const DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS = {\n blocked_reason: [\"no active blocker because work is closed\", \"work is closed\"],\n resolution: [\"closed with implementation evidence\", \"closed with verification evidence\", \"work completed and recorded\", \"work is closed\"],\n actual_result: [\"closed and recorded\", \"work completed\", \"work completed and recorded\"],\n} as const;\n\nfunction cloneOptionalArray<T>(values: readonly T[] | undefined): T[] | undefined {\n return values ? [...values] : undefined;\n}\n\nexport const SETTINGS_DEFAULTS: PmSettings = {\n version: 1,\n id_prefix: \"pm-\",\n author_default: \"\",\n item_format: \"toon\",\n locks: {\n ttl_seconds: 1800,\n },\n output: {\n default_format: \"toon\",\n },\n history: {\n missing_stream: \"auto_create\",\n },\n validation: {\n sprint_release_format: \"warn\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n metadata_required_fields: [],\n lifecycle_stale_blocker_reason_patterns: [...DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS],\n lifecycle_closure_like_blocked_reason_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.blocked_reason,\n ],\n lifecycle_closure_like_resolution_patterns: [...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.resolution],\n lifecycle_closure_like_actual_result_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.actual_result,\n ],\n },\n governance: {\n preset: \"minimal\",\n ...GOVERNANCE_PRESET_DEFAULTS.minimal,\n },\n workflow: {\n definition_of_done: [],\n },\n testing: {\n record_results_to_items: false,\n },\n telemetry: {\n enabled: true,\n first_run_prompt_completed: false,\n capture_level: \"redacted\",\n endpoint: \"https://pm-cli.unbrained.dev/v1/events\",\n installation_id: \"\",\n retention_days: 365,\n },\n agent_guidance: {\n prompt_completed: false,\n declined: false,\n declined_at: \"\",\n template_version: 1,\n last_checked_files: [],\n },\n item_types: {\n definitions: [],\n },\n schema: {\n version: 1,\n files: {\n types: \"schema/types.json\",\n statuses: \"schema/statuses.json\",\n fields: \"schema/fields.json\",\n workflows: \"schema/workflows.json\",\n },\n statuses: DEFAULT_STATUS_DEFINITIONS.map((definition) => ({\n ...definition,\n aliases: cloneOptionalArray(definition.aliases),\n roles: cloneOptionalArray(definition.roles),\n })),\n fields: [],\n workflow: { ...DEFAULT_WORKFLOW_DEFINITION },\n unknown_field_policy: \"allow\",\n },\n extensions: {\n enabled: [],\n disabled: [],\n policy: createDefaultExtensionGovernancePolicy(),\n },\n search: {\n score_threshold: 0,\n hybrid_semantic_weight: 0.7,\n max_results: 50,\n embedding_model: \"\",\n embedding_batch_size: 32,\n embedding_timeout_ms: 30_000,\n scanner_max_batch_retries: 3,\n provider: \"\",\n mutation_refresh_policy: \"semantic_configured\",\n query_expansion: {\n enabled: false,\n provider: \"\",\n },\n rerank: {\n enabled: false,\n model: \"\",\n top_k: 20,\n },\n },\n providers: {\n openai: {\n base_url: \"\",\n api_key: \"\",\n model: \"\",\n },\n ollama: {\n base_url: \"\",\n model: \"\",\n },\n },\n context: {\n default_depth: \"brief\",\n activity_limit: 10,\n stale_threshold_days: 7,\n sections: {\n hierarchy: true,\n activity: true,\n progress: true,\n recently_created: true,\n unparented: true,\n blockers: true,\n files: true,\n workload: true,\n staleness: true,\n tests: true,\n },\n },\n vector_store: {\n adapter: \"\",\n collection_name: \"pm_items\",\n qdrant: {\n url: \"\",\n api_key: \"\",\n },\n lancedb: {\n path: \"\",\n },\n },\n};\n\nexport const EMPTY_CANONICAL_DOCUMENT = {\n metadata: {},\n body: \"\",\n};\n\nexport const EXIT_CODE = {\n SUCCESS: 0,\n GENERIC_FAILURE: 1,\n USAGE: 2,\n NOT_FOUND: 3,\n CONFLICT: 4,\n DEPENDENCY_FAILED: 5,\n} as const;\n\nexport type TelemetryErrorCategory = \"usage\" | \"validation\" | \"conflict\" | \"runtime\" | \"unknown\";\n\nexport const TELEMETRY_ERROR_CATEGORY_BY_CODE: Readonly<Record<string, TelemetryErrorCategory>> = Object.freeze({\n unknown_command: \"usage\",\n unknown_option: \"usage\",\n missing_required_option: \"usage\",\n missing_required_argument: \"usage\",\n invalid_command_usage: \"usage\",\n invalid_argument_value: \"validation\",\n health_findings: \"validation\",\n validation_findings: \"validation\",\n close_through_update: \"validation\",\n no_update_fields: \"validation\",\n unsupported_update_option: \"validation\",\n tracker_not_initialized: \"validation\",\n item_not_found: \"validation\",\n ownership_conflict: \"conflict\",\n lock_conflict: \"conflict\",\n terminal_state_conflict: \"conflict\",\n dependency_failed: \"runtime\",\n command_failed: \"runtime\",\n unknown_error: \"runtime\",\n});\n\nexport function resolveTelemetryErrorCategory(errorCode: string | undefined): TelemetryErrorCategory {\n const normalized = (errorCode ?? \"\").trim().toLowerCase();\n if (normalized.length === 0) {\n return \"unknown\";\n }\n const explicit = TELEMETRY_ERROR_CATEGORY_BY_CODE[normalized];\n if (typeof explicit === \"string\") {\n return explicit;\n }\n if (normalized.includes(\"conflict\") || normalized.includes(\"locked\")) {\n return \"conflict\";\n }\n if (normalized.startsWith(\"unknown_\") || normalized.startsWith(\"missing_required_\")) {\n return \"usage\";\n }\n if (normalized.startsWith(\"invalid_\") || normalized.endsWith(\"_not_found\") || normalized.includes(\"validation\")) {\n return \"validation\";\n }\n if (normalized.endsWith(\"_error\") || normalized.endsWith(\"_failed\")) {\n return \"runtime\";\n }\n return \"unknown\";\n}\n"],"names":[],"mappings":"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","debugId":"e3d8f708-ea81-58a5-920a-ee9f27c436ab"}
1
+ {"version":3,"file":"constants.js","sources":["core/shared/constants.ts"],"sourceRoot":"/","sourcesContent":["import type {\n BuiltinItemType,\n GovernancePreset,\n GovernanceSettings,\n ItemFrontMatter,\n PmSettings,\n RuntimeStatusDefinition,\n RuntimeWorkflowDefinition,\n} from \"../../types/index.js\";\nimport { createDefaultExtensionGovernancePolicy } from \"../extensions/extension-types.js\";\n\n/**\n * Canonical default lifecycle status model and workflow role mapping.\n *\n * Single source of truth: `SETTINGS_DEFAULTS.schema` references these, and\n * `src/core/schema/runtime-schema.ts` re-exports them as\n * `DEFAULT_RUNTIME_STATUS_DEFINITIONS` / `DEFAULT_RUNTIME_WORKFLOW`.\n */\nexport const DEFAULT_STATUS_DEFINITIONS: ReadonlyArray<RuntimeStatusDefinition> = Object.freeze([\n {\n id: \"draft\",\n roles: [\"draft\"],\n },\n {\n id: \"open\",\n roles: [\"active\", \"default_open\"],\n },\n {\n id: \"in_progress\",\n aliases: [\"in-progress\"],\n roles: [\"active\"],\n },\n {\n id: \"blocked\",\n roles: [\"blocked\"],\n },\n {\n id: \"closed\",\n roles: [\"terminal\", \"terminal_done\", \"default_close\"],\n },\n {\n id: \"canceled\",\n aliases: [\"cancelled\"],\n roles: [\"terminal\", \"terminal_canceled\", \"default_cancel\"],\n },\n]);\n\nexport const DEFAULT_WORKFLOW_DEFINITION: RuntimeWorkflowDefinition = Object.freeze({\n draft_status: \"draft\",\n open_status: \"open\",\n in_progress_status: \"in_progress\",\n blocked_status: \"blocked\",\n close_status: \"closed\",\n canceled_status: \"canceled\",\n});\n\nexport const PM_DIRNAME = \".agents/pm\";\nexport const SETTINGS_FILENAME = \"settings.json\";\n\nexport const PM_CORE_REQUIRED_SUBDIRS = [\n \"\",\n \"epics\",\n \"features\",\n \"tasks\",\n \"chores\",\n \"issues\",\n \"schema\",\n \"history\",\n \"search\",\n \"extensions\",\n \"locks\",\n] as const;\n\nexport const PM_OPTIONAL_TYPE_SUBDIRS = [\n \"decisions\",\n \"events\",\n \"reminders\",\n \"milestones\",\n \"meetings\",\n \"plans\",\n] as const;\n\nexport const PM_REQUIRED_SUBDIRS = [...PM_CORE_REQUIRED_SUBDIRS, ...PM_OPTIONAL_TYPE_SUBDIRS] as const;\n\nexport const TYPE_TO_FOLDER: Record<BuiltinItemType, string> = {\n Epic: \"epics\",\n Feature: \"features\",\n Task: \"tasks\",\n Chore: \"chores\",\n Issue: \"issues\",\n Decision: \"decisions\",\n Event: \"events\",\n Reminder: \"reminders\",\n Milestone: \"milestones\",\n Meeting: \"meetings\",\n Plan: \"plans\",\n};\n\nexport const FRONT_MATTER_KEY_ORDER: ReadonlyArray<string> = [\n \"id\",\n \"title\",\n \"description\",\n \"type\",\n \"source_type\",\n \"type_options\",\n \"status\",\n \"priority\",\n \"tags\",\n \"created_at\",\n \"updated_at\",\n \"deadline\",\n \"reminders\",\n \"events\",\n \"closed_at\",\n \"assignee\",\n \"source_owner\",\n \"author\",\n \"estimated_minutes\",\n \"acceptance_criteria\",\n \"design\",\n \"external_ref\",\n \"definition_of_ready\",\n \"order\",\n \"goal\",\n \"objective\",\n \"value\",\n \"impact\",\n \"outcome\",\n \"why_now\",\n \"parent\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n \"blocked_by\",\n \"blocked_reason\",\n \"unblock_note\",\n \"reporter\",\n \"severity\",\n \"environment\",\n \"repro_steps\",\n \"resolution\",\n \"expected_result\",\n \"actual_result\",\n \"affected_version\",\n \"fixed_version\",\n \"component\",\n \"regression\",\n \"customer_impact\",\n \"dependencies\",\n \"comments\",\n \"notes\",\n \"learnings\",\n \"files\",\n \"tests\",\n \"test_runs\",\n \"docs\",\n \"close_reason\",\n \"duplicate_of\",\n \"plan_mode\",\n \"plan_scope\",\n \"plan_harness\",\n \"plan_resume_context\",\n \"plan_validation\",\n \"plan_decisions\",\n \"plan_discoveries\",\n \"plan_steps\",\n];\n\ntype BuiltinGovernancePreset = Exclude<GovernancePreset, \"custom\">;\n\nexport const GOVERNANCE_PRESET_DEFAULTS: Record<BuiltinGovernancePreset, Omit<GovernanceSettings, \"preset\">> = {\n minimal: {\n ownership_enforcement: \"none\",\n create_mode_default: \"progressive\",\n close_validation_default: \"off\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: false,\n },\n default: {\n ownership_enforcement: \"warn\",\n create_mode_default: \"progressive\",\n close_validation_default: \"warn\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"core\",\n force_required_for_stale_lock: true,\n },\n strict: {\n ownership_enforcement: \"strict\",\n create_mode_default: \"strict\",\n close_validation_default: \"strict\",\n require_close_reason: true,\n parent_reference: \"strict_error\",\n metadata_profile: \"strict\",\n force_required_for_stale_lock: true,\n },\n};\n\nexport const DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS = [\n \"no active blocker\",\n \"ready for planned execution sequencing\",\n \"work completed\",\n \"work is closed\",\n] as const;\n\nexport const DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS = {\n blocked_reason: [\"no active blocker because work is closed\", \"work is closed\"],\n resolution: [\"closed with implementation evidence\", \"closed with verification evidence\", \"work completed and recorded\", \"work is closed\"],\n actual_result: [\"closed and recorded\", \"work completed\", \"work completed and recorded\"],\n} as const;\n\nfunction cloneOptionalArray<T>(values: readonly T[] | undefined): T[] | undefined {\n return values ? [...values] : undefined;\n}\n\nexport const SETTINGS_DEFAULTS: PmSettings = {\n version: 1,\n id_prefix: \"pm-\",\n author_default: \"\",\n item_format: \"toon\",\n locks: {\n ttl_seconds: 1800,\n },\n output: {\n default_format: \"toon\",\n },\n history: {\n missing_stream: \"auto_create\",\n },\n validation: {\n sprint_release_format: \"warn\",\n parent_reference: \"warn\",\n metadata_profile: \"core\",\n metadata_required_fields: [],\n lifecycle_stale_blocker_reason_patterns: [...DEFAULT_VALIDATE_STALE_BLOCKER_REASON_PATTERNS],\n lifecycle_closure_like_blocked_reason_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.blocked_reason,\n ],\n lifecycle_closure_like_resolution_patterns: [...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.resolution],\n lifecycle_closure_like_actual_result_patterns: [\n ...DEFAULT_VALIDATE_CLOSURE_LIKE_METADATA_FIELD_PATTERNS.actual_result,\n ],\n },\n governance: {\n preset: \"minimal\",\n ...GOVERNANCE_PRESET_DEFAULTS.minimal,\n },\n workflow: {\n definition_of_done: [],\n },\n testing: {\n record_results_to_items: false,\n },\n telemetry: {\n enabled: true,\n first_run_prompt_completed: false,\n capture_level: \"redacted\",\n endpoint: \"https://pm-cli.unbrained.dev/v1/events\",\n installation_id: \"\",\n retention_days: 365,\n },\n agent_guidance: {\n prompt_completed: false,\n declined: false,\n declined_at: \"\",\n template_version: 1,\n last_checked_files: [],\n },\n item_types: {\n definitions: [],\n },\n schema: {\n version: 1,\n files: {\n types: \"schema/types.json\",\n statuses: \"schema/statuses.json\",\n fields: \"schema/fields.json\",\n workflows: \"schema/workflows.json\",\n },\n statuses: DEFAULT_STATUS_DEFINITIONS.map((definition) => ({\n ...definition,\n aliases: cloneOptionalArray(definition.aliases),\n roles: cloneOptionalArray(definition.roles),\n })),\n fields: [],\n workflow: { ...DEFAULT_WORKFLOW_DEFINITION },\n unknown_field_policy: \"allow\",\n },\n extensions: {\n enabled: [],\n disabled: [],\n policy: createDefaultExtensionGovernancePolicy(),\n },\n search: {\n score_threshold: 0,\n hybrid_semantic_weight: 0.7,\n max_results: 50,\n embedding_model: \"\",\n embedding_batch_size: 32,\n embedding_timeout_ms: 30_000,\n scanner_max_batch_retries: 3,\n provider: \"\",\n mutation_refresh_policy: \"semantic_configured\",\n query_expansion: {\n enabled: false,\n provider: \"\",\n },\n rerank: {\n enabled: false,\n model: \"\",\n top_k: 20,\n },\n },\n providers: {\n openai: {\n base_url: \"\",\n api_key: \"\",\n model: \"\",\n },\n ollama: {\n base_url: \"\",\n model: \"\",\n },\n },\n context: {\n default_depth: \"brief\",\n activity_limit: 10,\n stale_threshold_days: 7,\n sections: {\n hierarchy: true,\n activity: true,\n progress: true,\n recently_created: true,\n unparented: true,\n blockers: true,\n files: true,\n workload: true,\n staleness: true,\n tests: true,\n },\n },\n vector_store: {\n adapter: \"\",\n collection_name: \"pm_items\",\n qdrant: {\n url: \"\",\n api_key: \"\",\n },\n lancedb: {\n path: \"\",\n },\n },\n};\n\nexport const EMPTY_CANONICAL_DOCUMENT = {\n metadata: {},\n body: \"\",\n};\n\nexport const EXIT_CODE = {\n SUCCESS: 0,\n GENERIC_FAILURE: 1,\n USAGE: 2,\n NOT_FOUND: 3,\n CONFLICT: 4,\n DEPENDENCY_FAILED: 5,\n} as const;\n\nexport type TelemetryErrorCategory = \"usage\" | \"validation\" | \"conflict\" | \"runtime\" | \"unknown\";\n\nexport const TELEMETRY_ERROR_CATEGORY_BY_CODE: Readonly<Record<string, TelemetryErrorCategory>> = Object.freeze({\n unknown_command: \"usage\",\n unknown_option: \"usage\",\n missing_required_option: \"usage\",\n missing_required_argument: \"usage\",\n invalid_command_usage: \"usage\",\n linked_test_value_not_quoted: \"usage\",\n invalid_argument_value: \"validation\",\n health_findings: \"validation\",\n validation_findings: \"validation\",\n close_through_update: \"validation\",\n no_update_fields: \"validation\",\n unsupported_update_option: \"validation\",\n tracker_not_initialized: \"validation\",\n item_not_found: \"validation\",\n ownership_conflict: \"conflict\",\n lock_conflict: \"conflict\",\n terminal_state_conflict: \"conflict\",\n dependency_failed: \"runtime\",\n command_failed: \"runtime\",\n unknown_error: \"runtime\",\n});\n\nexport function resolveTelemetryErrorCategory(errorCode: string | undefined): TelemetryErrorCategory {\n const normalized = (errorCode ?? \"\").trim().toLowerCase();\n if (normalized.length === 0) {\n return \"unknown\";\n }\n const explicit = TELEMETRY_ERROR_CATEGORY_BY_CODE[normalized];\n if (typeof explicit === \"string\") {\n return explicit;\n }\n if (normalized.includes(\"conflict\") || normalized.includes(\"locked\")) {\n return \"conflict\";\n }\n if (normalized.startsWith(\"unknown_\") || normalized.startsWith(\"missing_required_\")) {\n return \"usage\";\n }\n if (normalized.startsWith(\"invalid_\") || normalized.endsWith(\"_not_found\") || normalized.includes(\"validation\")) {\n return \"validation\";\n }\n if (normalized.endsWith(\"_error\") || normalized.endsWith(\"_failed\")) {\n return \"runtime\";\n }\n return \"unknown\";\n}\n"],"names":[],"mappings":"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","debugId":"aaaabb17-ee0f-5c5d-8111-3406542035c3"}
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- !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]="c65aa3d0-c69f-561b-8e23-939348167e21")}catch(e){}}();
3
+ !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]="5d14434e-fc25-502b-9aa8-8efd7ab7fd6a")}catch(e){}}();
4
4
  import readline from "node:readline";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { createEmptyExtensionCommandRegistry, createEmptyExtensionHookRegistry, createEmptyExtensionParserRegistry, createEmptyExtensionPreflightRegistry, createEmptyExtensionRegistrationRegistry, createEmptyExtensionRendererRegistry, createEmptyExtensionServiceRegistry, } from "../core/extensions/extension-registries.js";
@@ -8,6 +8,7 @@ import { activateExtensions, deactivateExtensions, loadExtensions, runActiveComm
8
8
  import { pathExists } from "../core/fs/fs-utils.js";
9
9
  import { resolvePmCliVersion } from "../core/packages/root.js";
10
10
  import { projectMutationResult } from "../core/output/mutation-projection.js";
11
+ import { withQuerySummary } from "../core/output/query-summary.js";
11
12
  import { PmCliError } from "../core/shared/errors.js";
12
13
  import { decodeHtmlEntitiesInOptions } from "../core/shared/html-entity-decode.js";
13
14
  import { levenshteinDistanceWithinLimit } from "../core/shared/levenshtein.js";
@@ -17,8 +18,8 @@ import { getSettingsPath, resolvePmRoot } from "../core/store/paths.js";
17
18
  import { readSettings } from "../core/store/settings.js";
18
19
  import { normalizeListOptions, normalizeUpdateOptions } from "../cli/registration-helpers.js";
19
20
  import { UPDATE_COMMANDER_STRING_OPTION_CONTRACTS } from "../sdk/cli-contracts/commander-mutation-options.js";
20
- import { PM_TOOL_ACTIONS } from "../sdk/cli-contracts/enum-contracts.js";
21
21
  import { clearWorkspaceContractsCache } from "../sdk/runtime.js";
22
+ import { TOOLS } from "./tool-definitions.js";
22
23
  import { runActivity, runAggregate, runAppend, runClaim, runClose, runCloseMany, runComments, runContracts, runContext, runCreate, runCopy, runConfig, runDelete, runDeps, runDocs, runExtension, runFiles, runFilesDiscover, runGc, runGet, runHealth, runHistory, runHistoryCompact, runHistoryRedact, runHistoryRepair, runInit, runLearnings, runList, runNotes, runPlan, runRelease, runSchemaAddStatus, runSchemaAddType, runSchemaList, runSchemaRemoveStatus, runSchemaRemoveType, runSchemaShow, runSchemaShowStatus, runSearch, runStats, runTelemetry, runTest, runTestAll, runUpdate, runUpdateMany, runUpgrade, runValidate, } from "../cli/commands/index.js";
23
24
  const PM_PACKAGE_ROOT_ENV = "PM_CLI_PACKAGE_ROOT";
24
25
  function resolvePmPackageRoot() {
@@ -30,256 +31,9 @@ if (typeof process.env[PM_PACKAGE_ROOT_ENV] !== "string" || process.env[PM_PACKA
30
31
  // Reflect the real package.json version so agents/telemetry can identify the
31
32
  // build serving requests (was hard-coded "1.0.0"; see pm-2nvw).
32
33
  const PM_MCP_SERVER_VERSION = resolvePmCliVersion(import.meta.url, ["../.."]) ?? "0.0.0";
33
- const TOOL_SCHEMA_BASE = {
34
- type: "object",
35
- properties: {
36
- cwd: {
37
- type: "string",
38
- description: "Workspace directory to run the native pm operation in. Defaults to the MCP server process cwd.",
39
- },
40
- path: {
41
- type: "string",
42
- description: "Optional pm data root, equivalent to PM_PATH/global --path. Leave unset for real repository tracking.",
43
- },
44
- author: {
45
- type: "string",
46
- description: "Mutation author. Defaults to PM_AUTHOR or pm settings when supported by the underlying operation.",
47
- },
48
- },
49
- additionalProperties: true,
50
- };
51
- const idSchema = {
52
- type: "string",
53
- description: "pm item id, for example pm-abc1.",
54
- };
55
- // pm-fd8n: derive the pm_run action enumeration from the canonical
56
- // PM_TOOL_ACTIONS contract instead of a hand-maintained prose list, so the
57
- // MCP-facing description can never drift from the actual supported actions.
58
- const PM_RUN_ACTION_DESCRIPTION = `Operation name (one of): ${PM_TOOL_ACTIONS.join(", ")}. ` +
59
- "Package-owned actions (for example calendar/templates/guide/dedupe-audit/normalize/reindex/comments-audit/completion/test-runs-list/test-runs-status/test-runs-logs/test-runs-stop/test-runs-resume) are available dynamically when installed.";
60
- const LIST_TOP_LEVEL_OPTION_PROPERTIES = {
61
- status: { type: "string", description: "Alias for options.status." },
62
- type: { type: "string", description: "Alias for options.type." },
63
- tag: { type: "string", description: "Alias for options.tag." },
64
- priority: { type: "string", description: "Alias for options.priority." },
65
- limit: { type: ["string", "number"], description: "Alias for options.limit." },
66
- offset: { type: ["string", "number"], description: "Alias for options.offset." },
67
- };
68
- const SEARCH_TOP_LEVEL_OPTION_PROPERTIES = {
69
- mode: { type: "string", description: "Alias for options.mode." },
70
- status: { type: "string", description: "Alias for options.status." },
71
- type: { type: "string", description: "Alias for options.type." },
72
- tag: { type: "string", description: "Alias for options.tag." },
73
- priority: { type: "string", description: "Alias for options.priority." },
74
- limit: { type: ["string", "number"], description: "Alias for options.limit." },
75
- };
76
- function objectSchema(properties, required = []) {
77
- return {
78
- ...TOOL_SCHEMA_BASE,
79
- properties: {
80
- ...TOOL_SCHEMA_BASE.properties,
81
- ...properties,
82
- },
83
- required,
84
- };
85
- }
86
- const TOOLS = [
87
- {
88
- name: "pm_run",
89
- description: "Run any supported pm operation natively through the pm library. Use this for commands not covered by narrower pm_* tools.",
90
- inputSchema: objectSchema({
91
- action: {
92
- type: "string",
93
- description: PM_RUN_ACTION_DESCRIPTION,
94
- },
95
- id: idSchema,
96
- query: { type: "string", description: "Search query for action=search." },
97
- reason: { type: "string", description: "Close reason for action=close." },
98
- force: { type: "boolean", description: "Force ownership/terminal-state override when supported." },
99
- subcommand: {
100
- type: "string",
101
- enum: ["list", "show", "show-status", "add-type", "remove-type", "add-status", "remove-status"],
102
- description: "Schema subcommand when action=schema.",
103
- },
104
- name: {
105
- type: "string",
106
- description: "Item type name for action=schema show/add-type/remove-type, or status id for show-status/add-status/remove-status.",
107
- },
108
- description: {
109
- type: "string",
110
- description: "Custom item type or status description for action=schema add-type/add-status.",
111
- },
112
- defaultStatus: { type: "string", description: "Default status for action=schema add-type." },
113
- folder: { type: "string", description: "Storage folder for action=schema add-type." },
114
- alias: {
115
- type: "array",
116
- items: { type: "string" },
117
- description: "Aliases for action=schema add-type/add-status.",
118
- },
119
- role: {
120
- type: "array",
121
- items: { type: "string" },
122
- description: "Lifecycle roles for action=schema add-status: draft, active, blocked, terminal, terminal_done, terminal_canceled, default_open, default_close, default_cancel.",
123
- },
124
- order: { type: "number", description: "Display/sort order for action=schema add-status." },
125
- options: { type: "object", description: "Underlying pm command options using camelCase keys." },
126
- fullChangedFields: {
127
- type: "boolean",
128
- description: "For mutation actions, return the full changed_fields array instead of the default changed_field_count.",
129
- },
130
- idOnly: {
131
- type: "boolean",
132
- description: "For single-item mutation actions, return only id and status.",
133
- },
134
- }, ["action"]),
135
- },
136
- {
137
- name: "pm_context",
138
- description: "Return the agent-oriented project context snapshot.",
139
- inputSchema: objectSchema({ options: { type: "object" } }),
140
- },
141
- {
142
- name: "pm_search",
143
- description: "Search pm items with keyword, semantic, or hybrid search. " +
144
- "Defaults to a compact projection for token efficiency. " +
145
- "Pass options.mode=keyword|semantic|hybrid, options.limit=N to cap hits, " +
146
- "options.fields='id,title,score' for a custom projection, or options.full=true for full item bodies (can be large).",
147
- inputSchema: objectSchema({ query: { type: "string" }, options: { type: "object" }, ...SEARCH_TOP_LEVEL_OPTION_PROPERTIES }, ["query"]),
148
- },
149
- {
150
- name: "pm_list",
151
- description: "List pm items with status/type/tag/priority filters. Defaults to compact projection for token efficiency. " +
152
- "options.status accepts CSV (open,in_progress). " +
153
- "Pass options.compact=false or options.includeBody=true for full bodies/comments. " +
154
- "Pass options.brief=true for ultra-terse (id/status/type/title only). " +
155
- "Pass options.fields='id,title,priority' for custom projection. " +
156
- "Pass options.limit=N to cap row count.",
157
- inputSchema: objectSchema({ options: { type: "object" }, ...LIST_TOP_LEVEL_OPTION_PROPERTIES }),
158
- },
159
- {
160
- name: "pm_get",
161
- description: "Read one pm item. Pass options.depth='brief' or options.fields='id,title,status' for low-token inspection.",
162
- inputSchema: objectSchema({
163
- id: idSchema,
164
- options: { type: "object", description: "Get options such as depth=brief|standard|deep|full or fields=id,title,status." },
165
- }, ["id"]),
166
- },
167
- {
168
- name: "pm_create",
169
- description: "Create a pm item natively and write pm history. " +
170
- "Output is compact by default (changed_fields replaced with changed_field_count for token efficiency); pass fullChangedFields=true for the full changed_fields array.",
171
- inputSchema: objectSchema({
172
- fullChangedFields: { type: "boolean", description: "Return full changed_fields instead of changed_field_count." },
173
- allowMissingParent: { type: "boolean", description: "Allow unresolved parent references and emit a validation warning." },
174
- options: { type: "object", description: "Create options. title and description are required." },
175
- }, ["options"]),
176
- },
177
- {
178
- name: "pm_copy",
179
- description: "Copy an existing pm item into a new id while resetting lifecycle fields. " +
180
- "Output is compact by default (changed_fields replaced with changed_field_count); pass fullChangedFields=true for the full changed_fields array.",
181
- inputSchema: objectSchema({
182
- id: idSchema,
183
- fullChangedFields: { type: "boolean", description: "Return full changed_fields instead of changed_field_count." },
184
- options: { type: "object", description: "Copy options such as title override, author, and message." },
185
- }, ["id"]),
186
- },
187
- {
188
- name: "pm_update",
189
- description: "Update pm item metadata/body/dependencies/log seeds natively. " +
190
- "Output is compact by default (changed_fields replaced with changed_field_count); pass fullChangedFields=true for the full changed_fields delta.",
191
- inputSchema: objectSchema({
192
- id: idSchema,
193
- fullChangedFields: { type: "boolean", description: "Return full changed_fields instead of changed_field_count." },
194
- options: { type: "object" },
195
- }, ["id", "options"]),
196
- },
197
- {
198
- name: "pm_claim",
199
- description: "Claim a pm item.",
200
- inputSchema: objectSchema({ id: idSchema, force: { type: "boolean" }, options: { type: "object" } }, ["id"]),
201
- },
202
- {
203
- name: "pm_release",
204
- description: "Release a pm item claim.",
205
- inputSchema: objectSchema({ id: idSchema, force: { type: "boolean" }, options: { type: "object" } }, ["id"]),
206
- },
207
- {
208
- name: "pm_close",
209
- description: "Close a pm item with optional close reason and optional close validation (reason requirement follows governance settings). " +
210
- "Output is compact by default (changed_fields replaced with changed_field_count); pass fullChangedFields=true for the full changed_fields array.",
211
- inputSchema: objectSchema({
212
- id: idSchema,
213
- reason: { type: "string", description: "Close reason text when provided or required by governance settings." },
214
- duplicateOf: { type: "string", description: "Canonical item id when closing this item as a duplicate." },
215
- fullChangedFields: { type: "boolean", description: "Return full changed_fields instead of changed_field_count." },
216
- idOnly: { type: "boolean", description: "Return only id and status." },
217
- options: { type: "object" },
218
- }, ["id"]),
219
- },
220
- {
221
- name: "pm_comments",
222
- description: "List or add comments on a pm item. Use options.add to append. " +
223
- "List calls default to the most recent 20 comments with total_count/has_more metadata for token efficiency. " +
224
- "Pass options.limit=N to choose a page size, options.limit=0 for summary-only metadata, or options.full=true for full history.",
225
- inputSchema: objectSchema({ id: idSchema, options: { type: "object" } }, ["id"]),
226
- },
227
- {
228
- name: "pm_files",
229
- description: "List, add, remove, audit, or validate linked files for a pm item.",
230
- inputSchema: objectSchema({ id: idSchema, options: { type: "object" } }, ["id"]),
231
- },
232
- {
233
- name: "pm_docs",
234
- description: "List, add, or remove linked docs for a pm item.",
235
- inputSchema: objectSchema({ id: idSchema, options: { type: "object" } }, ["id"]),
236
- },
237
- {
238
- name: "pm_notes",
239
- description: "List or add structured notes on a pm item. Use options.add to append a note; omit it to list existing notes.",
240
- inputSchema: objectSchema({ id: idSchema, options: { type: "object" } }, ["id"]),
241
- },
242
- {
243
- name: "pm_learnings",
244
- description: "List or add learnings on a pm item. Use options.add to capture a learning/insight; omit it to list existing learnings.",
245
- inputSchema: objectSchema({ id: idSchema, options: { type: "object" } }, ["id"]),
246
- },
247
- {
248
- name: "pm_deps",
249
- description: "List, add, or remove dependencies for a pm item. Use options.add to declare a dependency and options.remove to drop one; omit both to list current dependencies.",
250
- inputSchema: objectSchema({ id: idSchema, options: { type: "object" } }, ["id"]),
251
- },
252
- {
253
- name: "pm_test",
254
- description: "List, add, remove, or run linked tests for a pm item.",
255
- inputSchema: objectSchema({ id: idSchema, options: { type: "object" } }, ["id"]),
256
- },
257
- {
258
- name: "pm_validate",
259
- description: "Run pm validation checks.",
260
- inputSchema: objectSchema({ options: { type: "object" } }),
261
- },
262
- {
263
- name: "pm_health",
264
- description: "Run pm health diagnostics. Pass options.brief=true for compact low-token details, options.skipIntegrity=true, options.skipDrift=true, options.skipVectors=true for a fast status-only check, or options.full=true for the complete deep check.",
265
- inputSchema: objectSchema({ options: { type: "object" } }),
266
- },
267
- {
268
- name: "pm_contracts",
269
- description: "Inspect pm command, flag, schema, and availability contracts.",
270
- inputSchema: objectSchema({ options: { type: "object" } }),
271
- },
272
- {
273
- name: "pm_plan",
274
- description: "Run agent-optimized Plan workflows. options.subcommand selects: create|show|add-step|update-step|complete-step|block-step|reorder-step|remove-step|link|unlink|decision|discovery|validation|resume|approve|materialize. Provide id for all non-create subcommands; provide stepRef for step lifecycle subcommands. Plans store agent-readable steps with dependencies, decisions, discoveries, validation, and resume context.",
275
- inputSchema: objectSchema({
276
- id: { type: "string", description: "Plan id (required for all subcommands except create)." },
277
- stepRef: { type: "string", description: "Step id or order for step lifecycle subcommands." },
278
- reorderTo: { type: "number", description: "New order for reorder-step." },
279
- options: { type: "object", description: "Plan options including subcommand, stepRef, stepStatus, link, depth, etc." },
280
- }),
281
- },
282
- ];
34
+ // Tool definitions (TOOLS) live in ./tool-definitions.ts so the `pm contracts`
35
+ // golden-file snapshot can import the surface without loading the server
36
+ // runtime (pm-4os2). This file owns dispatch, normalization, and transport.
283
37
  // pm-qxwu: TOOL_SCHEMA_BASE keeps additionalProperties:true so legitimate
284
38
  // passthrough keeps working, which means a typo'd top-level arg (e.g.
285
39
  // "fullChangedField" missing the trailing "s") is silently swallowed and the
@@ -372,7 +126,7 @@ function globalOptions(args) {
372
126
  noPager: true,
373
127
  };
374
128
  }
375
- const ARRAY_TO_CSV_FIELDS = new Set(["tags", "blockedBy", "blocked_by", "skills"]);
129
+ const ARRAY_TO_CSV_FIELDS = new Set(["tags", "blockedBy", "blocked_by", "skills", "fields"]);
376
130
  const SCALAR_TO_ARRAY_FIELDS = new Set([
377
131
  "comment",
378
132
  "note",
@@ -455,6 +209,13 @@ function optionsWithAuthor(args, action) {
455
209
  else if (action === "close") {
456
210
  hoistKey("duplicateOf");
457
211
  }
212
+ else if (action === "append") {
213
+ // pm-7u9j: the narrow pm_append tool declares `body` top-level; runAppend
214
+ // reads it from options, so hoist unless options.body already wins.
215
+ // (pm_schema/pm_config top-level args are consumed directly by runAction's
216
+ // schema/config cases, which read args before options — no hoist needed.)
217
+ hoistKey("body");
218
+ }
458
219
  const options = normalizeMcpOptionsArrays({ ...hoistedTopLevel, ...baseOptions }, action);
459
220
  const author = readString(args, "author");
460
221
  return author && options.author === undefined ? { ...options, author } : options;
@@ -743,7 +504,9 @@ async function runAction(args) {
743
504
  listOptions.includeBody === undefined) {
744
505
  listOptions.compact = true;
745
506
  }
746
- return runList(readString(args, "status"), listOptions, global);
507
+ // pm-rmjy: echo the applied filters + resolved projection mode so agents
508
+ // get structured confirmation of what the server actually ran.
509
+ return withQuerySummary((await runList(readString(args, "status"), listOptions, global)), listOptions);
747
510
  }
748
511
  case "get":
749
512
  return runGet(id ?? readRequiredString(options, "id"), global, options);
@@ -754,7 +517,8 @@ async function runAction(args) {
754
517
  searchOptions.fields === undefined) {
755
518
  searchOptions.compact = true;
756
519
  }
757
- return runSearch(readRequiredString(args, "query"), searchOptions, global);
520
+ // pm-rmjy: echo the applied filters + resolved projection mode (see list).
521
+ return withQuerySummary((await runSearch(readRequiredString(args, "query"), searchOptions, global)), searchOptions);
758
522
  }
759
523
  case "create": {
760
524
  const { changedFields, idOnly, runnerOptions } = withMutationCompaction(args, options);
@@ -836,8 +600,15 @@ async function runAction(args) {
836
600
  }
837
601
  case "contracts":
838
602
  return runContracts(options, global);
839
- case "config":
840
- return runConfig(readString(args, "scope") ?? readString(options, "scope") ?? "project", readString(args, "configAction") ?? readRequiredString(options, "action"), readString(args, "key") ?? readString(options, "key"), options, global, readString(args, "value") ?? readString(options, "value"));
603
+ case "config": {
604
+ // pm-v68d: the narrow pm_config tool declares configAction top-level;
605
+ // options.configAction/options.action remain accepted for pm_run parity.
606
+ const configAction = readString(args, "configAction") ?? readString(options, "configAction") ?? readString(options, "action");
607
+ if (configAction === undefined) {
608
+ throw new PmCliError("Missing required argument: configAction", 64);
609
+ }
610
+ return runConfig(readString(args, "scope") ?? readString(options, "scope") ?? "project", configAction, readString(args, "key") ?? readString(options, "key"), options, global, readString(args, "value") ?? readString(options, "value"));
611
+ }
841
612
  case "activity": {
842
613
  const activityOptions = { ...options };
843
614
  if (activityOptions.compact === undefined) {
@@ -1001,6 +772,7 @@ const HANDLERS = {
1001
772
  pm_create: (args) => runAction({ ...args, action: "create" }),
1002
773
  pm_copy: (args) => runAction({ ...args, action: "copy" }),
1003
774
  pm_update: (args) => runAction({ ...args, action: "update" }),
775
+ pm_append: (args) => runAction({ ...args, action: "append" }),
1004
776
  pm_claim: (args) => runAction({ ...args, action: "claim" }),
1005
777
  pm_release: (args) => runAction({ ...args, action: "release" }),
1006
778
  pm_close: (args) => runAction({ ...args, action: "close" }),
@@ -1014,6 +786,8 @@ const HANDLERS = {
1014
786
  pm_validate: (args) => runAction({ ...args, action: "validate" }),
1015
787
  pm_health: (args) => runAction({ ...args, action: "health" }),
1016
788
  pm_contracts: (args) => runAction({ ...args, action: "contracts" }),
789
+ pm_schema: (args) => runAction({ ...args, action: "schema" }),
790
+ pm_config: (args) => runAction({ ...args, action: "config" }),
1017
791
  pm_plan: (args) => runAction({ ...args, action: "plan" }),
1018
792
  };
1019
793
  function resultContent(result, warnings) {
@@ -1060,9 +834,10 @@ export async function handleRequest(request) {
1060
834
  serverInfo: { name: "pm-mcp", version: PM_MCP_SERVER_VERSION },
1061
835
  instructions: "You have access to native pm CLI tools for git-based project management. " +
1062
836
  "Use pm_context or pm_search before creating new work. " +
1063
- "Prefer narrow tools (pm_context, pm_list, pm_get, pm_search, pm_create, pm_copy, pm_update, pm_claim, pm_release, pm_close, pm_comments, pm_files, pm_docs, pm_notes, pm_learnings, pm_deps, pm_test, pm_validate, pm_health, pm_contracts, pm_plan) over pm_run when they cover the operation. " +
837
+ "Prefer narrow tools (pm_context, pm_list, pm_get, pm_search, pm_create, pm_copy, pm_update, pm_append, pm_claim, pm_release, pm_close, pm_comments, pm_files, pm_docs, pm_notes, pm_learnings, pm_deps, pm_test, pm_validate, pm_health, pm_contracts, pm_schema, pm_config, pm_plan) over pm_run when they cover the operation. " +
1064
838
  "Use pm_plan for agent harness Plan workflows: it provides Codex/Claude/Cursor-style planning with durable steps, dependencies, decisions, discoveries, validation, and materialization. " +
1065
- "Use pm_run with an explicit action for package-owned operations (calendar/templates/guide/dedupe-audit/normalize/reindex/comments-audit/completion/test-runs-list/test-runs-status/test-runs-logs/test-runs-stop/test-runs-resume), plus activity, aggregate, history, stats, append, test-all, and gc. " +
839
+ "Use pm_schema and pm_config for workspace configuration: pm_schema manages custom item types/statuses and pm_config reads or writes settings keys. " +
840
+ "Use pm_run with an explicit action for package-owned operations (calendar/templates/guide/dedupe-audit/normalize/reindex/comments-audit/completion/test-runs-list/test-runs-status/test-runs-logs/test-runs-stop/test-runs-resume), plus activity, aggregate, history, stats, test-all, and gc. " +
1066
841
  "Use history-redact for audited history-stream redaction workflows, history-repair to re-anchor a drifted history chain, and history-compact to checkpoint/prune long history streams while preserving replay integrity. " +
1067
842
  "Set author to 'claude-code-agent' on all mutations. " +
1068
843
  "Do not pass path during real repository tracking — only pass path for sandbox or test runs.",
@@ -1158,4 +933,4 @@ if (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1]) {
1158
933
  startMcpServer();
1159
934
  }
1160
935
  //# sourceMappingURL=server.js.map
1161
- //# debugId=c65aa3d0-c69f-561b-8e23-939348167e21
936
+ //# debugId=5d14434e-fc25-502b-9aa8-8efd7ab7fd6a