@unbrained/pm-cli 2026.6.12 → 2026.6.16

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 (777) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +2 -2
  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 +269 -8
  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 +49 -0
  42. package/dist/cli/commands/create.js +112 -7
  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 +1 -0
  88. package/dist/cli/commands/index.js +3 -2
  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 +36 -1
  94. package/dist/cli/commands/init.js +38 -5
  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/linked-test-parsers.d.ts +5 -0
  99. package/dist/cli/commands/linked-test-parsers.js +5 -2
  100. package/dist/cli/commands/linked-test-parsers.js.map +1 -1
  101. package/dist/cli/commands/list-filter-shared.d.ts +8 -0
  102. package/dist/cli/commands/list-filter-shared.js +70 -0
  103. package/dist/cli/commands/list-filter-shared.js.map +1 -0
  104. package/dist/cli/commands/list.d.ts +116 -0
  105. package/dist/cli/commands/list.js +194 -6
  106. package/dist/cli/commands/list.js.map +1 -1
  107. package/dist/cli/commands/normalize.js +16 -2
  108. package/dist/cli/commands/normalize.js.map +1 -1
  109. package/dist/cli/commands/notes.js +4 -3
  110. package/dist/cli/commands/notes.js.map +1 -1
  111. package/dist/cli/commands/plan.js +3 -2
  112. package/dist/cli/commands/plan.js.map +1 -1
  113. package/dist/cli/commands/reindex.d.ts +83 -0
  114. package/dist/cli/commands/reindex.js +45 -10
  115. package/dist/cli/commands/reindex.js.map +1 -1
  116. package/dist/cli/commands/restore.d.ts +40 -1
  117. package/dist/cli/commands/restore.js +27 -2
  118. package/dist/cli/commands/restore.js.map +1 -1
  119. package/dist/cli/commands/schema.d.ts +18 -0
  120. package/dist/cli/commands/schema.js +30 -3
  121. package/dist/cli/commands/schema.js.map +1 -1
  122. package/dist/cli/commands/search.d.ts +289 -1
  123. package/dist/cli/commands/search.js +367 -60
  124. package/dist/cli/commands/search.js.map +1 -1
  125. package/dist/cli/commands/stats.d.ts +38 -0
  126. package/dist/cli/commands/stats.js +38 -10
  127. package/dist/cli/commands/stats.js.map +1 -1
  128. package/dist/cli/commands/telemetry.js +5 -3
  129. package/dist/cli/commands/telemetry.js.map +1 -1
  130. package/dist/cli/commands/templates.d.ts +18 -0
  131. package/dist/cli/commands/templates.js +9 -2
  132. package/dist/cli/commands/templates.js.map +1 -1
  133. package/dist/cli/commands/test-all.d.ts +5 -0
  134. package/dist/cli/commands/test-all.js +9 -3
  135. package/dist/cli/commands/test-all.js.map +1 -1
  136. package/dist/cli/commands/test.d.ts +70 -1
  137. package/dist/cli/commands/test.js +84 -3
  138. package/dist/cli/commands/test.js.map +1 -1
  139. package/dist/cli/commands/update-many.d.ts +34 -1
  140. package/dist/cli/commands/update-many.js +60 -31
  141. package/dist/cli/commands/update-many.js.map +1 -1
  142. package/dist/cli/commands/update.d.ts +71 -0
  143. package/dist/cli/commands/update.js +74 -8
  144. package/dist/cli/commands/update.js.map +1 -1
  145. package/dist/cli/commands/upgrade.d.ts +28 -1
  146. package/dist/cli/commands/upgrade.js +17 -4
  147. package/dist/cli/commands/upgrade.js.map +1 -1
  148. package/dist/cli/commands/validate.d.ts +114 -0
  149. package/dist/cli/commands/validate.js +154 -9
  150. package/dist/cli/commands/validate.js.map +1 -1
  151. package/dist/cli/error-guidance.d.ts +30 -0
  152. package/dist/cli/error-guidance.js +68 -6
  153. package/dist/cli/error-guidance.js.map +1 -1
  154. package/dist/cli/extension-command-options.js +9 -7
  155. package/dist/cli/extension-command-options.js.map +1 -1
  156. package/dist/cli/help-content.d.ts +8 -0
  157. package/dist/cli/help-content.js +30 -6
  158. package/dist/cli/help-content.js.map +1 -1
  159. package/dist/cli/help-json-payload.d.ts +19 -1
  160. package/dist/cli/help-json-payload.js +16 -7
  161. package/dist/cli/help-json-payload.js.map +1 -1
  162. package/dist/cli/main.d.ts +223 -0
  163. package/dist/cli/main.js +214 -46
  164. package/dist/cli/main.js.map +1 -1
  165. package/dist/cli/register-list-query.js +62 -5
  166. package/dist/cli/register-list-query.js.map +1 -1
  167. package/dist/cli/register-mutation.d.ts +16 -0
  168. package/dist/cli/register-mutation.js +210 -40
  169. package/dist/cli/register-mutation.js.map +1 -1
  170. package/dist/cli/register-operations.d.ts +8 -0
  171. package/dist/cli/register-operations.js +33 -11
  172. package/dist/cli/register-operations.js.map +1 -1
  173. package/dist/cli/register-setup.js +9 -6
  174. package/dist/cli/register-setup.js.map +1 -1
  175. package/dist/cli/registration-helpers.d.ts +4 -0
  176. package/dist/cli/registration-helpers.js +124 -38
  177. package/dist/cli/registration-helpers.js.map +1 -1
  178. package/dist/cli-bundle/chunks/activity-5P2KQCTH.js +18 -0
  179. package/dist/cli-bundle/chunks/{activity-XADJOG6G.js → activity-MJGTX4LO.js} +13 -11
  180. package/dist/cli-bundle/chunks/{aggregate-OD36DJU5.js → aggregate-MH3GROKB.js} +54 -25
  181. package/dist/cli-bundle/chunks/aggregate-MH3GROKB.js.map +7 -0
  182. package/dist/cli-bundle/chunks/{aggregate-6OTS3AOO.js → aggregate-OUGCDFNC.js} +55 -26
  183. package/dist/cli-bundle/chunks/aggregate-OUGCDFNC.js.map +1 -0
  184. package/dist/cli-bundle/chunks/{append-JYWO4P7W.js → append-2Q4BPUBW.js} +10 -10
  185. package/dist/cli-bundle/chunks/{append-JYWO4P7W.js.map → append-2Q4BPUBW.js.map} +2 -2
  186. package/dist/cli-bundle/chunks/{append-KG55G7S3.js → append-VCRUG2W6.js} +11 -11
  187. package/dist/cli-bundle/chunks/append-VCRUG2W6.js.map +1 -0
  188. package/dist/cli-bundle/chunks/{chunk-IGVJRZ6H.js → chunk-2IUJBMKS.js} +10 -9
  189. package/dist/cli-bundle/chunks/{chunk-IGVJRZ6H.js.map → chunk-2IUJBMKS.js.map} +2 -2
  190. package/dist/cli-bundle/chunks/{chunk-ATEES5SX.js → chunk-2JEGCDYT.js} +2 -2
  191. package/dist/cli-bundle/chunks/{chunk-XUC4C4PT.js → chunk-3WAULYOY.js} +3 -3
  192. package/dist/cli-bundle/chunks/{chunk-UIG4TW2H.js → chunk-3XOXWOGA.js} +359 -19
  193. package/dist/cli-bundle/chunks/chunk-3XOXWOGA.js.map +1 -0
  194. package/dist/cli-bundle/chunks/{chunk-3KLPFWZ4.js → chunk-4KBK4BA3.js} +16 -34
  195. package/dist/cli-bundle/chunks/chunk-4KBK4BA3.js.map +7 -0
  196. package/dist/cli-bundle/chunks/{chunk-OLKBSY4N.js → chunk-4VLB4JH2.js} +51 -8
  197. package/dist/cli-bundle/chunks/chunk-4VLB4JH2.js.map +7 -0
  198. package/dist/cli-bundle/chunks/{chunk-ZMW77VWV.js → chunk-656HPQPO.js} +27 -12
  199. package/dist/cli-bundle/chunks/chunk-656HPQPO.js.map +1 -0
  200. package/dist/cli-bundle/chunks/{chunk-CW6E4NAT.js → chunk-667XI4UJ.js} +309 -20
  201. package/dist/cli-bundle/chunks/chunk-667XI4UJ.js.map +1 -0
  202. package/dist/cli-bundle/chunks/{chunk-5SCT2JCT.js → chunk-6BV7ENQL.js} +9 -8
  203. package/dist/cli-bundle/chunks/chunk-6BV7ENQL.js.map +7 -0
  204. package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js +35 -0
  205. package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js.map +7 -0
  206. package/dist/cli-bundle/chunks/{chunk-VFUZV5EB.js → chunk-6NQXMGYU.js} +19 -8
  207. package/dist/cli-bundle/chunks/chunk-6NQXMGYU.js.map +7 -0
  208. package/dist/cli-bundle/chunks/{chunk-GKIZW7SM.js → chunk-764O7EUA.js} +223 -50
  209. package/dist/cli-bundle/chunks/chunk-764O7EUA.js.map +7 -0
  210. package/dist/cli-bundle/chunks/{chunk-QJMGRZO2.js → chunk-7AGIXLNK.js} +3 -3
  211. package/dist/cli-bundle/chunks/chunk-7EILPFMA.js +404 -0
  212. package/dist/cli-bundle/chunks/chunk-7EILPFMA.js.map +7 -0
  213. package/dist/cli-bundle/chunks/{chunk-HI7STVF2.js → chunk-7K2MXFMX.js} +14 -32
  214. package/dist/cli-bundle/chunks/chunk-7K2MXFMX.js.map +1 -0
  215. package/dist/cli-bundle/chunks/{chunk-TNAP7EJX.js → chunk-7L5VOUYP.js} +6 -17
  216. package/dist/cli-bundle/chunks/chunk-7L5VOUYP.js.map +7 -0
  217. package/dist/cli-bundle/chunks/chunk-7ZGKNHUL.js +61 -0
  218. package/dist/cli-bundle/chunks/chunk-7ZGKNHUL.js.map +7 -0
  219. package/dist/cli-bundle/chunks/{chunk-7IYFN5R7.js → chunk-A576QZDL.js} +223 -50
  220. package/dist/cli-bundle/chunks/chunk-A576QZDL.js.map +1 -0
  221. package/dist/cli-bundle/chunks/{chunk-KBPQHXWG.js → chunk-AERT7KT3.js} +5 -5
  222. package/dist/cli-bundle/chunks/chunk-ASM4DVRW.js +58 -0
  223. package/dist/cli-bundle/chunks/chunk-ASM4DVRW.js.map +1 -0
  224. package/dist/cli-bundle/chunks/{chunk-KWAXVAXX.js → chunk-B5Q7XC4K.js} +117 -37
  225. package/dist/cli-bundle/chunks/chunk-B5Q7XC4K.js.map +7 -0
  226. package/dist/cli-bundle/chunks/{chunk-EWFY7SLA.js → chunk-BJWTFOZM.js} +74 -14
  227. package/dist/cli-bundle/chunks/chunk-BJWTFOZM.js.map +1 -0
  228. package/dist/cli-bundle/chunks/{chunk-XJDGS74Y.js → chunk-CBMETQ2U.js} +105 -31
  229. package/dist/cli-bundle/chunks/chunk-CBMETQ2U.js.map +1 -0
  230. package/dist/cli-bundle/chunks/{chunk-ESANVZF4.js → chunk-E6J2PEK6.js} +3 -3
  231. package/dist/cli-bundle/chunks/{chunk-VSRZRLG3.js → chunk-F2GC6L3N.js} +3 -3
  232. package/dist/cli-bundle/chunks/{chunk-I7NYDZDV.js → chunk-F7WSO5UX.js} +7 -18
  233. package/dist/cli-bundle/chunks/chunk-F7WSO5UX.js.map +1 -0
  234. package/dist/cli-bundle/chunks/{chunk-VAOUX6TK.js → chunk-FTAZLAR7.js} +8 -5
  235. package/dist/cli-bundle/chunks/{chunk-VAOUX6TK.js.map → chunk-FTAZLAR7.js.map} +1 -1
  236. package/dist/cli-bundle/chunks/{chunk-OASDW5UI.js → chunk-FXNT5LPX.js} +77 -9
  237. package/dist/cli-bundle/chunks/chunk-FXNT5LPX.js.map +1 -0
  238. package/dist/cli-bundle/chunks/{chunk-WUNFKP7M.js → chunk-G2YVUY7I.js} +14 -9
  239. package/dist/cli-bundle/chunks/chunk-G2YVUY7I.js.map +1 -0
  240. package/dist/cli-bundle/chunks/{chunk-L5EPZQIC.js → chunk-G3CEIXTV.js} +68 -19
  241. package/dist/cli-bundle/chunks/chunk-G3CEIXTV.js.map +7 -0
  242. package/dist/cli-bundle/chunks/{chunk-UUWGCWBU.js → chunk-GAVE4MYM.js} +37 -63
  243. package/dist/cli-bundle/chunks/chunk-GAVE4MYM.js.map +1 -0
  244. package/dist/cli-bundle/chunks/{chunk-SXKNJPQ7.js → chunk-GQ4JKNMV.js} +4 -4
  245. package/dist/cli-bundle/chunks/{chunk-SXKNJPQ7.js.map → chunk-GQ4JKNMV.js.map} +1 -1
  246. package/dist/cli-bundle/chunks/{chunk-73ZPG2I3.js → chunk-GYMG7AG6.js} +36 -62
  247. package/dist/cli-bundle/chunks/chunk-GYMG7AG6.js.map +7 -0
  248. package/dist/cli-bundle/chunks/{chunk-35P4GT6E.js → chunk-H6EH6ENJ.js} +362 -22
  249. package/dist/cli-bundle/chunks/chunk-H6EH6ENJ.js.map +7 -0
  250. package/dist/cli-bundle/chunks/{chunk-F75JSIOZ.js → chunk-HDIDUME4.js} +45 -13
  251. package/dist/cli-bundle/chunks/chunk-HDIDUME4.js.map +1 -0
  252. package/dist/cli-bundle/chunks/{chunk-XWMF3POR.js → chunk-HPELHUTG.js} +122 -45
  253. package/dist/cli-bundle/chunks/chunk-HPELHUTG.js.map +1 -0
  254. package/dist/cli-bundle/chunks/{chunk-QKW5D45B.js → chunk-II7OGE3V.js} +20 -9
  255. package/dist/cli-bundle/chunks/chunk-II7OGE3V.js.map +1 -0
  256. package/dist/cli-bundle/chunks/{chunk-4HFU4UO2.js → chunk-ILHLIA47.js} +5 -5
  257. package/dist/cli-bundle/chunks/{chunk-4HFU4UO2.js.map → chunk-ILHLIA47.js.map} +1 -1
  258. package/dist/cli-bundle/chunks/{chunk-P5BJOMBB.js → chunk-IMQG4VR3.js} +118 -74
  259. package/dist/cli-bundle/chunks/chunk-IMQG4VR3.js.map +1 -0
  260. package/dist/cli-bundle/chunks/{chunk-AX4GEVQC.js → chunk-IQVB3YDD.js} +88 -22
  261. package/dist/cli-bundle/chunks/chunk-IQVB3YDD.js.map +7 -0
  262. package/dist/cli-bundle/chunks/{chunk-I53JBTJW.js → chunk-KQ3LAMDO.js} +45 -13
  263. package/dist/cli-bundle/chunks/chunk-KQ3LAMDO.js.map +7 -0
  264. package/dist/cli-bundle/chunks/{chunk-A6LXQFO7.js → chunk-KTVETP66.js} +334 -253
  265. package/dist/cli-bundle/chunks/chunk-KTVETP66.js.map +1 -0
  266. package/dist/cli-bundle/chunks/{chunk-DY6C42S6.js → chunk-KZYVTOG5.js} +26 -11
  267. package/dist/cli-bundle/chunks/chunk-KZYVTOG5.js.map +7 -0
  268. package/dist/cli-bundle/chunks/{chunk-HGLC63AU.js → chunk-L6FJPOT4.js} +11 -10
  269. package/dist/cli-bundle/chunks/{chunk-HGLC63AU.js.map → chunk-L6FJPOT4.js.map} +1 -1
  270. package/dist/cli-bundle/chunks/{chunk-FY4SPXSC.js → chunk-LV5FFQ7M.js} +354 -266
  271. package/dist/cli-bundle/chunks/chunk-LV5FFQ7M.js.map +7 -0
  272. package/dist/cli-bundle/chunks/{chunk-PNYAAB4S.js → chunk-LWGMDLQ6.js} +8 -3
  273. package/dist/cli-bundle/chunks/chunk-LWGMDLQ6.js.map +1 -0
  274. package/dist/cli-bundle/chunks/{chunk-XTKJSVWH.js → chunk-M23HXJL3.js} +2 -2
  275. package/dist/cli-bundle/chunks/{chunk-S26FESD4.js → chunk-MJZUZ2QE.js} +3 -3
  276. package/dist/cli-bundle/chunks/{chunk-I2IJY2NL.js → chunk-NCIBNERT.js} +4 -4
  277. package/dist/cli-bundle/chunks/{chunk-I2IJY2NL.js.map → chunk-NCIBNERT.js.map} +1 -1
  278. package/dist/cli-bundle/chunks/{chunk-TK5VZFHY.js → chunk-NIQHNDBZ.js} +76 -8
  279. package/dist/cli-bundle/chunks/chunk-NIQHNDBZ.js.map +7 -0
  280. package/dist/cli-bundle/chunks/{chunk-C6SAP27O.js → chunk-O46LTCXQ.js} +4 -4
  281. package/dist/cli-bundle/chunks/{chunk-YW6Q3RYZ.js → chunk-OCTQJP42.js} +19 -8
  282. package/dist/cli-bundle/chunks/{chunk-YW6Q3RYZ.js.map → chunk-OCTQJP42.js.map} +2 -2
  283. package/dist/cli-bundle/chunks/{chunk-WPDMBIX6.js → chunk-OLTYNVJR.js} +5 -5
  284. package/dist/cli-bundle/chunks/{chunk-IUKD4W6Z.js → chunk-OY3P2I6B.js} +13 -8
  285. package/dist/cli-bundle/chunks/chunk-OY3P2I6B.js.map +7 -0
  286. package/dist/cli-bundle/chunks/{chunk-SO55HRA5.js → chunk-PZD7WPUC.js} +69 -20
  287. package/dist/cli-bundle/chunks/chunk-PZD7WPUC.js.map +1 -0
  288. package/dist/cli-bundle/chunks/{chunk-HHHJ2GI3.js → chunk-Q5RLUCP3.js} +74 -14
  289. package/dist/cli-bundle/chunks/chunk-Q5RLUCP3.js.map +7 -0
  290. package/dist/cli-bundle/chunks/{chunk-S2ZLDYGS.js → chunk-RKKIH2ZQ.js} +116 -36
  291. package/dist/cli-bundle/chunks/chunk-RKKIH2ZQ.js.map +1 -0
  292. package/dist/cli-bundle/chunks/{chunk-GWZSYR6X.js → chunk-SPYPC5CB.js} +3 -3
  293. package/dist/cli-bundle/chunks/{chunk-GWZSYR6X.js.map → chunk-SPYPC5CB.js.map} +1 -1
  294. package/dist/cli-bundle/chunks/{chunk-7AMK6DOW.js → chunk-SY4GKIWT.js} +88 -22
  295. package/dist/cli-bundle/chunks/chunk-SY4GKIWT.js.map +1 -0
  296. package/dist/cli-bundle/chunks/{chunk-ZLMIWZUG.js → chunk-SY4PZWIZ.js} +7 -4
  297. package/dist/cli-bundle/chunks/{chunk-ZLMIWZUG.js.map → chunk-SY4PZWIZ.js.map} +2 -2
  298. package/dist/cli-bundle/chunks/{chunk-R2OUQVBK.js → chunk-T5VU7ROQ.js} +4 -4
  299. package/dist/cli-bundle/chunks/{chunk-37CYVF73.js → chunk-TIRZIQRP.js} +121 -44
  300. package/dist/cli-bundle/chunks/chunk-TIRZIQRP.js.map +7 -0
  301. package/dist/cli-bundle/chunks/{chunk-7UGSRQCL.js → chunk-TUB3DZAZ.js} +107 -33
  302. package/dist/cli-bundle/chunks/chunk-TUB3DZAZ.js.map +7 -0
  303. package/dist/cli-bundle/chunks/chunk-UAR2VNCK.js +394 -0
  304. package/dist/cli-bundle/chunks/chunk-UAR2VNCK.js.map +1 -0
  305. package/dist/cli-bundle/chunks/{chunk-P5U5EOMA.js → chunk-UBMCSJXX.js} +3 -3
  306. package/dist/cli-bundle/chunks/{chunk-ZYNJNPYD.js → chunk-UUKORJSN.js} +4 -4
  307. package/dist/cli-bundle/chunks/{chunk-R4VWYWRN.js → chunk-W3HFLORZ.js} +7 -2
  308. package/dist/cli-bundle/chunks/chunk-W3HFLORZ.js.map +7 -0
  309. package/dist/cli-bundle/chunks/{chunk-VPEAS7PS.js → chunk-WZCQVABQ.js} +2 -2
  310. package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js +32 -0
  311. package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js.map +1 -0
  312. package/dist/cli-bundle/chunks/{chunk-4YFAGDRH.js → chunk-XLNNCKTN.js} +322 -19
  313. package/dist/cli-bundle/chunks/chunk-XLNNCKTN.js.map +7 -0
  314. package/dist/cli-bundle/chunks/{chunk-RXAP6JL5.js → chunk-XNOY7TCB.js} +118 -74
  315. package/dist/cli-bundle/chunks/chunk-XNOY7TCB.js.map +7 -0
  316. package/dist/cli-bundle/chunks/{chunk-Y3YKK7CY.js → chunk-YGRPBFMA.js} +2 -2
  317. package/dist/cli-bundle/chunks/{chunk-QNJSITCX.js → chunk-YXTLI4XP.js} +20 -9
  318. package/dist/cli-bundle/chunks/chunk-YXTLI4XP.js.map +1 -0
  319. package/dist/cli-bundle/chunks/{chunk-FDH2X65L.js → chunk-Z3MUNQRV.js} +52 -9
  320. package/dist/cli-bundle/chunks/chunk-Z3MUNQRV.js.map +1 -0
  321. package/dist/cli-bundle/chunks/{chunk-XMBI6TNW.js → chunk-ZJRDVYZI.js} +4 -4
  322. package/dist/cli-bundle/chunks/{chunk-CCX4RSYZ.js → chunk-ZONXMSVB.js} +10 -9
  323. package/dist/cli-bundle/chunks/chunk-ZONXMSVB.js.map +1 -0
  324. package/dist/cli-bundle/chunks/{claim-2RDYMCTP.js → claim-4APLUXJW.js} +10 -10
  325. package/dist/cli-bundle/chunks/{claim-MJ7DZFC3.js → claim-NEO7AGWH.js} +10 -10
  326. package/dist/cli-bundle/chunks/{close-XLEKIQSW.js → close-3QABBNGU.js} +8 -8
  327. package/dist/cli-bundle/chunks/close-ILMZR3D7.js +13 -0
  328. package/dist/cli-bundle/chunks/{close-many-AOD4HSAZ.js → close-many-MIZLTYGL.js} +32 -20
  329. package/dist/cli-bundle/chunks/close-many-MIZLTYGL.js.map +1 -0
  330. package/dist/cli-bundle/chunks/{close-many-XKAQY5CQ.js → close-many-Q7Y5AHQI.js} +31 -19
  331. package/dist/cli-bundle/chunks/close-many-Q7Y5AHQI.js.map +7 -0
  332. package/dist/cli-bundle/chunks/{comments-RN5TG4ZN.js → comments-DAIQPOMU.js} +55 -31
  333. package/dist/cli-bundle/chunks/comments-DAIQPOMU.js.map +1 -0
  334. package/dist/cli-bundle/chunks/{comments-B4RWWDJT.js → comments-IWFSVM4P.js} +54 -30
  335. package/dist/cli-bundle/chunks/comments-IWFSVM4P.js.map +7 -0
  336. package/dist/cli-bundle/chunks/{config-3JXJ3XZ7.js → config-IOJELD6O.js} +45 -19
  337. package/dist/cli-bundle/chunks/config-IOJELD6O.js.map +1 -0
  338. package/dist/cli-bundle/chunks/{config-FZ4UDC4B.js → config-PXTMAYV3.js} +44 -18
  339. package/dist/cli-bundle/chunks/config-PXTMAYV3.js.map +7 -0
  340. package/dist/cli-bundle/chunks/{context-QBPO3BFM.js → context-QHJSCJW4.js} +128 -39
  341. package/dist/cli-bundle/chunks/context-QHJSCJW4.js.map +1 -0
  342. package/dist/cli-bundle/chunks/{context-L36PIN35.js → context-XZS2VFKU.js} +127 -38
  343. package/dist/cli-bundle/chunks/context-XZS2VFKU.js.map +7 -0
  344. package/dist/cli-bundle/chunks/{contracts-2G66IGIA.js → contracts-B7U4OJTV.js} +54 -10
  345. package/dist/cli-bundle/chunks/contracts-B7U4OJTV.js.map +1 -0
  346. package/dist/cli-bundle/chunks/{contracts-PJCHYSO5.js → contracts-NSBVLXQ3.js} +54 -10
  347. package/dist/cli-bundle/chunks/contracts-NSBVLXQ3.js.map +7 -0
  348. package/dist/cli-bundle/chunks/{copy-FWIVTLBO.js → copy-Q64T5FD4.js} +7 -7
  349. package/dist/cli-bundle/chunks/{copy-ALU5WMHA.js → copy-SG34LCMU.js} +7 -7
  350. package/dist/cli-bundle/chunks/create-F5HZX2S4.js +30 -0
  351. package/dist/cli-bundle/chunks/{create-5433DP3G.js → create-IPAX2SNL.js} +16 -13
  352. package/dist/cli-bundle/chunks/{delete-Y2SGJBGY.js → delete-TLXR7LJ2.js} +7 -7
  353. package/dist/cli-bundle/chunks/{delete-IYTIYAJS.js → delete-VH3L7DZ6.js} +7 -7
  354. package/dist/cli-bundle/chunks/{deps-CZ4PTVXU.js → deps-J3HBBLDB.js} +9 -10
  355. package/dist/cli-bundle/chunks/{deps-CZ4PTVXU.js.map → deps-J3HBBLDB.js.map} +2 -2
  356. package/dist/cli-bundle/chunks/{deps-6TSPOSGU.js → deps-XV6JJ6IN.js} +10 -11
  357. package/dist/cli-bundle/chunks/deps-XV6JJ6IN.js.map +1 -0
  358. package/dist/cli-bundle/chunks/{docs-MXLGZUIT.js → docs-GWDEB7JH.js} +9 -9
  359. package/dist/cli-bundle/chunks/{docs-I3BAF5WH.js → docs-RCLNSKID.js} +9 -9
  360. package/dist/cli-bundle/chunks/{extension-Q34OEWO5.js → extension-5RN65LHT.js} +7 -5
  361. package/dist/cli-bundle/chunks/{extension-WH2FOIOZ.js → extension-7KO2NX2A.js} +7 -5
  362. package/dist/cli-bundle/chunks/{files-GUXUM2MB.js → files-3TCQHUHA.js} +25 -11
  363. package/dist/cli-bundle/chunks/files-3TCQHUHA.js.map +1 -0
  364. package/dist/cli-bundle/chunks/{files-FYP3MDPX.js → files-5FDUPSEA.js} +24 -10
  365. package/dist/cli-bundle/chunks/files-5FDUPSEA.js.map +7 -0
  366. package/dist/cli-bundle/chunks/focus-7AQMNRSU.js +109 -0
  367. package/dist/cli-bundle/chunks/focus-7AQMNRSU.js.map +7 -0
  368. package/dist/cli-bundle/chunks/focus-HQXBYPKM.js +106 -0
  369. package/dist/cli-bundle/chunks/focus-HQXBYPKM.js.map +1 -0
  370. package/dist/cli-bundle/chunks/{gc-KGQG66SA.js → gc-2FGKYRJ4.js} +3 -3
  371. package/dist/cli-bundle/chunks/{gc-FENB2ESG.js → gc-5B6ABL3Z.js} +3 -3
  372. package/dist/cli-bundle/chunks/{get-PCHS7RA6.js → get-FUMVOJQD.js} +43 -16
  373. package/dist/cli-bundle/chunks/get-FUMVOJQD.js.map +1 -0
  374. package/dist/cli-bundle/chunks/{get-QARTE6BL.js → get-H5BZTW4A.js} +42 -15
  375. package/dist/cli-bundle/chunks/get-H5BZTW4A.js.map +7 -0
  376. package/dist/cli-bundle/chunks/{health-E4D7KGHD.js → health-JSVOR6B4.js} +75 -49
  377. package/dist/cli-bundle/chunks/health-JSVOR6B4.js.map +1 -0
  378. package/dist/cli-bundle/chunks/{health-7MTXAVR2.js → health-LE2ZQGSM.js} +74 -48
  379. package/dist/cli-bundle/chunks/health-LE2ZQGSM.js.map +7 -0
  380. package/dist/cli-bundle/chunks/{history-7WUAEWHW.js → history-QO4JVJJP.js} +10 -10
  381. package/dist/cli-bundle/chunks/history-SSXGGTVZ.js +20 -0
  382. package/dist/cli-bundle/chunks/{history-compact-LW27IPFK.js → history-compact-ID74DOUI.js} +37 -46
  383. package/dist/cli-bundle/chunks/history-compact-ID74DOUI.js.map +7 -0
  384. package/dist/cli-bundle/chunks/{history-compact-3EJ3L2O7.js → history-compact-SDFRPZ4V.js} +38 -47
  385. package/dist/cli-bundle/chunks/history-compact-SDFRPZ4V.js.map +1 -0
  386. package/dist/cli-bundle/chunks/history-redact-VBH44Y7F.js +21 -0
  387. package/dist/cli-bundle/chunks/{history-redact-G72A4EJ4.js → history-redact-Z4P5MM3G.js} +13 -11
  388. package/dist/cli-bundle/chunks/{history-repair-OSQOKJ3E.js → history-repair-ANHEYWKF.js} +43 -48
  389. package/dist/cli-bundle/chunks/history-repair-ANHEYWKF.js.map +7 -0
  390. package/dist/cli-bundle/chunks/{history-repair-SBK7P34V.js → history-repair-CKE7GLZR.js} +44 -49
  391. package/dist/cli-bundle/chunks/history-repair-CKE7GLZR.js.map +1 -0
  392. package/dist/cli-bundle/chunks/init-7FBQO77A.js +19 -0
  393. package/dist/cli-bundle/chunks/{init-S5WEGUJY.js → init-K6MSMB37.js} +11 -9
  394. package/dist/cli-bundle/chunks/{learnings-XK3P4ZDR.js → learnings-VIS3NOQV.js} +13 -12
  395. package/dist/cli-bundle/chunks/learnings-VIS3NOQV.js.map +7 -0
  396. package/dist/cli-bundle/chunks/{learnings-HQXSSKZ5.js → learnings-YYNB64GN.js} +14 -13
  397. package/dist/cli-bundle/chunks/learnings-YYNB64GN.js.map +1 -0
  398. package/dist/cli-bundle/chunks/list-7UE44A2R.js +29 -0
  399. package/dist/cli-bundle/chunks/list-UHMA3N2K.js +33 -0
  400. package/dist/cli-bundle/chunks/{notes-5T6P7C5V.js → notes-2HRMV67I.js} +14 -13
  401. package/dist/cli-bundle/chunks/notes-2HRMV67I.js.map +1 -0
  402. package/dist/cli-bundle/chunks/{notes-U5FZCSBT.js → notes-IN3UMA7W.js} +13 -12
  403. package/dist/cli-bundle/chunks/notes-IN3UMA7W.js.map +7 -0
  404. package/dist/cli-bundle/chunks/{plan-2YTQYWGM.js → plan-I3SVH7FV.js} +16 -15
  405. package/dist/cli-bundle/chunks/plan-I3SVH7FV.js.map +1 -0
  406. package/dist/cli-bundle/chunks/{plan-7IVSICR6.js → plan-PAWCCAPW.js} +15 -14
  407. package/dist/cli-bundle/chunks/plan-PAWCCAPW.js.map +7 -0
  408. package/dist/cli-bundle/chunks/{register-list-query-4UPMHONX.js → register-list-query-N7Z7RTDM.js} +31 -22
  409. package/dist/cli-bundle/chunks/register-list-query-N7Z7RTDM.js.map +7 -0
  410. package/dist/cli-bundle/chunks/{register-list-query-7VOW2C3W.js → register-list-query-OTIK4DVA.js} +32 -23
  411. package/dist/cli-bundle/chunks/register-list-query-OTIK4DVA.js.map +1 -0
  412. package/dist/cli-bundle/chunks/{register-mutation-FARSGYRD.js → register-mutation-UFZK6Q57.js} +216 -66
  413. package/dist/cli-bundle/chunks/register-mutation-UFZK6Q57.js.map +7 -0
  414. package/dist/cli-bundle/chunks/{register-mutation-LJDNVREU.js → register-mutation-XFORLS6D.js} +210 -67
  415. package/dist/cli-bundle/chunks/register-mutation-XFORLS6D.js.map +1 -0
  416. package/dist/cli-bundle/chunks/{register-operations-HCJKDUA6.js → register-operations-6ZCLKRBG.js} +53 -39
  417. package/dist/cli-bundle/chunks/register-operations-6ZCLKRBG.js.map +7 -0
  418. package/dist/cli-bundle/chunks/{register-operations-FFTYAL42.js → register-operations-ITE7JTH3.js} +54 -40
  419. package/dist/cli-bundle/chunks/register-operations-ITE7JTH3.js.map +1 -0
  420. package/dist/cli-bundle/chunks/{register-setup-6AVIUOCC.js → register-setup-7RKGE4BQ.js} +18 -21
  421. package/dist/cli-bundle/chunks/register-setup-7RKGE4BQ.js.map +1 -0
  422. package/dist/cli-bundle/chunks/{register-setup-KVNLO5OJ.js → register-setup-7UKEFKT6.js} +17 -20
  423. package/dist/cli-bundle/chunks/register-setup-7UKEFKT6.js.map +7 -0
  424. package/dist/cli-bundle/chunks/{restore-M6AFHMV4.js → restore-NNVPBBVJ.js} +13 -11
  425. package/dist/cli-bundle/chunks/restore-XXXLQ2XC.js +19 -0
  426. package/dist/cli-bundle/chunks/{schema-AINZ2IMM.js → schema-3HCLXCFX.js} +27 -9
  427. package/dist/cli-bundle/chunks/schema-3HCLXCFX.js.map +7 -0
  428. package/dist/cli-bundle/chunks/{schema-76HDZJCC.js → schema-3YKCQ3VO.js} +28 -10
  429. package/dist/cli-bundle/chunks/schema-3YKCQ3VO.js.map +1 -0
  430. package/dist/cli-bundle/chunks/{search-JMLFQEPJ.js → search-NQ42NC6A.js} +328 -71
  431. package/dist/cli-bundle/chunks/search-NQ42NC6A.js.map +7 -0
  432. package/dist/cli-bundle/chunks/{search-NL3TSCYB.js → search-V7PZ2ICH.js} +328 -71
  433. package/dist/cli-bundle/chunks/search-V7PZ2ICH.js.map +1 -0
  434. package/dist/cli-bundle/chunks/{stats-BKXCBIGT.js → stats-7KD4PJC5.js} +41 -16
  435. package/dist/cli-bundle/chunks/stats-7KD4PJC5.js.map +7 -0
  436. package/dist/cli-bundle/chunks/{stats-UBD56TGK.js → stats-GRHO6RFB.js} +42 -17
  437. package/dist/cli-bundle/chunks/stats-GRHO6RFB.js.map +1 -0
  438. package/dist/cli-bundle/chunks/{telemetry-ZJXK3H7X.js → telemetry-H5GLXNG5.js} +6 -6
  439. package/dist/cli-bundle/chunks/telemetry-H5GLXNG5.js.map +7 -0
  440. package/dist/cli-bundle/chunks/{telemetry-N454RHG5.js → telemetry-TRRYZXWT.js} +7 -7
  441. package/dist/cli-bundle/chunks/telemetry-TRRYZXWT.js.map +1 -0
  442. package/dist/cli-bundle/chunks/test-6CZNIIGA.js +34 -0
  443. package/dist/cli-bundle/chunks/{test-BQAKIXAT.js → test-7GVQ3VMN.js} +16 -14
  444. package/dist/cli-bundle/chunks/{test-all-7LV3I6S5.js → test-all-3LF2OZD2.js} +23 -16
  445. package/dist/cli-bundle/chunks/test-all-3LF2OZD2.js.map +7 -0
  446. package/dist/cli-bundle/chunks/{test-all-TDYCCBA4.js → test-all-ODVADHV6.js} +24 -17
  447. package/dist/cli-bundle/chunks/test-all-ODVADHV6.js.map +1 -0
  448. package/dist/cli-bundle/chunks/{test-runs-E64M6XS3.js → test-runs-LYT6ZTNQ.js} +62 -65
  449. package/dist/cli-bundle/chunks/test-runs-LYT6ZTNQ.js.map +1 -0
  450. package/dist/cli-bundle/chunks/{test-runs-LXZLULCI.js → test-runs-RVP6VWN7.js} +61 -64
  451. package/dist/cli-bundle/chunks/test-runs-RVP6VWN7.js.map +7 -0
  452. package/dist/cli-bundle/chunks/update-MPGM6SBE.js +28 -0
  453. package/dist/cli-bundle/chunks/update-UN75XW3C.js +24 -0
  454. package/dist/cli-bundle/chunks/{update-many-F4IKDWZB.js → update-many-FCU6RKTO.js} +80 -34
  455. package/dist/cli-bundle/chunks/update-many-FCU6RKTO.js.map +1 -0
  456. package/dist/cli-bundle/chunks/{update-many-NTWZ5YT3.js → update-many-XSEQJ24X.js} +79 -33
  457. package/dist/cli-bundle/chunks/update-many-XSEQJ24X.js.map +7 -0
  458. package/dist/cli-bundle/chunks/{upgrade-37F7JKES.js → upgrade-A6TL3INC.js} +22 -8
  459. package/dist/cli-bundle/chunks/upgrade-A6TL3INC.js.map +7 -0
  460. package/dist/cli-bundle/chunks/{upgrade-L32JA4TZ.js → upgrade-FOB5LHO5.js} +23 -9
  461. package/dist/cli-bundle/chunks/upgrade-FOB5LHO5.js.map +1 -0
  462. package/dist/cli-bundle/chunks/{validate-46KCRHL7.js → validate-7BLDG3AT.js} +222 -31
  463. package/dist/cli-bundle/chunks/validate-7BLDG3AT.js.map +1 -0
  464. package/dist/cli-bundle/chunks/{validate-CRFMPTYD.js → validate-EHL3MI2V.js} +236 -31
  465. package/dist/cli-bundle/chunks/validate-EHL3MI2V.js.map +7 -0
  466. package/dist/cli-bundle/main.js +305 -140
  467. package/dist/cli-bundle/main.js.map +3 -3
  468. package/dist/cli.d.ts +10 -0
  469. package/dist/cli.js +21 -8
  470. package/dist/cli.js.map +1 -1
  471. package/dist/core/diagnostics/remediation.js +7 -2
  472. package/dist/core/diagnostics/remediation.js.map +1 -1
  473. package/dist/core/extensions/extension-capability-aliases.js +7 -33
  474. package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
  475. package/dist/core/extensions/extension-policy.js +14 -15
  476. package/dist/core/extensions/extension-policy.js.map +1 -1
  477. package/dist/core/extensions/item-fields.js +4 -5
  478. package/dist/core/extensions/item-fields.js.map +1 -1
  479. package/dist/core/extensions/loader.d.ts +75 -1
  480. package/dist/core/extensions/loader.js +56 -32
  481. package/dist/core/extensions/loader.js.map +1 -1
  482. package/dist/core/governance/content-fields.d.ts +84 -0
  483. package/dist/core/governance/content-fields.js +182 -0
  484. package/dist/core/governance/content-fields.js.map +1 -0
  485. package/dist/core/governance/issue-codes.d.ts +51 -0
  486. package/dist/core/governance/issue-codes.js +95 -0
  487. package/dist/core/governance/issue-codes.js.map +1 -0
  488. package/dist/core/governance/metadata-coverage.d.ts +168 -0
  489. package/dist/core/governance/metadata-coverage.js +362 -0
  490. package/dist/core/governance/metadata-coverage.js.map +1 -0
  491. package/dist/core/history/history-rewrite.d.ts +22 -0
  492. package/dist/core/history/history-rewrite.js +38 -2
  493. package/dist/core/history/history-rewrite.js.map +1 -1
  494. package/dist/core/history/history.d.ts +7 -0
  495. package/dist/core/history/history.js +6 -2
  496. package/dist/core/history/history.js.map +1 -1
  497. package/dist/core/io/body-file.d.ts +14 -0
  498. package/dist/core/io/body-file.js +47 -0
  499. package/dist/core/io/body-file.js.map +1 -0
  500. package/dist/core/item/item-format.d.ts +46 -1
  501. package/dist/core/item/item-format.js +51 -60
  502. package/dist/core/item/item-format.js.map +1 -1
  503. package/dist/core/item/parse.d.ts +9 -0
  504. package/dist/core/item/parse.js +10 -16
  505. package/dist/core/item/parse.js.map +1 -1
  506. package/dist/core/item/type-registry.d.ts +1 -0
  507. package/dist/core/item/type-registry.js +8 -10
  508. package/dist/core/item/type-registry.js.map +1 -1
  509. package/dist/core/lock/lock.d.ts +26 -0
  510. package/dist/core/lock/lock.js +10 -2
  511. package/dist/core/lock/lock.js.map +1 -1
  512. package/dist/core/output/output.d.ts +7 -0
  513. package/dist/core/output/output.js +6 -2
  514. package/dist/core/output/output.js.map +1 -1
  515. package/dist/core/schema/item-types-file.d.ts +25 -2
  516. package/dist/core/schema/item-types-file.js +78 -6
  517. package/dist/core/schema/item-types-file.js.map +1 -1
  518. package/dist/core/schema/runtime-schema.d.ts +7 -0
  519. package/dist/core/schema/runtime-schema.js +23 -16
  520. package/dist/core/schema/runtime-schema.js.map +1 -1
  521. package/dist/core/search/background-refresh.js +3 -3
  522. package/dist/core/search/background-refresh.js.map +1 -1
  523. package/dist/core/search/cache.d.ts +19 -1
  524. package/dist/core/search/cache.js +11 -3
  525. package/dist/core/search/cache.js.map +1 -1
  526. package/dist/core/search/corpus.d.ts +36 -2
  527. package/dist/core/search/corpus.js +120 -24
  528. package/dist/core/search/corpus.js.map +1 -1
  529. package/dist/core/search/providers.d.ts +19 -0
  530. package/dist/core/search/providers.js +19 -2
  531. package/dist/core/search/providers.js.map +1 -1
  532. package/dist/core/sentry/instrument.d.ts +1 -0
  533. package/dist/core/sentry/instrument.js +6 -2
  534. package/dist/core/sentry/instrument.js.map +1 -1
  535. package/dist/core/session/session-state.d.ts +16 -0
  536. package/dist/core/session/session-state.js +48 -0
  537. package/dist/core/session/session-state.js.map +1 -0
  538. package/dist/core/shared/constants.d.ts +8 -0
  539. package/dist/core/shared/constants.js +11 -2
  540. package/dist/core/shared/constants.js.map +1 -1
  541. package/dist/core/shared/errors.d.ts +3 -0
  542. package/dist/core/shared/errors.js +2 -2
  543. package/dist/core/shared/errors.js.map +1 -1
  544. package/dist/core/shared/text-normalization.js +4 -3
  545. package/dist/core/shared/text-normalization.js.map +1 -1
  546. package/dist/core/shared/time.d.ts +13 -0
  547. package/dist/core/shared/time.js +19 -7
  548. package/dist/core/shared/time.js.map +1 -1
  549. package/dist/core/store/item-store.d.ts +11 -0
  550. package/dist/core/store/item-store.js +16 -23
  551. package/dist/core/store/item-store.js.map +1 -1
  552. package/dist/core/store/settings-validator.d.ts +2 -0
  553. package/dist/core/store/settings-validator.js +25 -2
  554. package/dist/core/store/settings-validator.js.map +1 -1
  555. package/dist/core/store/settings.d.ts +60 -1
  556. package/dist/core/store/settings.js +100 -46
  557. package/dist/core/store/settings.js.map +1 -1
  558. package/dist/core/telemetry/observability.js +10 -8
  559. package/dist/core/telemetry/observability.js.map +1 -1
  560. package/dist/core/telemetry/runtime.d.ts +272 -1
  561. package/dist/core/telemetry/runtime.js +358 -37
  562. package/dist/core/telemetry/runtime.js.map +1 -1
  563. package/dist/core/test/background-runs.d.ts +35 -0
  564. package/dist/core/test/background-runs.js +72 -61
  565. package/dist/core/test/background-runs.js.map +1 -1
  566. package/dist/core/test/run-selectors.js +5 -4
  567. package/dist/core/test/run-selectors.js.map +1 -1
  568. package/dist/core/validate/estimate-defaults.d.ts +39 -0
  569. package/dist/core/validate/estimate-defaults.js +117 -0
  570. package/dist/core/validate/estimate-defaults.js.map +1 -0
  571. package/dist/core/validate/fix-planning.d.ts +21 -3
  572. package/dist/core/validate/fix-planning.js +31 -4
  573. package/dist/core/validate/fix-planning.js.map +1 -1
  574. package/dist/core/validate/missing-link-owners.d.ts +64 -0
  575. package/dist/core/validate/missing-link-owners.js +98 -0
  576. package/dist/core/validate/missing-link-owners.js.map +1 -0
  577. package/dist/mcp/server.d.ts +62 -0
  578. package/dist/mcp/server.js +71 -8
  579. package/dist/mcp/server.js.map +1 -1
  580. package/dist/mcp/tool-definitions.js +17 -4
  581. package/dist/mcp/tool-definitions.js.map +1 -1
  582. package/dist/sdk/cli-contracts/commander-types.js +13 -2
  583. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  584. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  585. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  586. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  587. package/dist/sdk/cli-contracts/tool-option-contracts.js +110 -2
  588. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  589. package/dist/sdk/cli-contracts/tool-parameter-tables.js +83 -8
  590. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  591. package/dist/sdk/cli-contracts.d.ts +28 -0
  592. package/dist/sdk/cli-contracts.js +164 -11
  593. package/dist/sdk/cli-contracts.js.map +1 -1
  594. package/dist/types.d.ts +17 -1
  595. package/dist/types.js +3 -3
  596. package/dist/types.js.map +1 -1
  597. package/docs/AGENT_GUIDE.md +15 -3
  598. package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
  599. package/docs/COMMANDS.md +136 -7
  600. package/docs/CONFIGURATION.md +52 -0
  601. package/docs/TESTING.md +6 -4
  602. package/package.json +6 -4
  603. package/packages/pm-calendar/extensions/calendar/runtime.js +6 -0
  604. package/packages/pm-calendar/extensions/calendar/runtime.ts +12 -0
  605. package/packages/pm-todos/extensions/todos/runtime.ts +5 -0
  606. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  607. package/plugins/pm-claude/README.md +6 -14
  608. package/plugins/pm-claude/commands/pm-init.md +1 -1
  609. package/plugins/pm-codex/README.md +1 -1
  610. package/scripts/bundle-cli.mjs +46 -37
  611. package/scripts/finalize-build.mjs +20 -9
  612. package/scripts/prepare-build-cache.mjs +27 -16
  613. package/dist/cli-bundle/chunks/activity-XZIUPGZH.js +0 -16
  614. package/dist/cli-bundle/chunks/aggregate-6OTS3AOO.js.map +0 -1
  615. package/dist/cli-bundle/chunks/aggregate-OD36DJU5.js.map +0 -7
  616. package/dist/cli-bundle/chunks/append-KG55G7S3.js.map +0 -1
  617. package/dist/cli-bundle/chunks/chunk-35P4GT6E.js.map +0 -7
  618. package/dist/cli-bundle/chunks/chunk-37CYVF73.js.map +0 -7
  619. package/dist/cli-bundle/chunks/chunk-3KLPFWZ4.js.map +0 -7
  620. package/dist/cli-bundle/chunks/chunk-4JCSYR6F.js +0 -138
  621. package/dist/cli-bundle/chunks/chunk-4JCSYR6F.js.map +0 -7
  622. package/dist/cli-bundle/chunks/chunk-4YFAGDRH.js.map +0 -7
  623. package/dist/cli-bundle/chunks/chunk-5SCT2JCT.js.map +0 -7
  624. package/dist/cli-bundle/chunks/chunk-73ZPG2I3.js.map +0 -7
  625. package/dist/cli-bundle/chunks/chunk-7AMK6DOW.js.map +0 -1
  626. package/dist/cli-bundle/chunks/chunk-7IYFN5R7.js.map +0 -1
  627. package/dist/cli-bundle/chunks/chunk-7UGSRQCL.js.map +0 -7
  628. package/dist/cli-bundle/chunks/chunk-A6LXQFO7.js.map +0 -1
  629. package/dist/cli-bundle/chunks/chunk-AVGHVVF7.js +0 -128
  630. package/dist/cli-bundle/chunks/chunk-AVGHVVF7.js.map +0 -1
  631. package/dist/cli-bundle/chunks/chunk-AX4GEVQC.js.map +0 -7
  632. package/dist/cli-bundle/chunks/chunk-CCX4RSYZ.js.map +0 -1
  633. package/dist/cli-bundle/chunks/chunk-CW6E4NAT.js.map +0 -1
  634. package/dist/cli-bundle/chunks/chunk-DY6C42S6.js.map +0 -7
  635. package/dist/cli-bundle/chunks/chunk-EWFY7SLA.js.map +0 -1
  636. package/dist/cli-bundle/chunks/chunk-F75JSIOZ.js.map +0 -1
  637. package/dist/cli-bundle/chunks/chunk-FDH2X65L.js.map +0 -1
  638. package/dist/cli-bundle/chunks/chunk-FY4SPXSC.js.map +0 -7
  639. package/dist/cli-bundle/chunks/chunk-GKIZW7SM.js.map +0 -7
  640. package/dist/cli-bundle/chunks/chunk-HHHJ2GI3.js.map +0 -7
  641. package/dist/cli-bundle/chunks/chunk-HI7STVF2.js.map +0 -1
  642. package/dist/cli-bundle/chunks/chunk-I53JBTJW.js.map +0 -7
  643. package/dist/cli-bundle/chunks/chunk-I7NYDZDV.js.map +0 -1
  644. package/dist/cli-bundle/chunks/chunk-IUKD4W6Z.js.map +0 -7
  645. package/dist/cli-bundle/chunks/chunk-KWAXVAXX.js.map +0 -7
  646. package/dist/cli-bundle/chunks/chunk-L5EPZQIC.js.map +0 -7
  647. package/dist/cli-bundle/chunks/chunk-OASDW5UI.js.map +0 -1
  648. package/dist/cli-bundle/chunks/chunk-OLKBSY4N.js.map +0 -7
  649. package/dist/cli-bundle/chunks/chunk-P5BJOMBB.js.map +0 -1
  650. package/dist/cli-bundle/chunks/chunk-PNYAAB4S.js.map +0 -1
  651. package/dist/cli-bundle/chunks/chunk-QKW5D45B.js.map +0 -1
  652. package/dist/cli-bundle/chunks/chunk-QNJSITCX.js.map +0 -1
  653. package/dist/cli-bundle/chunks/chunk-R4VWYWRN.js.map +0 -7
  654. package/dist/cli-bundle/chunks/chunk-RXAP6JL5.js.map +0 -7
  655. package/dist/cli-bundle/chunks/chunk-S2ZLDYGS.js.map +0 -1
  656. package/dist/cli-bundle/chunks/chunk-SO55HRA5.js.map +0 -1
  657. package/dist/cli-bundle/chunks/chunk-TK5VZFHY.js.map +0 -7
  658. package/dist/cli-bundle/chunks/chunk-TNAP7EJX.js.map +0 -7
  659. package/dist/cli-bundle/chunks/chunk-UIG4TW2H.js.map +0 -1
  660. package/dist/cli-bundle/chunks/chunk-UUWGCWBU.js.map +0 -1
  661. package/dist/cli-bundle/chunks/chunk-VFUZV5EB.js.map +0 -7
  662. package/dist/cli-bundle/chunks/chunk-WUNFKP7M.js.map +0 -1
  663. package/dist/cli-bundle/chunks/chunk-XJDGS74Y.js.map +0 -1
  664. package/dist/cli-bundle/chunks/chunk-XWMF3POR.js.map +0 -1
  665. package/dist/cli-bundle/chunks/chunk-ZMW77VWV.js.map +0 -1
  666. package/dist/cli-bundle/chunks/close-4FMAPEMY.js +0 -13
  667. package/dist/cli-bundle/chunks/close-many-AOD4HSAZ.js.map +0 -1
  668. package/dist/cli-bundle/chunks/close-many-XKAQY5CQ.js.map +0 -7
  669. package/dist/cli-bundle/chunks/comments-B4RWWDJT.js.map +0 -7
  670. package/dist/cli-bundle/chunks/comments-RN5TG4ZN.js.map +0 -1
  671. package/dist/cli-bundle/chunks/config-3JXJ3XZ7.js.map +0 -1
  672. package/dist/cli-bundle/chunks/config-FZ4UDC4B.js.map +0 -7
  673. package/dist/cli-bundle/chunks/context-L36PIN35.js.map +0 -7
  674. package/dist/cli-bundle/chunks/context-QBPO3BFM.js.map +0 -1
  675. package/dist/cli-bundle/chunks/contracts-2G66IGIA.js.map +0 -1
  676. package/dist/cli-bundle/chunks/contracts-PJCHYSO5.js.map +0 -7
  677. package/dist/cli-bundle/chunks/create-VWLWS34Z.js +0 -27
  678. package/dist/cli-bundle/chunks/deps-6TSPOSGU.js.map +0 -1
  679. package/dist/cli-bundle/chunks/files-FYP3MDPX.js.map +0 -7
  680. package/dist/cli-bundle/chunks/files-GUXUM2MB.js.map +0 -1
  681. package/dist/cli-bundle/chunks/get-PCHS7RA6.js.map +0 -1
  682. package/dist/cli-bundle/chunks/get-QARTE6BL.js.map +0 -7
  683. package/dist/cli-bundle/chunks/health-7MTXAVR2.js.map +0 -7
  684. package/dist/cli-bundle/chunks/health-E4D7KGHD.js.map +0 -1
  685. package/dist/cli-bundle/chunks/history-L2FQFRTU.js +0 -20
  686. package/dist/cli-bundle/chunks/history-compact-3EJ3L2O7.js.map +0 -1
  687. package/dist/cli-bundle/chunks/history-compact-LW27IPFK.js.map +0 -7
  688. package/dist/cli-bundle/chunks/history-redact-QWQCX5DZ.js +0 -19
  689. package/dist/cli-bundle/chunks/history-repair-OSQOKJ3E.js.map +0 -7
  690. package/dist/cli-bundle/chunks/history-repair-SBK7P34V.js.map +0 -1
  691. package/dist/cli-bundle/chunks/init-4BKRHGWW.js +0 -17
  692. package/dist/cli-bundle/chunks/learnings-HQXSSKZ5.js.map +0 -1
  693. package/dist/cli-bundle/chunks/learnings-XK3P4ZDR.js.map +0 -7
  694. package/dist/cli-bundle/chunks/list-6CL3XFT6.js +0 -23
  695. package/dist/cli-bundle/chunks/list-BYNN4ZEO.js +0 -19
  696. package/dist/cli-bundle/chunks/notes-5T6P7C5V.js.map +0 -1
  697. package/dist/cli-bundle/chunks/notes-U5FZCSBT.js.map +0 -7
  698. package/dist/cli-bundle/chunks/plan-2YTQYWGM.js.map +0 -1
  699. package/dist/cli-bundle/chunks/plan-7IVSICR6.js.map +0 -7
  700. package/dist/cli-bundle/chunks/register-list-query-4UPMHONX.js.map +0 -7
  701. package/dist/cli-bundle/chunks/register-list-query-7VOW2C3W.js.map +0 -1
  702. package/dist/cli-bundle/chunks/register-mutation-FARSGYRD.js.map +0 -7
  703. package/dist/cli-bundle/chunks/register-mutation-LJDNVREU.js.map +0 -1
  704. package/dist/cli-bundle/chunks/register-operations-FFTYAL42.js.map +0 -1
  705. package/dist/cli-bundle/chunks/register-operations-HCJKDUA6.js.map +0 -7
  706. package/dist/cli-bundle/chunks/register-setup-6AVIUOCC.js.map +0 -1
  707. package/dist/cli-bundle/chunks/register-setup-KVNLO5OJ.js.map +0 -7
  708. package/dist/cli-bundle/chunks/restore-CHIOQAQL.js +0 -17
  709. package/dist/cli-bundle/chunks/schema-76HDZJCC.js.map +0 -1
  710. package/dist/cli-bundle/chunks/schema-AINZ2IMM.js.map +0 -7
  711. package/dist/cli-bundle/chunks/search-JMLFQEPJ.js.map +0 -7
  712. package/dist/cli-bundle/chunks/search-NL3TSCYB.js.map +0 -1
  713. package/dist/cli-bundle/chunks/stats-BKXCBIGT.js.map +0 -7
  714. package/dist/cli-bundle/chunks/stats-UBD56TGK.js.map +0 -1
  715. package/dist/cli-bundle/chunks/telemetry-N454RHG5.js.map +0 -1
  716. package/dist/cli-bundle/chunks/telemetry-ZJXK3H7X.js.map +0 -7
  717. package/dist/cli-bundle/chunks/test-O74JFUH5.js +0 -32
  718. package/dist/cli-bundle/chunks/test-all-7LV3I6S5.js.map +0 -7
  719. package/dist/cli-bundle/chunks/test-all-TDYCCBA4.js.map +0 -1
  720. package/dist/cli-bundle/chunks/test-runs-E64M6XS3.js.map +0 -1
  721. package/dist/cli-bundle/chunks/test-runs-LXZLULCI.js.map +0 -7
  722. package/dist/cli-bundle/chunks/update-36JM7YZT.js +0 -21
  723. package/dist/cli-bundle/chunks/update-I246PCLO.js +0 -25
  724. package/dist/cli-bundle/chunks/update-many-F4IKDWZB.js.map +0 -1
  725. package/dist/cli-bundle/chunks/update-many-NTWZ5YT3.js.map +0 -7
  726. package/dist/cli-bundle/chunks/upgrade-37F7JKES.js.map +0 -7
  727. package/dist/cli-bundle/chunks/upgrade-L32JA4TZ.js.map +0 -1
  728. package/dist/cli-bundle/chunks/validate-46KCRHL7.js.map +0 -1
  729. package/dist/cli-bundle/chunks/validate-CRFMPTYD.js.map +0 -7
  730. /package/dist/cli-bundle/chunks/{activity-XZIUPGZH.js.map → activity-5P2KQCTH.js.map} +0 -0
  731. /package/dist/cli-bundle/chunks/{activity-XADJOG6G.js.map → activity-MJGTX4LO.js.map} +0 -0
  732. /package/dist/cli-bundle/chunks/{chunk-ATEES5SX.js.map → chunk-2JEGCDYT.js.map} +0 -0
  733. /package/dist/cli-bundle/chunks/{chunk-XUC4C4PT.js.map → chunk-3WAULYOY.js.map} +0 -0
  734. /package/dist/cli-bundle/chunks/{chunk-QJMGRZO2.js.map → chunk-7AGIXLNK.js.map} +0 -0
  735. /package/dist/cli-bundle/chunks/{chunk-KBPQHXWG.js.map → chunk-AERT7KT3.js.map} +0 -0
  736. /package/dist/cli-bundle/chunks/{chunk-ESANVZF4.js.map → chunk-E6J2PEK6.js.map} +0 -0
  737. /package/dist/cli-bundle/chunks/{chunk-VSRZRLG3.js.map → chunk-F2GC6L3N.js.map} +0 -0
  738. /package/dist/cli-bundle/chunks/{chunk-XTKJSVWH.js.map → chunk-M23HXJL3.js.map} +0 -0
  739. /package/dist/cli-bundle/chunks/{chunk-S26FESD4.js.map → chunk-MJZUZ2QE.js.map} +0 -0
  740. /package/dist/cli-bundle/chunks/{chunk-C6SAP27O.js.map → chunk-O46LTCXQ.js.map} +0 -0
  741. /package/dist/cli-bundle/chunks/{chunk-WPDMBIX6.js.map → chunk-OLTYNVJR.js.map} +0 -0
  742. /package/dist/cli-bundle/chunks/{chunk-R2OUQVBK.js.map → chunk-T5VU7ROQ.js.map} +0 -0
  743. /package/dist/cli-bundle/chunks/{chunk-P5U5EOMA.js.map → chunk-UBMCSJXX.js.map} +0 -0
  744. /package/dist/cli-bundle/chunks/{chunk-ZYNJNPYD.js.map → chunk-UUKORJSN.js.map} +0 -0
  745. /package/dist/cli-bundle/chunks/{chunk-VPEAS7PS.js.map → chunk-WZCQVABQ.js.map} +0 -0
  746. /package/dist/cli-bundle/chunks/{chunk-Y3YKK7CY.js.map → chunk-YGRPBFMA.js.map} +0 -0
  747. /package/dist/cli-bundle/chunks/{chunk-XMBI6TNW.js.map → chunk-ZJRDVYZI.js.map} +0 -0
  748. /package/dist/cli-bundle/chunks/{claim-2RDYMCTP.js.map → claim-4APLUXJW.js.map} +0 -0
  749. /package/dist/cli-bundle/chunks/{claim-MJ7DZFC3.js.map → claim-NEO7AGWH.js.map} +0 -0
  750. /package/dist/cli-bundle/chunks/{close-XLEKIQSW.js.map → close-3QABBNGU.js.map} +0 -0
  751. /package/dist/cli-bundle/chunks/{close-4FMAPEMY.js.map → close-ILMZR3D7.js.map} +0 -0
  752. /package/dist/cli-bundle/chunks/{copy-FWIVTLBO.js.map → copy-Q64T5FD4.js.map} +0 -0
  753. /package/dist/cli-bundle/chunks/{copy-ALU5WMHA.js.map → copy-SG34LCMU.js.map} +0 -0
  754. /package/dist/cli-bundle/chunks/{create-VWLWS34Z.js.map → create-F5HZX2S4.js.map} +0 -0
  755. /package/dist/cli-bundle/chunks/{create-5433DP3G.js.map → create-IPAX2SNL.js.map} +0 -0
  756. /package/dist/cli-bundle/chunks/{delete-Y2SGJBGY.js.map → delete-TLXR7LJ2.js.map} +0 -0
  757. /package/dist/cli-bundle/chunks/{delete-IYTIYAJS.js.map → delete-VH3L7DZ6.js.map} +0 -0
  758. /package/dist/cli-bundle/chunks/{docs-MXLGZUIT.js.map → docs-GWDEB7JH.js.map} +0 -0
  759. /package/dist/cli-bundle/chunks/{docs-I3BAF5WH.js.map → docs-RCLNSKID.js.map} +0 -0
  760. /package/dist/cli-bundle/chunks/{extension-Q34OEWO5.js.map → extension-5RN65LHT.js.map} +0 -0
  761. /package/dist/cli-bundle/chunks/{extension-WH2FOIOZ.js.map → extension-7KO2NX2A.js.map} +0 -0
  762. /package/dist/cli-bundle/chunks/{gc-KGQG66SA.js.map → gc-2FGKYRJ4.js.map} +0 -0
  763. /package/dist/cli-bundle/chunks/{gc-FENB2ESG.js.map → gc-5B6ABL3Z.js.map} +0 -0
  764. /package/dist/cli-bundle/chunks/{history-7WUAEWHW.js.map → history-QO4JVJJP.js.map} +0 -0
  765. /package/dist/cli-bundle/chunks/{history-L2FQFRTU.js.map → history-SSXGGTVZ.js.map} +0 -0
  766. /package/dist/cli-bundle/chunks/{history-redact-QWQCX5DZ.js.map → history-redact-VBH44Y7F.js.map} +0 -0
  767. /package/dist/cli-bundle/chunks/{history-redact-G72A4EJ4.js.map → history-redact-Z4P5MM3G.js.map} +0 -0
  768. /package/dist/cli-bundle/chunks/{init-4BKRHGWW.js.map → init-7FBQO77A.js.map} +0 -0
  769. /package/dist/cli-bundle/chunks/{init-S5WEGUJY.js.map → init-K6MSMB37.js.map} +0 -0
  770. /package/dist/cli-bundle/chunks/{list-BYNN4ZEO.js.map → list-7UE44A2R.js.map} +0 -0
  771. /package/dist/cli-bundle/chunks/{list-6CL3XFT6.js.map → list-UHMA3N2K.js.map} +0 -0
  772. /package/dist/cli-bundle/chunks/{restore-M6AFHMV4.js.map → restore-NNVPBBVJ.js.map} +0 -0
  773. /package/dist/cli-bundle/chunks/{restore-CHIOQAQL.js.map → restore-XXXLQ2XC.js.map} +0 -0
  774. /package/dist/cli-bundle/chunks/{test-O74JFUH5.js.map → test-6CZNIIGA.js.map} +0 -0
  775. /package/dist/cli-bundle/chunks/{test-BQAKIXAT.js.map → test-7GVQ3VMN.js.map} +0 -0
  776. /package/dist/cli-bundle/chunks/{update-I246PCLO.js.map → update-MPGM6SBE.js.map} +0 -0
  777. /package/dist/cli-bundle/chunks/{update-36JM7YZT.js.map → update-UN75XW3C.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../../cli/register-setup.ts"],"sourcesContent":["import type { Command } from \"commander\";\nimport fs from \"node:fs/promises\";\nimport type { GlobalOptions } from \"../core/shared/command-types.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport {\n collect,\n getGlobalOptions,\n printError,\n printResult,\n} from \"./registration-helpers.js\";\n\n\n\ntype ExtensionSubcommandAction =\n | \"init\"\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\";\n\ntype LifecycleCommandVocabulary = \"extension\" | \"package\";\n\nfunction normalizeExtensionOptions(\n options: Record<string, unknown>,\n forcedAction?: ExtensionSubcommandAction,\n vocabulary: LifecycleCommandVocabulary = \"extension\",\n): Record<string, unknown> {\n const isForcedAction = (action: ExtensionSubcommandAction): boolean => forcedAction === action;\n const readBoolean = (...keys: string[]): boolean => keys.some((key) => options[key] === true);\n const readString = (...keys: string[]): string | undefined => {\n for (const key of keys) {\n if (typeof options[key] === \"string\") {\n return options[key] as string;\n }\n }\n return undefined;\n };\n return {\n init: isForcedAction(\"init\") || readBoolean(\"init\"),\n scaffold: readBoolean(\"scaffold\"),\n install: isForcedAction(\"install\") || readBoolean(\"install\"),\n uninstall: isForcedAction(\"uninstall\") || readBoolean(\"uninstall\"),\n explore: isForcedAction(\"explore\") || readBoolean(\"explore\", \"list\"),\n manage: isForcedAction(\"manage\") || readBoolean(\"manage\"),\n reload: isForcedAction(\"reload\") || readBoolean(\"reload\"),\n doctor: isForcedAction(\"doctor\") || readBoolean(\"doctor\"),\n catalog: isForcedAction(\"catalog\") || readBoolean(\"catalog\"),\n adopt: isForcedAction(\"adopt\") || readBoolean(\"adopt\"),\n adoptAll: isForcedAction(\"adopt-all\") || readBoolean(\"adoptAll\", \"adopt_all\", \"adopt-all\"),\n activate: isForcedAction(\"activate\") || readBoolean(\"activate\"),\n deactivate: isForcedAction(\"deactivate\") || readBoolean(\"deactivate\"),\n project: readBoolean(\"project\"),\n local: readBoolean(\"local\"),\n global: readBoolean(\"global\"),\n gh: readString(\"gh\"),\n github: readString(\"github\"),\n ref: readString(\"ref\"),\n fields: readString(\"fields\"),\n detail: readString(\"detail\"),\n trace: readBoolean(\"trace\"),\n watch: readBoolean(\"watch\"),\n runtimeProbe: readBoolean(\"runtimeProbe\", \"runtime_probe\", \"runtime-probe\"),\n fixManagedState: readBoolean(\"fixManagedState\", \"fix_managed_state\", \"fix-managed-state\"),\n strictExit: readBoolean(\"strictExit\", \"strict_exit\", \"strict-exit\"),\n failOnWarn: readBoolean(\"failOnWarn\", \"fail_on_warn\", \"fail-on-warn\"),\n vocabulary,\n };\n}\n\nasync function looksLikeShellExpandedWildcard(targets: string[]): Promise<boolean> {\n if (targets.length <= 1) {\n return false;\n }\n const visibleEntries = (await fs.readdir(process.cwd()))\n .filter((entry) => !entry.startsWith(\".\"))\n .sort((left, right) => left.localeCompare(right));\n const normalizedTargets = [...targets].sort((left, right) => left.localeCompare(right));\n return (\n visibleEntries.length === normalizedTargets.length &&\n visibleEntries.every((entry, index) => entry === normalizedTargets[index])\n );\n}\n\nasync function normalizeInstallTargets(targets: string[] | string | undefined): Promise<string | undefined> {\n const normalizedTargets = (Array.isArray(targets) ? targets : typeof targets === \"string\" ? [targets] : [])\n .map((target) => target.trim())\n .filter((target) => target.length > 0);\n if (normalizedTargets.length <= 1) {\n return normalizedTargets[0];\n }\n if (await looksLikeShellExpandedWildcard(normalizedTargets)) {\n return \"*\";\n }\n throw new PmCliError(\n `Install accepts one package source at a time. To install bundled first-party packages, quote the wildcard: pm install '*'`,\n EXIT_CODE.USAGE,\n );\n}\n\nasync function executeExtensionCommand(\n target: string | undefined,\n options: Record<string, unknown>,\n command: Command,\n forcedAction?: ExtensionSubcommandAction,\n vocabulary: LifecycleCommandVocabulary = \"extension\",\n): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const normalizedOptions = normalizeExtensionOptions(options, forcedAction, vocabulary);\n const { runExtension } = await import(\"./commands/extension.js\");\n const result = await runExtension(target, normalizedOptions, globalOptions);\n printResult(result, globalOptions);\n const strictExit = Boolean(normalizedOptions.strictExit) || Boolean(normalizedOptions.failOnWarn);\n if (result.action === \"doctor\" && strictExit) {\n const detailsRecord = result.details as Record<string, unknown>;\n const summary = (detailsRecord.summary ?? null) as Record<string, unknown> | null;\n const summaryStatus = summary && typeof summary.status === \"string\" ? summary.status : undefined;\n const shouldFail = summaryStatus ? summaryStatus !== \"ok\" : result.warnings.length > 0;\n if (shouldFail) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n }\n if (globalOptions.profile) {\n printError(`profile:command=extension took_ms=${Date.now() - startedAt}`);\n }\n}\n\nfunction addExtensionScopeOptions<T extends Command>(command: T): T {\n return command\n .option(\"--project\", \"Use project extension scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global extension scope\");\n}\n\nfunction addPackageScopeOptions<T extends Command>(command: T): T {\n return command\n .option(\"--project\", \"Use project package scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global package scope\");\n}\n\nfunction addLifecycleScopeOptions<T extends Command>(command: T, vocabulary: LifecycleCommandVocabulary): T {\n return vocabulary === \"package\" ? addPackageScopeOptions(command) : addExtensionScopeOptions(command);\n}\n\nfunction registerLifecycleCommand(\n program: Command,\n vocabulary: LifecycleCommandVocabulary,\n): void {\n const noun = vocabulary === \"package\" ? \"package\" : \"extension\";\n const plural = vocabulary === \"package\" ? \"packages\" : \"extensions\";\n const commandName = vocabulary;\n const lifecycleCommand = program\n .command(commandName)\n .argument(\"[target]\", `${noun[0]!.toUpperCase()}${noun.slice(1)} source/name or scaffold target path (for --init/--scaffold)`)\n .option(\"--init\", `Generate a starter ${noun} scaffold at target path`)\n .option(\"--scaffold\", \"Alias for --init\")\n .option(\"--install\", `Install ${noun} from local path, bundled alias, npm: source, wildcard, or GitHub source`)\n .option(\"--uninstall\", `Uninstall an installed ${noun}`)\n .option(\"--explore\", `List discovered ${plural} in selected scope`)\n .option(\"--list\", \"Alias for --explore\")\n .option(\"--manage\", `List managed ${plural} with update-check metadata`)\n .option(\"--reload\", `Reload ${plural} with cache-busted module imports`)\n .option(\"--watch\", \"Use watch mode with --reload\")\n .option(\"--doctor\", `Run consolidated ${noun} diagnostics (summary/deep modes)`)\n .option(\"--catalog\", `List bundled first-party ${noun} catalog metadata`)\n .option(\"--adopt\", `Adopt an existing unmanaged ${noun} into managed metadata`)\n .option(\"--adopt-all\", `Adopt all unmanaged ${plural} into managed metadata`)\n .option(\"--activate\", `Activate a ${noun} in selected scope settings`)\n .option(\"--deactivate\", `Deactivate a ${noun} in selected scope settings`)\n .option(\"--project\", `Use project ${noun} scope (default)`)\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", `Use global ${noun} scope`)\n .option(\"--gh <github-source>\", \"Install from GitHub shorthand source (owner/repo[/path])\")\n .option(\"--github <github-source>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .option(\"--detail <mode>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} diagnostics detail mode (summary|deep)`)\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", `Adopt unmanaged ${plural} before diagnostics/update checks`)\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(\n vocabulary === \"package\"\n ? \"Manage package lifecycle operations for project or global scope. Backward-compatible with extension packages.\"\n : \"Manage extension lifecycle operations for project or global scope.\",\n )\n .action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, undefined, vocabulary);\n });\n\n if (vocabulary === \"package\") {\n lifecycleCommand.alias(\"packages\");\n }\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"init\")\n .alias(\"scaffold\")\n .argument(\"<target>\", `Scaffold target directory path`)\n .description(\n vocabulary === \"package\"\n ? \"Generate a starter package scaffold with package metadata, manifest, and entrypoint.\"\n : \"Generate a starter extension scaffold with manifest and entrypoint.\",\n ),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"init\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"install\")\n .argument(\"[targets...]\", `${noun[0]!.toUpperCase()}${noun.slice(1)} source (local path, bundled alias, npm: source, wildcard, or GitHub source)`)\n .option(\"--gh <github-source>\", \"Install from GitHub shorthand source (owner/repo[/path])\")\n .option(\"--github <github-source>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .description(`Install ${noun} from local path, bundled alias, npm: source, wildcard, or GitHub source.`),\n vocabulary,\n ).action(async (targets: string[] | undefined, _options: Record<string, unknown>, command) => {\n const target = await normalizeInstallTargets(targets);\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"install\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"uninstall\").argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`).description(`Uninstall an installed ${noun}.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"uninstall\", vocabulary);\n });\n\n addLifecycleScopeOptions(lifecycleCommand.command(\"explore\").description(`List discovered ${plural} in selected scope.`), vocabulary).action(\n async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"explore\", vocabulary);\n },\n );\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"manage\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", `Adopt unmanaged ${plural} before diagnostics/update checks`)\n .description(`List managed ${plural} with update-check metadata.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"manage\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"reload\")\n .option(\"--watch\", \"Use watch mode for repeated reload checks\")\n .description(`Reload ${plural} with cache-busted module imports.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"reload\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"doctor\")\n .option(\"--detail <mode>\", `Detail mode for ${noun} diagnostics (summary|deep)`)\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--fix-managed-state\", `Adopt unmanaged ${plural} before diagnostics/update checks`)\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(`Run consolidated ${noun} diagnostics (summary/deep modes).`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"doctor\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"catalog\")\n .alias(\"list\")\n .option(\"--fields <value>\", \"Render compact comma-separated catalog fields, for example: alias,installed,install_command\")\n .description(`List bundled first-party ${noun} catalog metadata.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"catalog\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"adopt\")\n .argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`)\n .option(\"--gh <owner/repo[/path]>\", `GitHub provenance shorthand for adopted ${noun}`)\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub shorthand source\")\n .description(`Adopt an existing unmanaged ${noun} into managed metadata.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"adopt\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"adopt-all\").description(`Adopt all unmanaged ${plural} into managed metadata.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"adopt-all\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"activate\").argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`).description(`Activate a ${noun} in selected scope settings.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"activate\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"deactivate\").argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`).description(`Deactivate a ${noun} in selected scope settings.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"deactivate\", vocabulary);\n });\n}\n\nexport function registerSetupCommands(program: Command): void {\n program\n .command(\"init\")\n .argument(\"[prefix]\", \"Optional id prefix\")\n .option(\"--preset <value>\", \"Governance preset for new setups: minimal|default|strict\")\n .option(\"--defaults\", \"Use non-interactive setup defaults without opening the wizard\")\n .option(\"-y, --yes\", \"Alias for --defaults (non-interactive setup)\")\n .option(\"--author <value>\", \"Set the default mutation author for this project\")\n .option(\"--agent-guidance <mode>\", \"Agent guidance mode: ask|add|skip|status\")\n .option(\"--type-preset <name>\", \"Register domain item types during init: agile|ops|research\")\n .option(\"--with-packages\", \"Install all bundled first-party packages during initialization\")\n .option(\"--force\", \"Allow initializing tracker files directly in a directory that looks like a workspace root\")\n .option(\"--verbose\", \"Include the full resolved settings tree in the output (default output is a concise summary)\")\n .description(\"Initialize pm storage and defaults for the current workspace.\")\n .action(async (prefix: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runInit, summarizeInitResult } = await import(\"./commands/init.js\");\n const result = await runInit(\n prefix,\n globalOptions,\n {\n preset: typeof options.preset === \"string\" ? options.preset : undefined,\n defaults: options.defaults === true || options.yes === true,\n author: typeof options.author === \"string\" ? options.author : undefined,\n agentGuidance: typeof options.agentGuidance === \"string\" ? options.agentGuidance : undefined,\n typePreset: typeof options.typePreset === \"string\" ? options.typePreset : undefined,\n withPackages: options.withPackages === true,\n force: options.force === true,\n },\n );\n // Default (toon) output is a concise summary to minimize agent token cost.\n // --json consumers and --verbose both receive the full settings tree.\n const verbose = options.verbose === true;\n const emitFullTree = verbose || globalOptions.json === true;\n printResult(emitFullTree ? result : summarizeInitResult(result), globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=init took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"config\")\n .argument(\"[scope]\", \"Config scope: project|global, or action shorthand list|export|get|set for project scope\")\n .argument(\"[action]\", \"Config action: get|set|list|export\")\n .argument(\n \"[key]\",\n \"Config key for get|set: definition-of-done|item-format|history-missing-stream-policy|sprint-release-format-policy|parent-reference-policy|metadata-validation-profile|metadata-required-fields|lifecycle-stale-blocker-reason-patterns|lifecycle-closure-like-blocked-reason-patterns|lifecycle-closure-like-resolution-patterns|lifecycle-closure-like-actual-result-patterns|governance-preset|governance-ownership-enforcement|governance-create-mode-default|governance-close-validation-default|governance-require-close-reason|governance-parent-reference-policy|governance-metadata-validation-profile|governance-force-required-for-stale-lock|test-result-tracking|telemetry-tracking|context\",\n )\n .argument(\n \"[value]\",\n \"Optional value for set: routed to the right typed flag by key (e.g. config set telemetry-tracking off, config set item-format toon, config set definition-of-done \\\"Tests pass\\\"). Equivalent to --policy/--format/--criterion. context keys still require --default-depth/--section-* flags.\",\n )\n .option(\n \"--criterion <text>\",\n \"Criteria value for definition-of-done, metadata-required-fields, or lifecycle pattern keys (repeatable for set)\",\n collect,\n )\n .option(\"--clear-criteria\", \"Clear criteria-list keys for config set operations\")\n .option(\"--format <value>\", \"Item format for item-format key: toon\")\n .option(\n \"--policy <value>\",\n \"Policy key values: history-missing-stream-policy=auto_create|strict_error; sprint-release-format-policy=warn|strict_error; parent-reference-policy=warn|strict_error; governance-preset=minimal|default|strict|custom; governance-ownership-enforcement=none|warn|strict; governance-create-mode-default=progressive|strict; governance-close-validation-default=off|warn|strict; governance-require-close-reason=enabled|disabled; governance-parent-reference-policy=warn|strict_error; governance-metadata-validation-profile=core|strict|custom; governance-force-required-for-stale-lock=enabled|disabled; test-result-tracking=enabled|disabled; telemetry-tracking=enabled|disabled\",\n )\n .option(\n \"--value <value>\",\n \"Value for nested leaf settings keys (search_provider, search_mutation_refresh_policy, search_query_expansion_enabled, search_rerank_enabled, openai_base_url, ollama_model, vector_store_adapter, vector_store_collection_name, qdrant_url, lancedb_path, etc.). Equivalent to the positional value.\",\n )\n .option(\"--default-depth <value>\", \"Context default depth: brief|standard|deep\")\n .option(\"--activity-limit <n>\", \"Context default activity limit\")\n .option(\"--stale-threshold-days <n>\", \"Context staleness cutoff in days\")\n .option(\"--section-hierarchy <value>\", \"Enable/disable context hierarchy section (true|false)\")\n .option(\"--section-activity <value>\", \"Enable/disable context activity section (true|false)\")\n .option(\"--section-progress <value>\", \"Enable/disable context progress section (true|false)\")\n .option(\"--section-blockers <value>\", \"Enable/disable context blockers section (true|false)\")\n .option(\"--section-files <value>\", \"Enable/disable context files section (true|false)\")\n .option(\"--section-workload <value>\", \"Enable/disable context workload section (true|false)\")\n .option(\"--section-staleness <value>\", \"Enable/disable context staleness section (true|false)\")\n .option(\"--section-tests <value>\", \"Enable/disable context tests section (true|false)\")\n .description(\"Read or update pm settings for the current workspace or global profile.\")\n .action(async (scope: string | undefined, action: string | undefined, key: string | undefined, value: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const criteria = Array.isArray(options.criterion) ? (options.criterion as string[]) : [];\n const { runConfig } = await import(\"./commands/config.js\");\n const actionShorthands = new Set([\"get\", \"set\", \"list\", \"export\"]);\n const scopeShorthand = scope !== undefined && actionShorthands.has(scope);\n const resolvedScope = scopeShorthand ? \"project\" : (scope ?? \"project\");\n const resolvedAction = scopeShorthand ? scope : (action ?? \"list\");\n // When scope is an action shorthand, positionals shift left by one:\n // [set] [key] [value] -> action=set, key=key, value=value.\n const resolvedKey = scopeShorthand ? action : key;\n const resolvedValue = scopeShorthand ? key : value;\n const result = await runConfig(\n resolvedScope,\n resolvedAction,\n resolvedKey,\n {\n criterion: criteria,\n format: typeof options.format === \"string\" ? options.format : undefined,\n policy: typeof options.policy === \"string\" ? options.policy : undefined,\n value: typeof options.value === \"string\" ? options.value : undefined,\n clearCriteria: options.clearCriteria === true,\n defaultDepth: typeof options.defaultDepth === \"string\" ? options.defaultDepth : undefined,\n activityLimit: typeof options.activityLimit === \"string\" ? options.activityLimit : undefined,\n staleThresholdDays: typeof options.staleThresholdDays === \"string\" ? options.staleThresholdDays : undefined,\n sectionHierarchy: typeof options.sectionHierarchy === \"string\" ? options.sectionHierarchy : undefined,\n sectionActivity: typeof options.sectionActivity === \"string\" ? options.sectionActivity : undefined,\n sectionProgress: typeof options.sectionProgress === \"string\" ? options.sectionProgress : undefined,\n sectionBlockers: typeof options.sectionBlockers === \"string\" ? options.sectionBlockers : undefined,\n sectionFiles: typeof options.sectionFiles === \"string\" ? options.sectionFiles : undefined,\n sectionWorkload: typeof options.sectionWorkload === \"string\" ? options.sectionWorkload : undefined,\n sectionStaleness: typeof options.sectionStaleness === \"string\" ? options.sectionStaleness : undefined,\n sectionTests: typeof options.sectionTests === \"string\" ? options.sectionTests : undefined,\n },\n globalOptions,\n typeof resolvedValue === \"string\" ? resolvedValue : undefined,\n );\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=config took_ms=${Date.now() - startedAt}`);\n }\n });\n\n registerLifecycleCommand(program, \"extension\");\n registerLifecycleCommand(program, \"package\");\n\n addPackageScopeOptions(\n program\n .command(\"install\")\n .argument(\"[targets...]\", \"Package source (local path, bundled alias, npm: source, wildcard, or GitHub source)\")\n .option(\"--gh <github-source>\", \"Install from GitHub shorthand source (owner/repo[/path])\")\n .option(\"--github <github-source>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .description(\"Install a pm package into the project package scope by default.\"),\n ).action(async (targets: string[] | undefined, _options: Record<string, unknown>, command) => {\n const target = await normalizeInstallTargets(targets);\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"install\", \"package\");\n });\n\n addPackageScopeOptions(\n program\n .command(\"upgrade\")\n .argument(\"[target]\", \"Optional managed package name/source to upgrade; omit to upgrade pm CLI and all managed packages\")\n .option(\"--dry-run\", \"Plan CLI/package upgrades without running npm or reinstalling packages\")\n .option(\"--cli-only\", \"Upgrade only the pm CLI/SDK npm package\")\n .option(\"--packages-only\", \"Upgrade only managed pm packages\")\n .option(\"--repair\", \"Force npm global reinstall when upgrading the pm CLI/SDK\")\n .option(\"--tag <value>\", \"npm dist-tag/version for CLI and registry package upgrades\")\n .option(\"--package-name <value>\", \"Override the CLI package name for self-upgrade testing\")\n .description(\"Upgrade the pm CLI/SDK and refresh managed installable pm packages.\"),\n ).action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runUpgrade } = await import(\"./commands/upgrade.js\");\n const result = await runUpgrade(target, command.opts() as Record<string, unknown>, globalOptions);\n printResult(result, globalOptions);\n if (!result.ok) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n if (globalOptions.profile) {\n printError(`profile:command=upgrade took_ms=${Date.now() - startedAt}`);\n }\n });\n}\n"],"names":[],"mappings":"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","debugId":"6ca6e3b9-4c9a-5195-93af-354cb6b82ce2"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../../cli/register-setup.ts"],
4
- "sourcesContent": ["import type { Command } from \"commander\";\nimport fs from \"node:fs/promises\";\nimport type { GlobalOptions } from \"../core/shared/command-types.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport {\n collect,\n getGlobalOptions,\n printError,\n printResult,\n} from \"./registration-helpers.js\";\n\n\n\ntype ExtensionSubcommandAction =\n | \"init\"\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\";\n\ntype LifecycleCommandVocabulary = \"extension\" | \"package\";\n\nfunction normalizeExtensionOptions(\n options: Record<string, unknown>,\n forcedAction?: ExtensionSubcommandAction,\n vocabulary: LifecycleCommandVocabulary = \"extension\",\n): Record<string, unknown> {\n const isForcedAction = (action: ExtensionSubcommandAction): boolean => forcedAction === action;\n const readBoolean = (...keys: string[]): boolean => keys.some((key) => options[key] === true);\n const readString = (...keys: string[]): string | undefined => {\n for (const key of keys) {\n if (typeof options[key] === \"string\") {\n return options[key] as string;\n }\n }\n return undefined;\n };\n return {\n init: isForcedAction(\"init\") || readBoolean(\"init\"),\n scaffold: readBoolean(\"scaffold\"),\n install: isForcedAction(\"install\") || readBoolean(\"install\"),\n uninstall: isForcedAction(\"uninstall\") || readBoolean(\"uninstall\"),\n explore: isForcedAction(\"explore\") || readBoolean(\"explore\", \"list\"),\n manage: isForcedAction(\"manage\") || readBoolean(\"manage\"),\n reload: isForcedAction(\"reload\") || readBoolean(\"reload\"),\n doctor: isForcedAction(\"doctor\") || readBoolean(\"doctor\"),\n catalog: isForcedAction(\"catalog\") || readBoolean(\"catalog\"),\n adopt: isForcedAction(\"adopt\") || readBoolean(\"adopt\"),\n adoptAll: isForcedAction(\"adopt-all\") || readBoolean(\"adoptAll\", \"adopt_all\", \"adopt-all\"),\n activate: isForcedAction(\"activate\") || readBoolean(\"activate\"),\n deactivate: isForcedAction(\"deactivate\") || readBoolean(\"deactivate\"),\n project: readBoolean(\"project\"),\n local: readBoolean(\"local\"),\n global: readBoolean(\"global\"),\n gh: readString(\"gh\"),\n github: readString(\"github\"),\n ref: readString(\"ref\"),\n fields: readString(\"fields\"),\n detail: readString(\"detail\"),\n trace: readBoolean(\"trace\"),\n watch: readBoolean(\"watch\"),\n runtimeProbe: readBoolean(\"runtimeProbe\", \"runtime_probe\", \"runtime-probe\"),\n fixManagedState: readBoolean(\"fixManagedState\", \"fix_managed_state\", \"fix-managed-state\"),\n strictExit: readBoolean(\"strictExit\", \"strict_exit\", \"strict-exit\"),\n failOnWarn: readBoolean(\"failOnWarn\", \"fail_on_warn\", \"fail-on-warn\"),\n vocabulary,\n };\n}\n\nasync function looksLikeShellExpandedWildcard(targets: string[]): Promise<boolean> {\n if (targets.length <= 1) {\n return false;\n }\n const visibleEntries = (await fs.readdir(process.cwd()))\n .filter((entry) => !entry.startsWith(\".\"))\n .sort((left, right) => left.localeCompare(right));\n const normalizedTargets = [...targets].sort((left, right) => left.localeCompare(right));\n return (\n visibleEntries.length === normalizedTargets.length &&\n visibleEntries.every((entry, index) => entry === normalizedTargets[index])\n );\n}\n\nasync function normalizeInstallTargets(targets: string[] | string | undefined): Promise<string | undefined> {\n const normalizedTargets = (Array.isArray(targets) ? targets : typeof targets === \"string\" ? [targets] : [])\n .map((target) => target.trim())\n .filter((target) => target.length > 0);\n if (normalizedTargets.length <= 1) {\n return normalizedTargets[0];\n }\n if (await looksLikeShellExpandedWildcard(normalizedTargets)) {\n return \"*\";\n }\n throw new PmCliError(\n `Install accepts one package source at a time. To install bundled first-party packages, quote the wildcard: pm install '*'`,\n EXIT_CODE.USAGE,\n );\n}\n\nasync function executeExtensionCommand(\n target: string | undefined,\n options: Record<string, unknown>,\n command: Command,\n forcedAction?: ExtensionSubcommandAction,\n vocabulary: LifecycleCommandVocabulary = \"extension\",\n): Promise<void> {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const normalizedOptions = normalizeExtensionOptions(options, forcedAction, vocabulary);\n const { runExtension } = await import(\"./commands/extension.js\");\n const result = await runExtension(target, normalizedOptions, globalOptions);\n printResult(result, globalOptions);\n const strictExit = Boolean(normalizedOptions.strictExit) || Boolean(normalizedOptions.failOnWarn);\n if (result.action === \"doctor\" && strictExit) {\n const detailsRecord = result.details as Record<string, unknown>;\n const summary = (detailsRecord.summary ?? null) as Record<string, unknown> | null;\n const summaryStatus = summary && typeof summary.status === \"string\" ? summary.status : undefined;\n const shouldFail = summaryStatus ? summaryStatus !== \"ok\" : result.warnings.length > 0;\n if (shouldFail) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n }\n if (globalOptions.profile) {\n printError(`profile:command=extension took_ms=${Date.now() - startedAt}`);\n }\n}\n\nfunction addExtensionScopeOptions<T extends Command>(command: T): T {\n return command\n .option(\"--project\", \"Use project extension scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global extension scope\");\n}\n\nfunction addPackageScopeOptions<T extends Command>(command: T): T {\n return command\n .option(\"--project\", \"Use project package scope (default)\")\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", \"Use global package scope\");\n}\n\nfunction addLifecycleScopeOptions<T extends Command>(command: T, vocabulary: LifecycleCommandVocabulary): T {\n return vocabulary === \"package\" ? addPackageScopeOptions(command) : addExtensionScopeOptions(command);\n}\n\nfunction registerLifecycleCommand(\n program: Command,\n vocabulary: LifecycleCommandVocabulary,\n): void {\n const noun = vocabulary === \"package\" ? \"package\" : \"extension\";\n const plural = vocabulary === \"package\" ? \"packages\" : \"extensions\";\n const commandName = vocabulary;\n const lifecycleCommand = program\n .command(commandName)\n .argument(\"[target]\", `${noun[0]!.toUpperCase()}${noun.slice(1)} source/name or scaffold target path (for --init/--scaffold)`)\n .option(\"--init\", `Generate a starter ${noun} scaffold at target path`)\n .option(\"--scaffold\", \"Alias for --init\")\n .option(\"--install\", `Install ${noun} from local path, bundled alias, npm: source, wildcard, or GitHub source`)\n .option(\"--uninstall\", `Uninstall an installed ${noun}`)\n .option(\"--explore\", `List discovered ${plural} in selected scope`)\n .option(\"--list\", \"Alias for --explore\")\n .option(\"--manage\", `List managed ${plural} with update-check metadata`)\n .option(\"--reload\", `Reload ${plural} with cache-busted module imports`)\n .option(\"--watch\", \"Use watch mode with --reload\")\n .option(\"--doctor\", `Run consolidated ${noun} diagnostics (summary/deep modes)`)\n .option(\"--catalog\", `List bundled first-party ${noun} catalog metadata`)\n .option(\"--adopt\", `Adopt an existing unmanaged ${noun} into managed metadata`)\n .option(\"--adopt-all\", `Adopt all unmanaged ${plural} into managed metadata`)\n .option(\"--activate\", `Activate a ${noun} in selected scope settings`)\n .option(\"--deactivate\", `Deactivate a ${noun} in selected scope settings`)\n .option(\"--project\", `Use project ${noun} scope (default)`)\n .option(\"--local\", \"Alias for --project\")\n .option(\"--global\", `Use global ${noun} scope`)\n .option(\"--gh <github-source>\", \"Install from GitHub shorthand source (owner/repo[/path])\")\n .option(\"--github <github-source>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .option(\"--detail <mode>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} diagnostics detail mode (summary|deep)`)\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", `Adopt unmanaged ${plural} before diagnostics/update checks`)\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(\n vocabulary === \"package\"\n ? \"Manage package lifecycle operations for project or global scope. Backward-compatible with extension packages.\"\n : \"Manage extension lifecycle operations for project or global scope.\",\n )\n .action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, undefined, vocabulary);\n });\n\n if (vocabulary === \"package\") {\n lifecycleCommand.alias(\"packages\");\n }\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"init\")\n .alias(\"scaffold\")\n .argument(\"<target>\", `Scaffold target directory path`)\n .description(\n vocabulary === \"package\"\n ? \"Generate a starter package scaffold with package metadata, manifest, and entrypoint.\"\n : \"Generate a starter extension scaffold with manifest and entrypoint.\",\n ),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"init\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"install\")\n .argument(\"[targets...]\", `${noun[0]!.toUpperCase()}${noun.slice(1)} source (local path, bundled alias, npm: source, wildcard, or GitHub source)`)\n .option(\"--gh <github-source>\", \"Install from GitHub shorthand source (owner/repo[/path])\")\n .option(\"--github <github-source>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .description(`Install ${noun} from local path, bundled alias, npm: source, wildcard, or GitHub source.`),\n vocabulary,\n ).action(async (targets: string[] | undefined, _options: Record<string, unknown>, command) => {\n const target = await normalizeInstallTargets(targets);\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"install\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"uninstall\").argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`).description(`Uninstall an installed ${noun}.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"uninstall\", vocabulary);\n });\n\n addLifecycleScopeOptions(lifecycleCommand.command(\"explore\").description(`List discovered ${plural} in selected scope.`), vocabulary).action(\n async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"explore\", vocabulary);\n },\n );\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"manage\")\n .option(\"--runtime-probe\", \"Opt-in runtime activation probe for manage output parity\")\n .option(\"--fix-managed-state\", `Adopt unmanaged ${plural} before diagnostics/update checks`)\n .description(`List managed ${plural} with update-check metadata.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"manage\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"reload\")\n .option(\"--watch\", \"Use watch mode for repeated reload checks\")\n .description(`Reload ${plural} with cache-busted module imports.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"reload\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"doctor\")\n .option(\"--detail <mode>\", `Detail mode for ${noun} diagnostics (summary|deep)`)\n .option(\"--trace\", \"Include actionable registration traces in doctor deep diagnostics\")\n .option(\"--fix-managed-state\", `Adopt unmanaged ${plural} before diagnostics/update checks`)\n .option(\"--strict-exit\", \"Return non-zero exit when doctor warnings are present (ok=false)\")\n .option(\"--fail-on-warn\", \"Alias for --strict-exit (doctor)\")\n .description(`Run consolidated ${noun} diagnostics (summary/deep modes).`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"doctor\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"catalog\")\n .alias(\"list\")\n .option(\"--fields <value>\", \"Render compact comma-separated catalog fields, for example: alias,installed,install_command\")\n .description(`List bundled first-party ${noun} catalog metadata.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"catalog\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand\n .command(\"adopt\")\n .argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`)\n .option(\"--gh <owner/repo[/path]>\", `GitHub provenance shorthand for adopted ${noun}`)\n .option(\"--github <owner/repo[/path]>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub shorthand source\")\n .description(`Adopt an existing unmanaged ${noun} into managed metadata.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"adopt\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"adopt-all\").description(`Adopt all unmanaged ${plural} into managed metadata.`),\n vocabulary,\n ).action(async (_options: Record<string, unknown>, command) => {\n await executeExtensionCommand(undefined, command.optsWithGlobals() as Record<string, unknown>, command, \"adopt-all\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"activate\").argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`).description(`Activate a ${noun} in selected scope settings.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"activate\", vocabulary);\n });\n\n addLifecycleScopeOptions(\n lifecycleCommand.command(\"deactivate\").argument(\"<target>\", `${noun[0]!.toUpperCase()}${noun.slice(1)} name`).description(`Deactivate a ${noun} in selected scope settings.`),\n vocabulary,\n ).action(async (target: string, _options: Record<string, unknown>, command) => {\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"deactivate\", vocabulary);\n });\n}\n\nexport function registerSetupCommands(program: Command): void {\n program\n .command(\"init\")\n .argument(\"[prefix]\", \"Optional id prefix\")\n .option(\"--preset <value>\", \"Governance preset for new setups: minimal|default|strict\")\n .option(\"--defaults\", \"Use non-interactive setup defaults without opening the wizard\")\n .option(\"-y, --yes\", \"Alias for --defaults (non-interactive setup)\")\n .option(\"--author <value>\", \"Set the default mutation author for this project\")\n .option(\"--agent-guidance <mode>\", \"Agent guidance mode: ask|add|skip|status\")\n .option(\"--type-preset <name>\", \"Register domain item types during init: agile|ops|research\")\n .option(\"--with-packages\", \"Install all bundled first-party packages during initialization\")\n .option(\"--force\", \"Allow initializing tracker files directly in a directory that looks like a workspace root\")\n .option(\"--verbose\", \"Include the full resolved settings tree in the output (default output is a concise summary)\")\n .description(\"Initialize pm storage and defaults for the current workspace.\")\n .action(async (prefix: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runInit, summarizeInitResult } = await import(\"./commands/init.js\");\n const result = await runInit(\n prefix,\n globalOptions,\n {\n preset: typeof options.preset === \"string\" ? options.preset : undefined,\n defaults: options.defaults === true || options.yes === true,\n author: typeof options.author === \"string\" ? options.author : undefined,\n agentGuidance: typeof options.agentGuidance === \"string\" ? options.agentGuidance : undefined,\n typePreset: typeof options.typePreset === \"string\" ? options.typePreset : undefined,\n withPackages: options.withPackages === true,\n force: options.force === true,\n },\n );\n // Default (toon) output is a concise summary to minimize agent token cost.\n // --json consumers and --verbose both receive the full settings tree.\n const verbose = options.verbose === true;\n const emitFullTree = verbose || globalOptions.json === true;\n printResult(emitFullTree ? result : summarizeInitResult(result), globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=init took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"config\")\n .argument(\"[scope]\", \"Config scope: project|global, or action shorthand list|export|get|set for project scope\")\n .argument(\"[action]\", \"Config action: get|set|list|export\")\n .argument(\n \"[key]\",\n \"Config key for get|set: definition-of-done|item-format|history-missing-stream-policy|sprint-release-format-policy|parent-reference-policy|metadata-validation-profile|metadata-required-fields|lifecycle-stale-blocker-reason-patterns|lifecycle-closure-like-blocked-reason-patterns|lifecycle-closure-like-resolution-patterns|lifecycle-closure-like-actual-result-patterns|governance-preset|governance-ownership-enforcement|governance-create-mode-default|governance-close-validation-default|governance-require-close-reason|governance-parent-reference-policy|governance-metadata-validation-profile|governance-force-required-for-stale-lock|test-result-tracking|telemetry-tracking|context\",\n )\n .argument(\n \"[value]\",\n \"Optional value for set: routed to the right typed flag by key (e.g. config set telemetry-tracking off, config set item-format toon, config set definition-of-done \\\"Tests pass\\\"). Equivalent to --policy/--format/--criterion. context keys still require --default-depth/--section-* flags.\",\n )\n .option(\n \"--criterion <text>\",\n \"Criteria value for definition-of-done, metadata-required-fields, or lifecycle pattern keys (repeatable for set)\",\n collect,\n )\n .option(\"--clear-criteria\", \"Clear criteria-list keys for config set operations\")\n .option(\"--format <value>\", \"Item format for item-format key: toon\")\n .option(\n \"--policy <value>\",\n \"Policy key values: history-missing-stream-policy=auto_create|strict_error; sprint-release-format-policy=warn|strict_error; parent-reference-policy=warn|strict_error; governance-preset=minimal|default|strict|custom; governance-ownership-enforcement=none|warn|strict; governance-create-mode-default=progressive|strict; governance-close-validation-default=off|warn|strict; governance-require-close-reason=enabled|disabled; governance-parent-reference-policy=warn|strict_error; governance-metadata-validation-profile=core|strict|custom; governance-force-required-for-stale-lock=enabled|disabled; test-result-tracking=enabled|disabled; telemetry-tracking=enabled|disabled\",\n )\n .option(\n \"--value <value>\",\n \"Value for nested leaf settings keys (search_provider, search_mutation_refresh_policy, search_query_expansion_enabled, search_rerank_enabled, openai_base_url, ollama_model, vector_store_adapter, vector_store_collection_name, qdrant_url, lancedb_path, etc.). Equivalent to the positional value.\",\n )\n .option(\"--default-depth <value>\", \"Context default depth: brief|standard|deep\")\n .option(\"--activity-limit <n>\", \"Context default activity limit\")\n .option(\"--stale-threshold-days <n>\", \"Context staleness cutoff in days\")\n .option(\"--section-hierarchy <value>\", \"Enable/disable context hierarchy section (true|false)\")\n .option(\"--section-activity <value>\", \"Enable/disable context activity section (true|false)\")\n .option(\"--section-progress <value>\", \"Enable/disable context progress section (true|false)\")\n .option(\"--section-blockers <value>\", \"Enable/disable context blockers section (true|false)\")\n .option(\"--section-files <value>\", \"Enable/disable context files section (true|false)\")\n .option(\"--section-workload <value>\", \"Enable/disable context workload section (true|false)\")\n .option(\"--section-staleness <value>\", \"Enable/disable context staleness section (true|false)\")\n .option(\"--section-tests <value>\", \"Enable/disable context tests section (true|false)\")\n .description(\"Read or update pm settings for the current workspace or global profile.\")\n .action(async (scope: string | undefined, action: string | undefined, key: string | undefined, value: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const criteria = Array.isArray(options.criterion) ? (options.criterion as string[]) : [];\n const { runConfig } = await import(\"./commands/config.js\");\n const actionShorthands = new Set([\"get\", \"set\", \"list\", \"export\"]);\n const scopeShorthand = scope !== undefined && actionShorthands.has(scope);\n const resolvedScope = scopeShorthand ? \"project\" : (scope ?? \"project\");\n const resolvedAction = scopeShorthand ? scope : (action ?? \"list\");\n // When scope is an action shorthand, positionals shift left by one:\n // [set] [key] [value] -> action=set, key=key, value=value.\n const resolvedKey = scopeShorthand ? action : key;\n const resolvedValue = scopeShorthand ? key : value;\n const result = await runConfig(\n resolvedScope,\n resolvedAction,\n resolvedKey,\n {\n criterion: criteria,\n format: typeof options.format === \"string\" ? options.format : undefined,\n policy: typeof options.policy === \"string\" ? options.policy : undefined,\n value: typeof options.value === \"string\" ? options.value : undefined,\n clearCriteria: options.clearCriteria === true,\n defaultDepth: typeof options.defaultDepth === \"string\" ? options.defaultDepth : undefined,\n activityLimit: typeof options.activityLimit === \"string\" ? options.activityLimit : undefined,\n staleThresholdDays: typeof options.staleThresholdDays === \"string\" ? options.staleThresholdDays : undefined,\n sectionHierarchy: typeof options.sectionHierarchy === \"string\" ? options.sectionHierarchy : undefined,\n sectionActivity: typeof options.sectionActivity === \"string\" ? options.sectionActivity : undefined,\n sectionProgress: typeof options.sectionProgress === \"string\" ? options.sectionProgress : undefined,\n sectionBlockers: typeof options.sectionBlockers === \"string\" ? options.sectionBlockers : undefined,\n sectionFiles: typeof options.sectionFiles === \"string\" ? options.sectionFiles : undefined,\n sectionWorkload: typeof options.sectionWorkload === \"string\" ? options.sectionWorkload : undefined,\n sectionStaleness: typeof options.sectionStaleness === \"string\" ? options.sectionStaleness : undefined,\n sectionTests: typeof options.sectionTests === \"string\" ? options.sectionTests : undefined,\n },\n globalOptions,\n typeof resolvedValue === \"string\" ? resolvedValue : undefined,\n );\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=config took_ms=${Date.now() - startedAt}`);\n }\n });\n\n registerLifecycleCommand(program, \"extension\");\n registerLifecycleCommand(program, \"package\");\n\n addPackageScopeOptions(\n program\n .command(\"install\")\n .argument(\"[targets...]\", \"Package source (local path, bundled alias, npm: source, wildcard, or GitHub source)\")\n .option(\"--gh <github-source>\", \"Install from GitHub shorthand source (owner/repo[/path])\")\n .option(\"--github <github-source>\", \"Alias for --gh\")\n .option(\"--ref <ref>\", \"Git ref/branch/tag for GitHub install sources\")\n .description(\"Install a pm package into the project package scope by default.\"),\n ).action(async (targets: string[] | undefined, _options: Record<string, unknown>, command) => {\n const target = await normalizeInstallTargets(targets);\n await executeExtensionCommand(target, command.optsWithGlobals() as Record<string, unknown>, command, \"install\", \"package\");\n });\n\n addPackageScopeOptions(\n program\n .command(\"upgrade\")\n .argument(\"[target]\", \"Optional managed package name/source to upgrade; omit to upgrade pm CLI and all managed packages\")\n .option(\"--dry-run\", \"Plan CLI/package upgrades without running npm or reinstalling packages\")\n .option(\"--cli-only\", \"Upgrade only the pm CLI/SDK npm package\")\n .option(\"--packages-only\", \"Upgrade only managed pm packages\")\n .option(\"--repair\", \"Force npm global reinstall when upgrading the pm CLI/SDK\")\n .option(\"--tag <value>\", \"npm dist-tag/version for CLI and registry package upgrades\")\n .option(\"--package-name <value>\", \"Override the CLI package name for self-upgrade testing\")\n .description(\"Upgrade the pm CLI/SDK and refresh managed installable pm packages.\"),\n ).action(async (target: string | undefined, _options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runUpgrade } = await import(\"./commands/upgrade.js\");\n const result = await runUpgrade(target, command.opts() as Record<string, unknown>, globalOptions);\n printResult(result, globalOptions);\n if (!result.ok) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n if (globalOptions.profile) {\n printError(`profile:command=upgrade took_ms=${Date.now() - startedAt}`);\n }\n });\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,17 +0,0 @@
1
- import {
2
- runRestore
3
- } from "./chunk-DY6C42S6.js";
4
- import "./chunk-O7IWB35H.js";
5
- import "./chunk-IGVJRZ6H.js";
6
- import "./chunk-XMBI6TNW.js";
7
- import "./chunk-QJMGRZO2.js";
8
- import "./chunk-3KLPFWZ4.js";
9
- import "./chunk-VPEAS7PS.js";
10
- import "./chunk-73ZPG2I3.js";
11
- import "./chunk-5SCT2JCT.js";
12
- import "./chunk-IUKD4W6Z.js";
13
- import "./chunk-FY4SPXSC.js";
14
- export {
15
- runRestore
16
- };
17
- //# sourceMappingURL=restore-CHIOQAQL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../../core/schema/status-defs-file.ts","../../../../../../../../cli/commands/schema.ts"],"sourcesContent":["import { RUNTIME_STATUS_ROLE_VALUES } from \"../../types/index.js\";\nimport type { RuntimeStatusDefinition, RuntimeStatusRole } from \"../../types/index.js\";\nimport { DEFAULT_RUNTIME_STATUS_DEFINITIONS } from \"./runtime-schema.js\";\n\nexport type { RuntimeStatusDefinition, RuntimeStatusRole } from \"../../types/index.js\";\n\n/**\n * Pure logic for the `pm schema add-status` / `pm schema remove-status`\n * commands. The CLI command file (schema.ts) owns IO/governance; everything\n * testable and side-effect-free lives here so it can be coverage-gated to 100%.\n *\n * Statuses persist at `.agents/pm/schema/statuses.json` under the shape\n * `{ statuses: RuntimeStatusDefinition[] }`. When the file is absent the runtime\n * merge layer (src/core/store/settings.ts) still supplies the built-in defaults\n * from DEFAULT_RUNTIME_STATUS_DEFINITIONS, so this module never duplicates them\n * into the persisted file.\n */\n\nconst RUNTIME_STATUS_ROLE_SET = new Set<string>(RUNTIME_STATUS_ROLE_VALUES);\n\n/**\n * The 5 lifecycle status ids that ship as built-in defaults and may never be\n * removed (their normalized ids match DEFAULT_RUNTIME_STATUS_DEFINITIONS:\n * open/in_progress/blocked/closed/canceled). `draft` is also a default but the\n * acceptance criteria enumerate the 5 terminal/active ids explicitly, so the\n * guard derives the full set from the canonical defaults to stay in sync.\n */\nexport const BUILTIN_STATUS_IDS: ReadonlySet<string> = new Set(\n DEFAULT_RUNTIME_STATUS_DEFINITIONS.map((definition) => normalizeStatusToken(definition.id)).filter(\n (id) => id.length > 0,\n ),\n);\n\n/**\n * The shape persisted at `.agents/pm/schema/statuses.json`.\n */\nexport interface StatusDefsFile {\n statuses: RuntimeStatusDefinition[];\n}\n\nexport interface RawAddStatusInput {\n id: string | undefined;\n roles?: string[];\n aliases?: string[];\n description?: string;\n order?: number;\n}\n\nexport interface NormalizedAddStatusInput {\n id: string;\n /**\n * Normalized roles, or `undefined` when the raw input did not supply a roles\n * field at all. `undefined` means \"leave existing roles untouched\" on upsert;\n * an explicit empty array means \"clear roles\". This distinction is what keeps\n * `add-status review --description x` from wiping a previously-set role.\n */\n roles?: RuntimeStatusRole[];\n /** Same omitted-vs-explicit-empty semantics as `roles`. */\n aliases?: string[];\n description?: string;\n order?: number;\n}\n\nexport interface UpsertStatusDefResult {\n file: StatusDefsFile;\n /** The definition as stored after the upsert (existing fields preserved). */\n definition: RuntimeStatusDefinition;\n /** True when an existing definition with the same (normalized) id was replaced. */\n replaced: boolean;\n}\n\nexport interface RemoveStatusDefResult {\n file: StatusDefsFile;\n /** True when a matching definition existed and was dropped from the file. */\n removed: boolean;\n /** The removed definition, when one matched the requested id. */\n definition?: RuntimeStatusDefinition;\n}\n\n/**\n * Normalizes a status token using the same rules as runtime-schema.ts: lowercase\n * and collapse any run of whitespace/hyphens into a single underscore.\n */\nexport function normalizeStatusToken(value: unknown): string {\n return typeof value === \"string\" ? value.trim().toLowerCase().replaceAll(/[\\s-]+/g, \"_\") : \"\";\n}\n\nfunction dedupeTokens(values: Iterable<string>): string[] {\n const seen = new Set<string>();\n for (const value of values) {\n const token = normalizeStatusToken(value);\n if (token.length > 0) {\n seen.add(token);\n }\n }\n return [...seen].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Validates and normalizes raw add-status CLI input. Throws a plain Error with a\n * stable message when the id is missing/empty or a role is not one of\n * RUNTIME_STATUS_ROLE_VALUES; the CLI layer maps these to PmCliError exit codes.\n *\n * Omitted vs explicit-empty is preserved end-to-end: when `raw.roles`/`raw.aliases`\n * is `undefined` (flag not supplied) the normalized field is `undefined` so the\n * upsert leaves the existing value untouched; when supplied (even an empty array)\n * the field is normalized to an array so the upsert can apply an explicit clear.\n */\nexport function normalizeAddStatusInput(raw: RawAddStatusInput): NormalizedAddStatusInput {\n const id = normalizeStatusToken(raw.id);\n if (id.length === 0) {\n throw new Error(\"Status id must not be empty.\");\n }\n // Built-in lifecycle statuses are reserved and cannot be overridden: an\n // add-status override would change reserved metadata yet remove-status refuses\n // to delete a built-in id, leaving no CLI path to undo it. Reject up front,\n // symmetric with removeStatusDef.\n if (BUILTIN_STATUS_IDS.has(id)) {\n throw new Error(\n `Cannot add-status the built-in status \"${id}\". Built-in statuses are reserved: ${[...BUILTIN_STATUS_IDS].join(\", \")}.`,\n );\n }\n let roles: RuntimeStatusRole[] | undefined;\n if (raw.roles !== undefined) {\n roles = [];\n const seenRoles = new Set<string>();\n for (const rawRole of raw.roles) {\n const role = typeof rawRole === \"string\" ? rawRole.trim().toLowerCase() : \"\";\n if (role.length === 0) {\n continue;\n }\n if (!RUNTIME_STATUS_ROLE_SET.has(role)) {\n throw new Error(\n `Invalid status role \"${rawRole}\". Allowed roles: ${RUNTIME_STATUS_ROLE_VALUES.join(\", \")}.`,\n );\n }\n if (!seenRoles.has(role)) {\n seenRoles.add(role);\n roles.push(role as RuntimeStatusRole);\n }\n }\n }\n const aliases =\n raw.aliases === undefined ? undefined : dedupeTokens(raw.aliases).filter((alias) => alias !== id);\n const description = raw.description?.trim();\n const order =\n typeof raw.order === \"number\" && Number.isFinite(raw.order) ? Math.trunc(raw.order) : undefined;\n return {\n id,\n roles,\n aliases,\n description: description && description.length > 0 ? description : undefined,\n order,\n };\n}\n\nfunction selectStatusesArray(parsed: unknown): unknown[] | undefined {\n if (Array.isArray(parsed)) {\n return parsed;\n }\n if (typeof parsed !== \"object\" || parsed === null) {\n return undefined;\n }\n const record = parsed as Record<string, unknown>;\n if (Array.isArray(record.statuses)) {\n return record.statuses;\n }\n if (Array.isArray(record.definitions)) {\n return record.definitions;\n }\n return undefined;\n}\n\nfunction extractStatusDefinitions(parsed: unknown): RuntimeStatusDefinition[] {\n const candidate = selectStatusesArray(parsed);\n if (!candidate) {\n return [];\n }\n const definitions: RuntimeStatusDefinition[] = [];\n for (const entry of candidate) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n continue;\n }\n const record = entry as Record<string, unknown>;\n if (typeof record.id !== \"string\" || record.id.trim().length === 0) {\n continue;\n }\n definitions.push(record as unknown as RuntimeStatusDefinition);\n }\n return definitions;\n}\n\n/**\n * Coerces an arbitrary parsed value from statuses.json into a StatusDefsFile.\n * Accepts the canonical `{ statuses: [...] }` shape, a bare array of\n * definitions, or a `{ definitions: [...] }` form, and tolerates a\n * missing/invalid file by returning an empty statuses list.\n */\nexport function parseStatusDefsFile(raw: string | null | undefined): StatusDefsFile {\n if (raw === null || raw === undefined || raw.trim().length === 0) {\n return { statuses: [] };\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n throw new Error(\"schema/statuses.json contains invalid JSON.\");\n }\n return { statuses: extractStatusDefinitions(parsed) };\n}\n\n/**\n * Serializes the status definitions file with a trailing newline (matches the\n * rest of the schema scaffold files written by pm).\n */\nexport function serializeStatusDefsFile(file: StatusDefsFile): string {\n return `${JSON.stringify({ statuses: file.statuses }, null, 2)}\\n`;\n}\n\n/**\n * Idempotent UPSERT of a status definition into the parsed file. Matching is by\n * normalized id. When a definition already exists, fields supplied in `input`\n * override the previous values (roles/aliases replace when a non-empty array is\n * given, clear when an explicit empty array is given, and are left UNTOUCHED\n * when the field is `undefined` — i.e. the add-status flag was omitted);\n * description/order override when provided. Fields not addressed by add-status\n * flags are preserved untouched, so `add-status <id> --description x` keeps any\n * previously-set roles/aliases.\n */\nexport function upsertStatusDef(\n file: StatusDefsFile,\n input: NormalizedAddStatusInput,\n baseDefinition?: RuntimeStatusDefinition,\n): UpsertStatusDefResult {\n const statuses = file.statuses.slice();\n const existingIndex = statuses.findIndex(\n (definition) => normalizeStatusToken(definition.id) === input.id,\n );\n // A file-backed definition is the primary seed; when the status is not yet in\n // statuses.json fall back to `baseDefinition` (the resolved settings-backed\n // definition) so omitting --role/--alias preserves metadata that lives in\n // settings.schema.statuses rather than the file.\n const existing = existingIndex >= 0 ? statuses[existingIndex] : baseDefinition;\n\n const next: RuntimeStatusDefinition = {\n ...(existing ?? {}),\n id: input.id,\n };\n if (input.roles !== undefined) {\n if (input.roles.length > 0) {\n next.roles = [...input.roles];\n } else if (next.roles !== undefined) {\n delete next.roles;\n }\n }\n if (input.aliases !== undefined) {\n if (input.aliases.length > 0) {\n next.aliases = [...input.aliases];\n } else if (next.aliases !== undefined) {\n delete next.aliases;\n }\n }\n if (input.description !== undefined) {\n next.description = input.description;\n }\n if (input.order !== undefined) {\n next.order = input.order;\n }\n\n if (existingIndex >= 0) {\n statuses[existingIndex] = next;\n } else {\n statuses.push(next);\n }\n\n return {\n file: { statuses },\n definition: next,\n // \"replaced\" reflects whether the status already existed effectively (in the\n // file OR in resolved settings), so the CLI reports \"Updated\" vs \"Registered\"\n // correctly even when the prior definition lived only in settings.\n replaced: existing !== undefined,\n };\n}\n\n/**\n * Removes a status definition from the parsed file by id (normalized). Throws a\n * plain Error when `id` is empty or matches a reserved built-in default status\n * (those are never stored in the file and must never be deletable). Returns\n * `removed: false` when no matching definition exists so the CLI layer can treat\n * the call as an idempotent no-op.\n */\nexport function removeStatusDef(file: StatusDefsFile, id: string | undefined): RemoveStatusDefResult {\n const normalizedId = normalizeStatusToken(id);\n if (normalizedId.length === 0) {\n throw new Error(\"Status id must not be empty.\");\n }\n if (BUILTIN_STATUS_IDS.has(normalizedId)) {\n throw new Error(\n `Cannot remove built-in status \"${normalizedId}\". Built-in statuses are reserved: ${[...BUILTIN_STATUS_IDS].join(\", \")}.`,\n );\n }\n const statuses = file.statuses.slice();\n const existingIndex = statuses.findIndex(\n (definition) => normalizeStatusToken(definition.id) === normalizedId,\n );\n if (existingIndex < 0) {\n return { file: { statuses }, removed: false };\n }\n const [definition] = statuses.splice(existingIndex, 1);\n return { file: { statuses }, removed: true, definition };\n}\n\n/**\n * Throws when the new status id or any explicitly-supplied alias collides with a\n * DIFFERENT existing status's id/alias. `resolvedAliasToId` maps a normalized\n * token to its owning status id (the runtime status registry's alias_to_id map,\n * which stores ids and aliases in one namespace). Re-adding the same status\n * (matching id) is allowed — only cross-status collisions throw. This prevents a\n * custom status from shadowing a built-in lifecycle token (for example\n * `add-status review --alias open`, or a custom id `cancelled` that aliases the\n * built-in `canceled`), which would make `pm update --status open` resolve to the\n * wrong status. The CLI layer maps the thrown Error to a USAGE exit code.\n */\nexport function assertStatusTokensAvailable(\n input: { id: string; aliases?: string[] },\n resolvedAliasToId: ReadonlyMap<string, string>,\n): void {\n const candidates = [input.id, ...(input.aliases ?? [])];\n for (const candidate of candidates) {\n const token = normalizeStatusToken(candidate);\n if (token.length === 0) {\n continue;\n }\n const owner = resolvedAliasToId.get(token);\n if (owner !== undefined && owner !== input.id) {\n throw new Error(\n `Status token \"${token}\" already belongs to status \"${owner}\". Choose a different id/alias to avoid shadowing it.`,\n );\n }\n }\n}\n","import { pathExists, readFileIfExists, writeFileAtomic } from \"../../core/fs/fs-utils.js\";\nimport { acquireLock } from \"../../core/lock/lock.js\";\nimport {\n assertAliasesAvailable,\n buildInvalidTypeHint,\n escapeForDoubleQuotes,\n normalizeAddTypeInput,\n parseItemTypesFile,\n removeItemType,\n serializeItemTypesFile,\n upsertItemType,\n type ItemTypeDefinition,\n} from \"../../core/schema/item-types-file.js\";\nimport {\n assertStatusTokensAvailable,\n BUILTIN_STATUS_IDS,\n normalizeAddStatusInput,\n normalizeStatusToken,\n parseStatusDefsFile,\n removeStatusDef,\n serializeStatusDefsFile,\n upsertStatusDef,\n type RuntimeStatusDefinition,\n} from \"../../core/schema/status-defs-file.js\";\nimport {\n DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,\n filePathForSchemaSection,\n normalizeRuntimeSchemaSettings,\n resolveRuntimeStatusRegistry,\n} from \"../../core/schema/runtime-schema.js\";\nimport { resolveItemTypeRegistry, type ResolvedItemTypeDefinition } from \"../../core/item/type-registry.js\";\nimport { listAllFrontMatterLight } from \"../../core/store/item-store.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport type { PmSettings } from \"../../types/index.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { getActiveExtensionRegistrations, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, resolveGovernanceKnobs } from \"../../core/store/settings.js\";\n\nexport const SCHEMA_SUBCOMMANDS = [\n \"add-type\",\n \"remove-type\",\n \"add-status\",\n \"remove-status\",\n \"list\",\n \"show\",\n \"show-status\",\n] as const;\nexport type SchemaSubcommand = (typeof SCHEMA_SUBCOMMANDS)[number];\n\nconst SCHEMA_TYPES_LOCK_ID = \"schema-types\";\nconst SCHEMA_STATUSES_LOCK_ID = \"schema-statuses\";\n\nexport interface SchemaAddTypeCommandOptions {\n description?: string;\n defaultStatus?: string;\n folder?: string;\n alias?: string[];\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaRemoveTypeCommandOptions {\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaAddStatusCommandOptions {\n role?: string[];\n alias?: string[];\n description?: string;\n order?: number;\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaRemoveStatusCommandOptions {\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaAddTypeResult {\n action: \"add-type\";\n registered: boolean;\n replaced: boolean;\n type: ItemTypeDefinition;\n file: {\n path: string;\n definitions: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaRemoveTypeResult {\n action: \"remove-type\";\n removed: boolean;\n type?: ItemTypeDefinition;\n file: {\n path: string;\n definitions: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaAddStatusResult {\n action: \"add-status\";\n registered: boolean;\n replaced: boolean;\n status: RuntimeStatusDefinition;\n file: {\n path: string;\n statuses: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaRemoveStatusResult {\n action: \"remove-status\";\n removed: boolean;\n status?: RuntimeStatusDefinition;\n file: {\n path: string;\n statuses: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaTypeSummary {\n name: string;\n folder: string;\n aliases: string[];\n default_status?: string;\n description?: string;\n}\n\nexport interface SchemaStatusSummary {\n id: string;\n source: \"builtin\" | \"custom\";\n roles: string[];\n aliases: string[];\n description?: string;\n order?: number;\n}\n\nexport interface SchemaTypeDefinitionResult extends SchemaTypeSummary {\n source: \"builtin\" | \"custom\" | \"extension\";\n extension?: {\n layer: string;\n name: string;\n };\n required_create_fields: string[];\n required_create_repeatables: string[];\n options: ResolvedItemTypeDefinition[\"options\"];\n command_option_policies: ResolvedItemTypeDefinition[\"command_option_policies\"];\n}\n\nexport interface SchemaListResult {\n action: \"list\";\n builtin: SchemaTypeSummary[];\n custom: SchemaTypeSummary[];\n extension: SchemaTypeSummary[];\n counts: {\n builtin: number;\n custom: number;\n extension: number;\n total: number;\n };\n statuses: {\n builtin: SchemaStatusSummary[];\n custom: SchemaStatusSummary[];\n counts: {\n builtin: number;\n custom: number;\n total: number;\n };\n };\n file: {\n path: string;\n };\n generated_at: string;\n}\n\nexport interface SchemaShowResult {\n action: \"show\";\n type: SchemaTypeDefinitionResult;\n file: {\n path: string;\n };\n generated_at: string;\n}\n\nexport interface SchemaShowStatusResult {\n action: \"show-status\";\n status: SchemaStatusSummary;\n file: {\n path: string;\n };\n generated_at: string;\n}\n\nexport type SchemaInspectResult = SchemaListResult | SchemaShowResult | SchemaShowStatusResult;\n\nfunction toAuthor(candidate: string | undefined, defaultAuthor: string): string {\n const resolved = candidate ?? process.env.PM_AUTHOR ?? defaultAuthor;\n const trimmed = resolved.trim();\n return trimmed.length > 0 ? trimmed : \"unknown\";\n}\n\nexport async function runSchemaAddType(\n name: string | undefined,\n options: SchemaAddTypeCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaAddTypeResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n let normalized;\n try {\n normalized = normalizeAddTypeInput({\n name,\n description: options.description,\n defaultStatus: options.defaultStatus,\n folder: options.folder,\n aliases: options.alias,\n });\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_TYPES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let upsert;\n try {\n const previousRaw = await readFileIfExists(typesPath);\n let parsed;\n try {\n parsed = parseItemTypesFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n try {\n assertAliasesAvailable(normalized, parsed);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n upsert = upsertItemType(parsed, normalized);\n // writeFileAtomic writes to a temp file then renames, so a failure leaves the\n // existing types.json untouched; no manual rollback is needed.\n await writeFileAtomic(typesPath, serializeItemTypesFile(upsert.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: typesPath,\n scope: \"project\",\n op: \"schema:add-type\",\n })),\n );\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"add-type\",\n registered: true,\n replaced: upsert.replaced,\n type: upsert.definition,\n file: {\n path: typesPath,\n definitions: upsert.file.definitions.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nasync function ensureInitialized(pmRoot: string): Promise<void> {\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n}\n\n/**\n * Counts items whose resolved type matches `typeName` (case-insensitive). Uses\n * the lightest existing read path (listAllFrontMatterLight skips the heavy\n * collections cache). All items are counted — not just open ones — so the\n * advisory warning surfaces every item the removed definition would orphan;\n * the count is non-blocking. The caller passes its already-loaded `settings`\n * so we never re-read settings.json from disk here.\n */\nasync function countItemsUsingType(\n pmRoot: string,\n settings: PmSettings,\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>,\n typeName: string,\n): Promise<number> {\n const registry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const lowerName = typeName.trim().toLowerCase();\n const items = await listAllFrontMatterLight(pmRoot, settings.item_format, registry.type_to_folder, [], schema);\n return items.filter((item) => typeof item.type === \"string\" && item.type.toLowerCase() === lowerName).length;\n}\n\n/**\n * Counts items currently set to the status whose id/aliases resolve to\n * `statusId`. Uses listAllFrontMatterLight (the lightest read path). All items\n * are counted regardless of lifecycle phase; the count is advisory only. The\n * caller passes its already-loaded `settings` so we never re-read from disk.\n */\nasync function countItemsUsingStatus(\n pmRoot: string,\n settings: PmSettings,\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>,\n statusId: string,\n): Promise<number> {\n const registry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const statusRegistry = resolveRuntimeStatusRegistry(schema);\n const normalizedId = normalizeStatusToken(statusId);\n const items = await listAllFrontMatterLight(pmRoot, settings.item_format, registry.type_to_folder, [], schema);\n return items.filter((item) => {\n const itemStatus = typeof item.status === \"string\" ? item.status : \"\";\n const resolved = statusRegistry.alias_to_id.get(normalizeStatusToken(itemStatus)) ?? normalizeStatusToken(itemStatus);\n return resolved === normalizedId;\n }).length;\n}\n\n/**\n * Returns the workflow role-slot names (open_status, close_status, ...) that\n * currently point at `statusId` (normalized). Used to warn before removing a\n * status that a workflow default still references.\n */\nfunction workflowSlotsReferencing(\n workflow: {\n draft_status?: string;\n open_status?: string;\n in_progress_status?: string;\n blocked_status?: string;\n close_status?: string;\n canceled_status?: string;\n },\n statusId: string,\n): string[] {\n const slots: Array<[string, string | undefined]> = [\n [\"draft_status\", workflow.draft_status],\n [\"open_status\", workflow.open_status],\n [\"in_progress_status\", workflow.in_progress_status],\n [\"blocked_status\", workflow.blocked_status],\n [\"close_status\", workflow.close_status],\n [\"canceled_status\", workflow.canceled_status],\n ];\n return slots\n .filter(([, value]) => value !== undefined && normalizeStatusToken(value) === statusId)\n .map(([slot]) => slot);\n}\n\nexport async function runSchemaRemoveType(\n name: string | undefined,\n options: SchemaRemoveTypeCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaRemoveTypeResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_TYPES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let removal;\n try {\n const previousRaw = await readFileIfExists(typesPath);\n let parsed;\n try {\n parsed = parseItemTypesFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n try {\n removal = removeItemType(parsed, name);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n if (removal.removed) {\n // Only emit the advisory orphan-count warning once a removable custom\n // definition was actually removed; a no-op/unknown removal would otherwise\n // surface a misleading items_using_type:* warning. The count is\n // non-blocking and reuses the already-loaded settings (no disk re-read).\n const removedName = (removal.definition?.name ?? name ?? \"\").trim();\n if (removedName.length > 0) {\n const usingType = await countItemsUsingType(pmRoot, settings, schema, removedName);\n if (usingType > 0) {\n warnings.push(`items_using_type:${usingType}`);\n }\n }\n // writeFileAtomic writes to a temp file then renames, so a failure leaves\n // the existing types.json untouched; no manual rollback is needed.\n await writeFileAtomic(typesPath, serializeItemTypesFile(removal.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: typesPath,\n scope: \"project\",\n op: \"schema:remove-type\",\n })),\n );\n }\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"remove-type\",\n removed: removal.removed,\n ...(removal.definition ? { type: removal.definition } : {}),\n file: {\n path: typesPath,\n definitions: removal.file.definitions.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nfunction statusesPathFor(pmRoot: string, schema: ReturnType<typeof normalizeRuntimeSchemaSettings>): string {\n return filePathForSchemaSection(pmRoot, schema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses);\n}\n\nexport async function runSchemaAddStatus(\n id: string | undefined,\n options: SchemaAddStatusCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaAddStatusResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n\n let normalized;\n try {\n normalized = normalizeAddStatusInput({\n id,\n roles: options.role,\n aliases: options.alias,\n description: options.description,\n order: options.order,\n });\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const statusesPath = statusesPathFor(pmRoot, schema);\n const statusRegistry = resolveRuntimeStatusRegistry(schema);\n\n // Reject id/alias collisions with a DIFFERENT existing status so a custom\n // status can never shadow a built-in lifecycle token (e.g. --alias open).\n try {\n assertStatusTokensAvailable(normalized, statusRegistry.alias_to_id);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n\n // Seed the upsert from the resolved (settings-or-file) definition so omitting\n // --role/--alias preserves metadata defined in settings.schema.statuses, not\n // only what is already in statuses.json.\n const resolvedExisting = statusRegistry.by_id.get(normalized.id);\n const baseDefinition: RuntimeStatusDefinition | undefined = resolvedExisting\n ? {\n id: resolvedExisting.id,\n ...(Array.isArray(resolvedExisting.roles) && resolvedExisting.roles.length > 0\n ? { roles: [...resolvedExisting.roles] }\n : {}),\n ...(Array.isArray(resolvedExisting.aliases) && resolvedExisting.aliases.length > 0\n ? { aliases: [...resolvedExisting.aliases] }\n : {}),\n ...(resolvedExisting.description ? { description: resolvedExisting.description } : {}),\n ...(typeof resolvedExisting.order === \"number\" ? { order: resolvedExisting.order } : {}),\n }\n : undefined;\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_STATUSES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let upsert;\n try {\n const previousRaw = await readFileIfExists(statusesPath);\n let parsed;\n try {\n parsed = parseStatusDefsFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n // Re-check collisions against the CURRENT file under the lock: the pre-lock\n // check used the registry loaded before acquiring schema-statuses, so a\n // concurrent add-status could have written a colliding id/alias in between.\n // The lock serializes writes; this serializes the collision decision too.\n const fileAliasToId = new Map<string, string>();\n for (const definition of parsed.statuses) {\n const defId = normalizeStatusToken(definition.id);\n if (defId.length === 0) {\n continue;\n }\n fileAliasToId.set(defId, defId);\n for (const alias of Array.isArray(definition.aliases) ? definition.aliases : []) {\n const aliasToken = normalizeStatusToken(alias);\n if (aliasToken.length > 0 && !fileAliasToId.has(aliasToken)) {\n fileAliasToId.set(aliasToken, defId);\n }\n }\n }\n try {\n assertStatusTokensAvailable(normalized, fileAliasToId);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n upsert = upsertStatusDef(parsed, normalized, baseDefinition);\n // writeFileAtomic writes to a temp file then renames, so a failure leaves\n // the existing statuses.json untouched; no manual rollback is needed.\n await writeFileAtomic(statusesPath, serializeStatusDefsFile(upsert.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: statusesPath,\n scope: \"project\",\n op: \"schema:add-status\",\n })),\n );\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"add-status\",\n registered: true,\n replaced: upsert.replaced,\n status: upsert.definition,\n file: {\n path: statusesPath,\n statuses: upsert.file.statuses.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nexport async function runSchemaRemoveStatus(\n id: string | undefined,\n options: SchemaRemoveStatusCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaRemoveStatusResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const statusesPath = statusesPathFor(pmRoot, schema);\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_STATUSES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let removal;\n try {\n const previousRaw = await readFileIfExists(statusesPath);\n let parsed;\n try {\n parsed = parseStatusDefsFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n try {\n removal = removeStatusDef(parsed, id);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n if (removal.removed) {\n // Only emit the advisory orphan-count warning once a removable custom\n // status was actually removed; a no-op/unknown removal would otherwise\n // surface a misleading items_using_status:* warning. The count reuses the\n // already-loaded settings (no disk re-read) and is non-blocking.\n const removedId = normalizeStatusToken(removal.definition?.id ?? id);\n if (removedId.length > 0 && !BUILTIN_STATUS_IDS.has(removedId)) {\n const usingStatus = await countItemsUsingStatus(pmRoot, settings, schema, removedId);\n if (usingStatus > 0) {\n warnings.push(`items_using_status:${usingStatus}`);\n }\n // Removing a status that a workflow default still points at would leave\n // pm close / default pm create resolving to an unregistered status. Warn\n // (non-blocking, consistent with remove-type) so the operator re-points\n // the workflow slot via schema/workflows.json or pm config.\n const referencingSlots = workflowSlotsReferencing(schema.workflow, removedId);\n if (referencingSlots.length > 0) {\n warnings.push(`status_referenced_by_workflow:${referencingSlots.join(\",\")}`);\n }\n }\n await writeFileAtomic(statusesPath, serializeStatusDefsFile(removal.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: statusesPath,\n scope: \"project\",\n op: \"schema:remove-status\",\n })),\n );\n }\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"remove-status\",\n removed: removal.removed,\n ...(removal.definition ? { status: removal.definition } : {}),\n file: {\n path: statusesPath,\n statuses: removal.file.statuses.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nfunction toSchemaTypeSummary(definition: ResolvedItemTypeDefinition): SchemaTypeSummary {\n return {\n name: definition.name,\n folder: definition.folder,\n aliases: Array.isArray(definition.aliases) ? [...definition.aliases] : [],\n ...(definition.default_status ? { default_status: definition.default_status } : {}),\n ...(definition.description ? { description: definition.description } : {}),\n };\n}\n\nfunction toSchemaTypeDefinition(\n definition: ResolvedItemTypeDefinition,\n source: SchemaTypeDefinitionResult[\"source\"],\n extensionProvenance?: SchemaTypeDefinitionResult[\"extension\"],\n): SchemaTypeDefinitionResult {\n return {\n ...toSchemaTypeSummary(definition),\n source,\n ...(extensionProvenance ? { extension: extensionProvenance } : {}),\n required_create_fields: [...definition.required_create_fields],\n required_create_repeatables: [...definition.required_create_repeatables],\n options: structuredClone(definition.options),\n command_option_policies: structuredClone(definition.command_option_policies),\n };\n}\n\nfunction toSchemaStatusSummary(definition: RuntimeStatusDefinition): SchemaStatusSummary {\n return {\n id: definition.id,\n source: BUILTIN_STATUS_IDS.has(definition.id) ? \"builtin\" : \"custom\",\n roles: Array.isArray(definition.roles) ? [...definition.roles] : [],\n aliases: Array.isArray(definition.aliases) ? [...definition.aliases] : [],\n ...(definition.description ? { description: definition.description } : {}),\n ...(typeof definition.order === \"number\" ? { order: definition.order } : {}),\n };\n}\n\nfunction classifyTypeSource(\n name: string,\n customNames: Set<string>,\n extensionNames: Set<string>,\n): SchemaTypeDefinitionResult[\"source\"] {\n const lowerName = name.toLowerCase();\n if (extensionNames.has(lowerName)) {\n return \"extension\";\n }\n if (customNames.has(lowerName)) {\n return \"custom\";\n }\n return \"builtin\";\n}\n\nfunction collectExtensionTypeProvenance(): Map<string, SchemaTypeDefinitionResult[\"extension\"]> {\n const provenance = new Map<string, SchemaTypeDefinitionResult[\"extension\"]>();\n const registrations = getActiveExtensionRegistrations();\n for (const registration of registrations?.item_types ?? []) {\n const rawTypes = (registration as { types?: unknown[] }).types;\n if (!Array.isArray(rawTypes)) {\n continue;\n }\n for (const rawType of rawTypes) {\n if (typeof rawType !== \"object\" || rawType === null || Array.isArray(rawType)) {\n continue;\n }\n const name = (rawType as { name?: unknown }).name;\n if (typeof name === \"string\" && name.trim().length > 0) {\n provenance.set(name.trim().toLowerCase(), {\n layer: registration.layer,\n name: registration.name,\n });\n }\n }\n }\n return provenance;\n}\n\nfunction buildSchemaStatusSummaries(\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>,\n): { builtin: SchemaStatusSummary[]; custom: SchemaStatusSummary[] } {\n const registry = resolveRuntimeStatusRegistry(schema);\n const builtin: SchemaStatusSummary[] = [];\n const custom: SchemaStatusSummary[] = [];\n for (const definition of registry.definitions) {\n const summary = toSchemaStatusSummary(definition);\n if (summary.source === \"builtin\") {\n builtin.push(summary);\n } else {\n custom.push(summary);\n }\n }\n return { builtin, custom };\n}\n\nasync function loadSchemaInspectionContext(global: GlobalOptions): Promise<{\n typesPath: string;\n statusesPath: string;\n byType: Record<string, ResolvedItemTypeDefinition>;\n customNames: Set<string>;\n extensionProvenance: Map<string, SchemaTypeDefinitionResult[\"extension\"]>;\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>;\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n const statusesPath = statusesPathFor(pmRoot, schema);\n const registry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const extensionProvenance = collectExtensionTypeProvenance();\n const customNames = new Set(\n (settings.item_types?.definitions ?? [])\n .map((definition) => definition.name.trim().toLowerCase())\n .filter((name) => name.length > 0 && !extensionProvenance.has(name)),\n );\n return {\n typesPath,\n statusesPath,\n byType: registry.by_type,\n customNames,\n extensionProvenance,\n schema,\n };\n}\n\nexport async function runSchemaList(global: GlobalOptions): Promise<SchemaListResult> {\n const context = await loadSchemaInspectionContext(global);\n const builtin: SchemaTypeSummary[] = [];\n const custom: SchemaTypeSummary[] = [];\n const extension: SchemaTypeSummary[] = [];\n for (const definition of Object.values(context.byType).sort((left, right) => left.name.localeCompare(right.name))) {\n const source = classifyTypeSource(definition.name, context.customNames, new Set(context.extensionProvenance.keys()));\n const summary = toSchemaTypeSummary(definition);\n if (source === \"extension\") {\n extension.push(summary);\n } else if (source === \"custom\") {\n custom.push(summary);\n } else {\n builtin.push(summary);\n }\n }\n const statusSummaries = buildSchemaStatusSummaries(context.schema);\n return {\n action: \"list\",\n builtin,\n custom,\n extension,\n counts: {\n builtin: builtin.length,\n custom: custom.length,\n extension: extension.length,\n total: builtin.length + custom.length + extension.length,\n },\n statuses: {\n builtin: statusSummaries.builtin,\n custom: statusSummaries.custom,\n counts: {\n builtin: statusSummaries.builtin.length,\n custom: statusSummaries.custom.length,\n total: statusSummaries.builtin.length + statusSummaries.custom.length,\n },\n },\n file: {\n path: context.typesPath,\n },\n generated_at: nowIso(),\n };\n}\n\nexport async function runSchemaShow(name: string | undefined, global: GlobalOptions): Promise<SchemaShowResult> {\n const typeName = (name ?? \"\").trim();\n if (typeName.length === 0) {\n throw new PmCliError(\"Type name must not be empty.\", EXIT_CODE.USAGE);\n }\n const context = await loadSchemaInspectionContext(global);\n const match = Object.values(context.byType).find(\n (definition) =>\n definition.name.toLowerCase() === typeName.toLowerCase() ||\n definition.aliases.some((alias) => alias.toLowerCase() === typeName.toLowerCase()),\n );\n if (!match) {\n throw new PmCliError(\n `Unknown item type \"${typeName}\". Run pm schema list to inspect registered types, or pm schema add-type \"${escapeForDoubleQuotes(typeName)}\" to register it.`,\n EXIT_CODE.NOT_FOUND,\n { code: \"unknown_item_type\" },\n );\n }\n return {\n action: \"show\",\n type: toSchemaTypeDefinition(\n match,\n classifyTypeSource(match.name, context.customNames, new Set(context.extensionProvenance.keys())),\n context.extensionProvenance.get(match.name.toLowerCase()),\n ),\n file: {\n path: context.typesPath,\n },\n generated_at: nowIso(),\n };\n}\n\nexport async function runSchemaShowStatus(\n id: string | undefined,\n global: GlobalOptions,\n): Promise<SchemaShowStatusResult> {\n const statusToken = normalizeStatusToken(id);\n if (statusToken.length === 0) {\n throw new PmCliError(\"Status id must not be empty.\", EXIT_CODE.USAGE);\n }\n const context = await loadSchemaInspectionContext(global);\n const statusRegistry = resolveRuntimeStatusRegistry(context.schema);\n const resolvedId = statusRegistry.alias_to_id.get(statusToken) ?? statusToken;\n const match = statusRegistry.by_id.get(resolvedId);\n if (!match) {\n throw new PmCliError(\n `Unknown status \"${id}\". Run pm schema list to inspect registered statuses, or pm schema add-status \"${escapeForDoubleQuotes(\n id ?? \"\",\n )}\" to register it.`,\n EXIT_CODE.NOT_FOUND,\n { code: \"unknown_status\" },\n );\n }\n return {\n action: \"show-status\",\n status: toSchemaStatusSummary(match),\n file: {\n path: context.statusesPath,\n },\n generated_at: nowIso(),\n };\n}\n\nexport function formatSchemaAddTypeHuman(result: SchemaAddTypeResult): string {\n const verb = result.replaced ? \"Updated\" : \"Registered\";\n const aliasSuffix =\n result.type.aliases && result.type.aliases.length > 0 ? ` (aliases: ${result.type.aliases.join(\", \")})` : \"\";\n return `${verb} custom item type \"${result.type.name}\"${aliasSuffix} in ${result.file.path}. Run: pm create \"${escapeForDoubleQuotes(result.type.name)}\" \"<title>\"`;\n}\n\nexport function formatSchemaRemoveTypeHuman(result: SchemaRemoveTypeResult): string {\n if (!result.removed) {\n return `No custom item type matched; nothing removed from ${result.file.path}.`;\n }\n const name = result.type?.name ?? \"(unknown)\";\n return `Removed custom item type \"${name}\" from ${result.file.path}.`;\n}\n\nexport function formatSchemaAddStatusHuman(result: SchemaAddStatusResult): string {\n const verb = result.replaced ? \"Updated\" : \"Registered\";\n const roleSuffix =\n result.status.roles && result.status.roles.length > 0 ? ` (roles: ${result.status.roles.join(\", \")})` : \"\";\n const aliasSuffix =\n result.status.aliases && result.status.aliases.length > 0 ? ` (aliases: ${result.status.aliases.join(\", \")})` : \"\";\n return `${verb} status \"${result.status.id}\"${roleSuffix}${aliasSuffix} in ${result.file.path}.`;\n}\n\nexport function formatSchemaRemoveStatusHuman(result: SchemaRemoveStatusResult): string {\n if (!result.removed) {\n return `No custom status matched; nothing removed from ${result.file.path}.`;\n }\n const id = result.status?.id ?? \"(unknown)\";\n return `Removed custom status \"${id}\" from ${result.file.path}.`;\n}\n\nexport function formatSchemaListHuman(result: SchemaListResult): string {\n const lines = [\n `Schema types: ${result.counts.total} total (${result.counts.builtin} builtin, ${result.counts.custom} custom, ${result.counts.extension} extension)`,\n ];\n for (const [label, entries] of [\n [\"builtin\", result.builtin],\n [\"custom\", result.custom],\n [\"extension\", result.extension],\n ] as const) {\n if (entries.length === 0) {\n continue;\n }\n lines.push(`${label}: ${entries.map((entry) => entry.name).join(\", \")}`);\n }\n lines.push(\n `statuses: ${result.statuses.counts.total} total (${result.statuses.counts.builtin} builtin, ${result.statuses.counts.custom} custom)`,\n );\n for (const [label, entries] of [\n [\"builtin statuses\", result.statuses.builtin],\n [\"custom statuses\", result.statuses.custom],\n ] as const) {\n if (entries.length === 0) {\n continue;\n }\n lines.push(`${label}: ${entries.map((entry) => entry.id).join(\", \")}`);\n }\n lines.push(`Inspect one: pm schema show <Type>`);\n lines.push(`Inspect one status: pm schema show-status <status>`);\n return lines.join(\"\\n\");\n}\n\nexport function formatSchemaShowHuman(result: SchemaShowResult): string {\n const parts = [\n `type: ${result.type.name}`,\n `source: ${result.type.source}`,\n `folder: ${result.type.folder}`,\n ];\n if (result.type.default_status) {\n parts.push(`default_status: ${result.type.default_status}`);\n }\n if (result.type.aliases.length > 0) {\n parts.push(`aliases: ${result.type.aliases.join(\", \")}`);\n }\n if (result.type.description) {\n parts.push(`description: ${result.type.description}`);\n }\n if (result.type.options.length > 0) {\n parts.push(`options: ${result.type.options.map((option) => option.key).join(\", \")}`);\n }\n return parts.join(\"\\n\");\n}\n\nexport function formatSchemaShowStatusHuman(result: SchemaShowStatusResult): string {\n const parts = [\n `status: ${result.status.id}`,\n `source: ${result.status.source}`,\n ];\n if (result.status.roles.length > 0) {\n parts.push(`roles: ${result.status.roles.join(\", \")}`);\n }\n if (result.status.aliases.length > 0) {\n parts.push(`aliases: ${result.status.aliases.join(\", \")}`);\n }\n if (result.status.description) {\n parts.push(`description: ${result.status.description}`);\n }\n if (typeof result.status.order === \"number\") {\n parts.push(`order: ${result.status.order}`);\n }\n return parts.join(\"\\n\");\n}\n\n/**\n * Re-export so register-mutation can surface the hint in usage examples\n * without importing the core module directly.\n */\nexport { buildInvalidTypeHint };\n"],"names":["definition"],"mappings":"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","debugId":"43fa077e-1a25-5f5b-ba9c-600eef053de0"}
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../../../../core/schema/status-defs-file.ts", "../../../../../../../../cli/commands/schema.ts"],
4
- "sourcesContent": ["import { RUNTIME_STATUS_ROLE_VALUES } from \"../../types/index.js\";\nimport type { RuntimeStatusDefinition, RuntimeStatusRole } from \"../../types/index.js\";\nimport { DEFAULT_RUNTIME_STATUS_DEFINITIONS } from \"./runtime-schema.js\";\n\nexport type { RuntimeStatusDefinition, RuntimeStatusRole } from \"../../types/index.js\";\n\n/**\n * Pure logic for the `pm schema add-status` / `pm schema remove-status`\n * commands. The CLI command file (schema.ts) owns IO/governance; everything\n * testable and side-effect-free lives here so it can be coverage-gated to 100%.\n *\n * Statuses persist at `.agents/pm/schema/statuses.json` under the shape\n * `{ statuses: RuntimeStatusDefinition[] }`. When the file is absent the runtime\n * merge layer (src/core/store/settings.ts) still supplies the built-in defaults\n * from DEFAULT_RUNTIME_STATUS_DEFINITIONS, so this module never duplicates them\n * into the persisted file.\n */\n\nconst RUNTIME_STATUS_ROLE_SET = new Set<string>(RUNTIME_STATUS_ROLE_VALUES);\n\n/**\n * The 5 lifecycle status ids that ship as built-in defaults and may never be\n * removed (their normalized ids match DEFAULT_RUNTIME_STATUS_DEFINITIONS:\n * open/in_progress/blocked/closed/canceled). `draft` is also a default but the\n * acceptance criteria enumerate the 5 terminal/active ids explicitly, so the\n * guard derives the full set from the canonical defaults to stay in sync.\n */\nexport const BUILTIN_STATUS_IDS: ReadonlySet<string> = new Set(\n DEFAULT_RUNTIME_STATUS_DEFINITIONS.map((definition) => normalizeStatusToken(definition.id)).filter(\n (id) => id.length > 0,\n ),\n);\n\n/**\n * The shape persisted at `.agents/pm/schema/statuses.json`.\n */\nexport interface StatusDefsFile {\n statuses: RuntimeStatusDefinition[];\n}\n\nexport interface RawAddStatusInput {\n id: string | undefined;\n roles?: string[];\n aliases?: string[];\n description?: string;\n order?: number;\n}\n\nexport interface NormalizedAddStatusInput {\n id: string;\n /**\n * Normalized roles, or `undefined` when the raw input did not supply a roles\n * field at all. `undefined` means \"leave existing roles untouched\" on upsert;\n * an explicit empty array means \"clear roles\". This distinction is what keeps\n * `add-status review --description x` from wiping a previously-set role.\n */\n roles?: RuntimeStatusRole[];\n /** Same omitted-vs-explicit-empty semantics as `roles`. */\n aliases?: string[];\n description?: string;\n order?: number;\n}\n\nexport interface UpsertStatusDefResult {\n file: StatusDefsFile;\n /** The definition as stored after the upsert (existing fields preserved). */\n definition: RuntimeStatusDefinition;\n /** True when an existing definition with the same (normalized) id was replaced. */\n replaced: boolean;\n}\n\nexport interface RemoveStatusDefResult {\n file: StatusDefsFile;\n /** True when a matching definition existed and was dropped from the file. */\n removed: boolean;\n /** The removed definition, when one matched the requested id. */\n definition?: RuntimeStatusDefinition;\n}\n\n/**\n * Normalizes a status token using the same rules as runtime-schema.ts: lowercase\n * and collapse any run of whitespace/hyphens into a single underscore.\n */\nexport function normalizeStatusToken(value: unknown): string {\n return typeof value === \"string\" ? value.trim().toLowerCase().replaceAll(/[\\s-]+/g, \"_\") : \"\";\n}\n\nfunction dedupeTokens(values: Iterable<string>): string[] {\n const seen = new Set<string>();\n for (const value of values) {\n const token = normalizeStatusToken(value);\n if (token.length > 0) {\n seen.add(token);\n }\n }\n return [...seen].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Validates and normalizes raw add-status CLI input. Throws a plain Error with a\n * stable message when the id is missing/empty or a role is not one of\n * RUNTIME_STATUS_ROLE_VALUES; the CLI layer maps these to PmCliError exit codes.\n *\n * Omitted vs explicit-empty is preserved end-to-end: when `raw.roles`/`raw.aliases`\n * is `undefined` (flag not supplied) the normalized field is `undefined` so the\n * upsert leaves the existing value untouched; when supplied (even an empty array)\n * the field is normalized to an array so the upsert can apply an explicit clear.\n */\nexport function normalizeAddStatusInput(raw: RawAddStatusInput): NormalizedAddStatusInput {\n const id = normalizeStatusToken(raw.id);\n if (id.length === 0) {\n throw new Error(\"Status id must not be empty.\");\n }\n // Built-in lifecycle statuses are reserved and cannot be overridden: an\n // add-status override would change reserved metadata yet remove-status refuses\n // to delete a built-in id, leaving no CLI path to undo it. Reject up front,\n // symmetric with removeStatusDef.\n if (BUILTIN_STATUS_IDS.has(id)) {\n throw new Error(\n `Cannot add-status the built-in status \"${id}\". Built-in statuses are reserved: ${[...BUILTIN_STATUS_IDS].join(\", \")}.`,\n );\n }\n let roles: RuntimeStatusRole[] | undefined;\n if (raw.roles !== undefined) {\n roles = [];\n const seenRoles = new Set<string>();\n for (const rawRole of raw.roles) {\n const role = typeof rawRole === \"string\" ? rawRole.trim().toLowerCase() : \"\";\n if (role.length === 0) {\n continue;\n }\n if (!RUNTIME_STATUS_ROLE_SET.has(role)) {\n throw new Error(\n `Invalid status role \"${rawRole}\". Allowed roles: ${RUNTIME_STATUS_ROLE_VALUES.join(\", \")}.`,\n );\n }\n if (!seenRoles.has(role)) {\n seenRoles.add(role);\n roles.push(role as RuntimeStatusRole);\n }\n }\n }\n const aliases =\n raw.aliases === undefined ? undefined : dedupeTokens(raw.aliases).filter((alias) => alias !== id);\n const description = raw.description?.trim();\n const order =\n typeof raw.order === \"number\" && Number.isFinite(raw.order) ? Math.trunc(raw.order) : undefined;\n return {\n id,\n roles,\n aliases,\n description: description && description.length > 0 ? description : undefined,\n order,\n };\n}\n\nfunction selectStatusesArray(parsed: unknown): unknown[] | undefined {\n if (Array.isArray(parsed)) {\n return parsed;\n }\n if (typeof parsed !== \"object\" || parsed === null) {\n return undefined;\n }\n const record = parsed as Record<string, unknown>;\n if (Array.isArray(record.statuses)) {\n return record.statuses;\n }\n if (Array.isArray(record.definitions)) {\n return record.definitions;\n }\n return undefined;\n}\n\nfunction extractStatusDefinitions(parsed: unknown): RuntimeStatusDefinition[] {\n const candidate = selectStatusesArray(parsed);\n if (!candidate) {\n return [];\n }\n const definitions: RuntimeStatusDefinition[] = [];\n for (const entry of candidate) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n continue;\n }\n const record = entry as Record<string, unknown>;\n if (typeof record.id !== \"string\" || record.id.trim().length === 0) {\n continue;\n }\n definitions.push(record as unknown as RuntimeStatusDefinition);\n }\n return definitions;\n}\n\n/**\n * Coerces an arbitrary parsed value from statuses.json into a StatusDefsFile.\n * Accepts the canonical `{ statuses: [...] }` shape, a bare array of\n * definitions, or a `{ definitions: [...] }` form, and tolerates a\n * missing/invalid file by returning an empty statuses list.\n */\nexport function parseStatusDefsFile(raw: string | null | undefined): StatusDefsFile {\n if (raw === null || raw === undefined || raw.trim().length === 0) {\n return { statuses: [] };\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n throw new Error(\"schema/statuses.json contains invalid JSON.\");\n }\n return { statuses: extractStatusDefinitions(parsed) };\n}\n\n/**\n * Serializes the status definitions file with a trailing newline (matches the\n * rest of the schema scaffold files written by pm).\n */\nexport function serializeStatusDefsFile(file: StatusDefsFile): string {\n return `${JSON.stringify({ statuses: file.statuses }, null, 2)}\\n`;\n}\n\n/**\n * Idempotent UPSERT of a status definition into the parsed file. Matching is by\n * normalized id. When a definition already exists, fields supplied in `input`\n * override the previous values (roles/aliases replace when a non-empty array is\n * given, clear when an explicit empty array is given, and are left UNTOUCHED\n * when the field is `undefined` — i.e. the add-status flag was omitted);\n * description/order override when provided. Fields not addressed by add-status\n * flags are preserved untouched, so `add-status <id> --description x` keeps any\n * previously-set roles/aliases.\n */\nexport function upsertStatusDef(\n file: StatusDefsFile,\n input: NormalizedAddStatusInput,\n baseDefinition?: RuntimeStatusDefinition,\n): UpsertStatusDefResult {\n const statuses = file.statuses.slice();\n const existingIndex = statuses.findIndex(\n (definition) => normalizeStatusToken(definition.id) === input.id,\n );\n // A file-backed definition is the primary seed; when the status is not yet in\n // statuses.json fall back to `baseDefinition` (the resolved settings-backed\n // definition) so omitting --role/--alias preserves metadata that lives in\n // settings.schema.statuses rather than the file.\n const existing = existingIndex >= 0 ? statuses[existingIndex] : baseDefinition;\n\n const next: RuntimeStatusDefinition = {\n ...(existing ?? {}),\n id: input.id,\n };\n if (input.roles !== undefined) {\n if (input.roles.length > 0) {\n next.roles = [...input.roles];\n } else if (next.roles !== undefined) {\n delete next.roles;\n }\n }\n if (input.aliases !== undefined) {\n if (input.aliases.length > 0) {\n next.aliases = [...input.aliases];\n } else if (next.aliases !== undefined) {\n delete next.aliases;\n }\n }\n if (input.description !== undefined) {\n next.description = input.description;\n }\n if (input.order !== undefined) {\n next.order = input.order;\n }\n\n if (existingIndex >= 0) {\n statuses[existingIndex] = next;\n } else {\n statuses.push(next);\n }\n\n return {\n file: { statuses },\n definition: next,\n // \"replaced\" reflects whether the status already existed effectively (in the\n // file OR in resolved settings), so the CLI reports \"Updated\" vs \"Registered\"\n // correctly even when the prior definition lived only in settings.\n replaced: existing !== undefined,\n };\n}\n\n/**\n * Removes a status definition from the parsed file by id (normalized). Throws a\n * plain Error when `id` is empty or matches a reserved built-in default status\n * (those are never stored in the file and must never be deletable). Returns\n * `removed: false` when no matching definition exists so the CLI layer can treat\n * the call as an idempotent no-op.\n */\nexport function removeStatusDef(file: StatusDefsFile, id: string | undefined): RemoveStatusDefResult {\n const normalizedId = normalizeStatusToken(id);\n if (normalizedId.length === 0) {\n throw new Error(\"Status id must not be empty.\");\n }\n if (BUILTIN_STATUS_IDS.has(normalizedId)) {\n throw new Error(\n `Cannot remove built-in status \"${normalizedId}\". Built-in statuses are reserved: ${[...BUILTIN_STATUS_IDS].join(\", \")}.`,\n );\n }\n const statuses = file.statuses.slice();\n const existingIndex = statuses.findIndex(\n (definition) => normalizeStatusToken(definition.id) === normalizedId,\n );\n if (existingIndex < 0) {\n return { file: { statuses }, removed: false };\n }\n const [definition] = statuses.splice(existingIndex, 1);\n return { file: { statuses }, removed: true, definition };\n}\n\n/**\n * Throws when the new status id or any explicitly-supplied alias collides with a\n * DIFFERENT existing status's id/alias. `resolvedAliasToId` maps a normalized\n * token to its owning status id (the runtime status registry's alias_to_id map,\n * which stores ids and aliases in one namespace). Re-adding the same status\n * (matching id) is allowed — only cross-status collisions throw. This prevents a\n * custom status from shadowing a built-in lifecycle token (for example\n * `add-status review --alias open`, or a custom id `cancelled` that aliases the\n * built-in `canceled`), which would make `pm update --status open` resolve to the\n * wrong status. The CLI layer maps the thrown Error to a USAGE exit code.\n */\nexport function assertStatusTokensAvailable(\n input: { id: string; aliases?: string[] },\n resolvedAliasToId: ReadonlyMap<string, string>,\n): void {\n const candidates = [input.id, ...(input.aliases ?? [])];\n for (const candidate of candidates) {\n const token = normalizeStatusToken(candidate);\n if (token.length === 0) {\n continue;\n }\n const owner = resolvedAliasToId.get(token);\n if (owner !== undefined && owner !== input.id) {\n throw new Error(\n `Status token \"${token}\" already belongs to status \"${owner}\". Choose a different id/alias to avoid shadowing it.`,\n );\n }\n }\n}\n", "import { pathExists, readFileIfExists, writeFileAtomic } from \"../../core/fs/fs-utils.js\";\nimport { acquireLock } from \"../../core/lock/lock.js\";\nimport {\n assertAliasesAvailable,\n buildInvalidTypeHint,\n escapeForDoubleQuotes,\n normalizeAddTypeInput,\n parseItemTypesFile,\n removeItemType,\n serializeItemTypesFile,\n upsertItemType,\n type ItemTypeDefinition,\n} from \"../../core/schema/item-types-file.js\";\nimport {\n assertStatusTokensAvailable,\n BUILTIN_STATUS_IDS,\n normalizeAddStatusInput,\n normalizeStatusToken,\n parseStatusDefsFile,\n removeStatusDef,\n serializeStatusDefsFile,\n upsertStatusDef,\n type RuntimeStatusDefinition,\n} from \"../../core/schema/status-defs-file.js\";\nimport {\n DEFAULT_RUNTIME_SCHEMA_FILE_PATHS,\n filePathForSchemaSection,\n normalizeRuntimeSchemaSettings,\n resolveRuntimeStatusRegistry,\n} from \"../../core/schema/runtime-schema.js\";\nimport { resolveItemTypeRegistry, type ResolvedItemTypeDefinition } from \"../../core/item/type-registry.js\";\nimport { listAllFrontMatterLight } from \"../../core/store/item-store.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport type { PmSettings } from \"../../types/index.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { getActiveExtensionRegistrations, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, resolveGovernanceKnobs } from \"../../core/store/settings.js\";\n\nexport const SCHEMA_SUBCOMMANDS = [\n \"add-type\",\n \"remove-type\",\n \"add-status\",\n \"remove-status\",\n \"list\",\n \"show\",\n \"show-status\",\n] as const;\nexport type SchemaSubcommand = (typeof SCHEMA_SUBCOMMANDS)[number];\n\nconst SCHEMA_TYPES_LOCK_ID = \"schema-types\";\nconst SCHEMA_STATUSES_LOCK_ID = \"schema-statuses\";\n\nexport interface SchemaAddTypeCommandOptions {\n description?: string;\n defaultStatus?: string;\n folder?: string;\n alias?: string[];\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaRemoveTypeCommandOptions {\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaAddStatusCommandOptions {\n role?: string[];\n alias?: string[];\n description?: string;\n order?: number;\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaRemoveStatusCommandOptions {\n author?: string;\n force?: boolean;\n}\n\nexport interface SchemaAddTypeResult {\n action: \"add-type\";\n registered: boolean;\n replaced: boolean;\n type: ItemTypeDefinition;\n file: {\n path: string;\n definitions: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaRemoveTypeResult {\n action: \"remove-type\";\n removed: boolean;\n type?: ItemTypeDefinition;\n file: {\n path: string;\n definitions: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaAddStatusResult {\n action: \"add-status\";\n registered: boolean;\n replaced: boolean;\n status: RuntimeStatusDefinition;\n file: {\n path: string;\n statuses: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaRemoveStatusResult {\n action: \"remove-status\";\n removed: boolean;\n status?: RuntimeStatusDefinition;\n file: {\n path: string;\n statuses: number;\n };\n warnings: string[];\n generated_at: string;\n}\n\nexport interface SchemaTypeSummary {\n name: string;\n folder: string;\n aliases: string[];\n default_status?: string;\n description?: string;\n}\n\nexport interface SchemaStatusSummary {\n id: string;\n source: \"builtin\" | \"custom\";\n roles: string[];\n aliases: string[];\n description?: string;\n order?: number;\n}\n\nexport interface SchemaTypeDefinitionResult extends SchemaTypeSummary {\n source: \"builtin\" | \"custom\" | \"extension\";\n extension?: {\n layer: string;\n name: string;\n };\n required_create_fields: string[];\n required_create_repeatables: string[];\n options: ResolvedItemTypeDefinition[\"options\"];\n command_option_policies: ResolvedItemTypeDefinition[\"command_option_policies\"];\n}\n\nexport interface SchemaListResult {\n action: \"list\";\n builtin: SchemaTypeSummary[];\n custom: SchemaTypeSummary[];\n extension: SchemaTypeSummary[];\n counts: {\n builtin: number;\n custom: number;\n extension: number;\n total: number;\n };\n statuses: {\n builtin: SchemaStatusSummary[];\n custom: SchemaStatusSummary[];\n counts: {\n builtin: number;\n custom: number;\n total: number;\n };\n };\n file: {\n path: string;\n };\n generated_at: string;\n}\n\nexport interface SchemaShowResult {\n action: \"show\";\n type: SchemaTypeDefinitionResult;\n file: {\n path: string;\n };\n generated_at: string;\n}\n\nexport interface SchemaShowStatusResult {\n action: \"show-status\";\n status: SchemaStatusSummary;\n file: {\n path: string;\n };\n generated_at: string;\n}\n\nexport type SchemaInspectResult = SchemaListResult | SchemaShowResult | SchemaShowStatusResult;\n\nfunction toAuthor(candidate: string | undefined, defaultAuthor: string): string {\n const resolved = candidate ?? process.env.PM_AUTHOR ?? defaultAuthor;\n const trimmed = resolved.trim();\n return trimmed.length > 0 ? trimmed : \"unknown\";\n}\n\nexport async function runSchemaAddType(\n name: string | undefined,\n options: SchemaAddTypeCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaAddTypeResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n let normalized;\n try {\n normalized = normalizeAddTypeInput({\n name,\n description: options.description,\n defaultStatus: options.defaultStatus,\n folder: options.folder,\n aliases: options.alias,\n });\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_TYPES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let upsert;\n try {\n const previousRaw = await readFileIfExists(typesPath);\n let parsed;\n try {\n parsed = parseItemTypesFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n try {\n assertAliasesAvailable(normalized, parsed);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n upsert = upsertItemType(parsed, normalized);\n // writeFileAtomic writes to a temp file then renames, so a failure leaves the\n // existing types.json untouched; no manual rollback is needed.\n await writeFileAtomic(typesPath, serializeItemTypesFile(upsert.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: typesPath,\n scope: \"project\",\n op: \"schema:add-type\",\n })),\n );\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"add-type\",\n registered: true,\n replaced: upsert.replaced,\n type: upsert.definition,\n file: {\n path: typesPath,\n definitions: upsert.file.definitions.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nasync function ensureInitialized(pmRoot: string): Promise<void> {\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n}\n\n/**\n * Counts items whose resolved type matches `typeName` (case-insensitive). Uses\n * the lightest existing read path (listAllFrontMatterLight skips the heavy\n * collections cache). All items are counted — not just open ones — so the\n * advisory warning surfaces every item the removed definition would orphan;\n * the count is non-blocking. The caller passes its already-loaded `settings`\n * so we never re-read settings.json from disk here.\n */\nasync function countItemsUsingType(\n pmRoot: string,\n settings: PmSettings,\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>,\n typeName: string,\n): Promise<number> {\n const registry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const lowerName = typeName.trim().toLowerCase();\n const items = await listAllFrontMatterLight(pmRoot, settings.item_format, registry.type_to_folder, [], schema);\n return items.filter((item) => typeof item.type === \"string\" && item.type.toLowerCase() === lowerName).length;\n}\n\n/**\n * Counts items currently set to the status whose id/aliases resolve to\n * `statusId`. Uses listAllFrontMatterLight (the lightest read path). All items\n * are counted regardless of lifecycle phase; the count is advisory only. The\n * caller passes its already-loaded `settings` so we never re-read from disk.\n */\nasync function countItemsUsingStatus(\n pmRoot: string,\n settings: PmSettings,\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>,\n statusId: string,\n): Promise<number> {\n const registry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const statusRegistry = resolveRuntimeStatusRegistry(schema);\n const normalizedId = normalizeStatusToken(statusId);\n const items = await listAllFrontMatterLight(pmRoot, settings.item_format, registry.type_to_folder, [], schema);\n return items.filter((item) => {\n const itemStatus = typeof item.status === \"string\" ? item.status : \"\";\n const resolved = statusRegistry.alias_to_id.get(normalizeStatusToken(itemStatus)) ?? normalizeStatusToken(itemStatus);\n return resolved === normalizedId;\n }).length;\n}\n\n/**\n * Returns the workflow role-slot names (open_status, close_status, ...) that\n * currently point at `statusId` (normalized). Used to warn before removing a\n * status that a workflow default still references.\n */\nfunction workflowSlotsReferencing(\n workflow: {\n draft_status?: string;\n open_status?: string;\n in_progress_status?: string;\n blocked_status?: string;\n close_status?: string;\n canceled_status?: string;\n },\n statusId: string,\n): string[] {\n const slots: Array<[string, string | undefined]> = [\n [\"draft_status\", workflow.draft_status],\n [\"open_status\", workflow.open_status],\n [\"in_progress_status\", workflow.in_progress_status],\n [\"blocked_status\", workflow.blocked_status],\n [\"close_status\", workflow.close_status],\n [\"canceled_status\", workflow.canceled_status],\n ];\n return slots\n .filter(([, value]) => value !== undefined && normalizeStatusToken(value) === statusId)\n .map(([slot]) => slot);\n}\n\nexport async function runSchemaRemoveType(\n name: string | undefined,\n options: SchemaRemoveTypeCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaRemoveTypeResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_TYPES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let removal;\n try {\n const previousRaw = await readFileIfExists(typesPath);\n let parsed;\n try {\n parsed = parseItemTypesFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n try {\n removal = removeItemType(parsed, name);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n if (removal.removed) {\n // Only emit the advisory orphan-count warning once a removable custom\n // definition was actually removed; a no-op/unknown removal would otherwise\n // surface a misleading items_using_type:* warning. The count is\n // non-blocking and reuses the already-loaded settings (no disk re-read).\n const removedName = (removal.definition?.name ?? name ?? \"\").trim();\n if (removedName.length > 0) {\n const usingType = await countItemsUsingType(pmRoot, settings, schema, removedName);\n if (usingType > 0) {\n warnings.push(`items_using_type:${usingType}`);\n }\n }\n // writeFileAtomic writes to a temp file then renames, so a failure leaves\n // the existing types.json untouched; no manual rollback is needed.\n await writeFileAtomic(typesPath, serializeItemTypesFile(removal.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: typesPath,\n scope: \"project\",\n op: \"schema:remove-type\",\n })),\n );\n }\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"remove-type\",\n removed: removal.removed,\n ...(removal.definition ? { type: removal.definition } : {}),\n file: {\n path: typesPath,\n definitions: removal.file.definitions.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nfunction statusesPathFor(pmRoot: string, schema: ReturnType<typeof normalizeRuntimeSchemaSettings>): string {\n return filePathForSchemaSection(pmRoot, schema.files.statuses, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.statuses);\n}\n\nexport async function runSchemaAddStatus(\n id: string | undefined,\n options: SchemaAddStatusCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaAddStatusResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n\n let normalized;\n try {\n normalized = normalizeAddStatusInput({\n id,\n roles: options.role,\n aliases: options.alias,\n description: options.description,\n order: options.order,\n });\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const statusesPath = statusesPathFor(pmRoot, schema);\n const statusRegistry = resolveRuntimeStatusRegistry(schema);\n\n // Reject id/alias collisions with a DIFFERENT existing status so a custom\n // status can never shadow a built-in lifecycle token (e.g. --alias open).\n try {\n assertStatusTokensAvailable(normalized, statusRegistry.alias_to_id);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n\n // Seed the upsert from the resolved (settings-or-file) definition so omitting\n // --role/--alias preserves metadata defined in settings.schema.statuses, not\n // only what is already in statuses.json.\n const resolvedExisting = statusRegistry.by_id.get(normalized.id);\n const baseDefinition: RuntimeStatusDefinition | undefined = resolvedExisting\n ? {\n id: resolvedExisting.id,\n ...(Array.isArray(resolvedExisting.roles) && resolvedExisting.roles.length > 0\n ? { roles: [...resolvedExisting.roles] }\n : {}),\n ...(Array.isArray(resolvedExisting.aliases) && resolvedExisting.aliases.length > 0\n ? { aliases: [...resolvedExisting.aliases] }\n : {}),\n ...(resolvedExisting.description ? { description: resolvedExisting.description } : {}),\n ...(typeof resolvedExisting.order === \"number\" ? { order: resolvedExisting.order } : {}),\n }\n : undefined;\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_STATUSES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let upsert;\n try {\n const previousRaw = await readFileIfExists(statusesPath);\n let parsed;\n try {\n parsed = parseStatusDefsFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n // Re-check collisions against the CURRENT file under the lock: the pre-lock\n // check used the registry loaded before acquiring schema-statuses, so a\n // concurrent add-status could have written a colliding id/alias in between.\n // The lock serializes writes; this serializes the collision decision too.\n const fileAliasToId = new Map<string, string>();\n for (const definition of parsed.statuses) {\n const defId = normalizeStatusToken(definition.id);\n if (defId.length === 0) {\n continue;\n }\n fileAliasToId.set(defId, defId);\n for (const alias of Array.isArray(definition.aliases) ? definition.aliases : []) {\n const aliasToken = normalizeStatusToken(alias);\n if (aliasToken.length > 0 && !fileAliasToId.has(aliasToken)) {\n fileAliasToId.set(aliasToken, defId);\n }\n }\n }\n try {\n assertStatusTokensAvailable(normalized, fileAliasToId);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n upsert = upsertStatusDef(parsed, normalized, baseDefinition);\n // writeFileAtomic writes to a temp file then renames, so a failure leaves\n // the existing statuses.json untouched; no manual rollback is needed.\n await writeFileAtomic(statusesPath, serializeStatusDefsFile(upsert.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: statusesPath,\n scope: \"project\",\n op: \"schema:add-status\",\n })),\n );\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"add-status\",\n registered: true,\n replaced: upsert.replaced,\n status: upsert.definition,\n file: {\n path: statusesPath,\n statuses: upsert.file.statuses.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nexport async function runSchemaRemoveStatus(\n id: string | undefined,\n options: SchemaRemoveStatusCommandOptions,\n global: GlobalOptions,\n): Promise<SchemaRemoveStatusResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n await ensureInitialized(pmRoot);\n\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const statusesPath = statusesPathFor(pmRoot, schema);\n\n const warnings: string[] = [];\n const author = toAuthor(options.author, settings.author_default);\n const governance = resolveGovernanceKnobs(settings);\n\n const releaseLock = await acquireLock(\n pmRoot,\n SCHEMA_STATUSES_LOCK_ID,\n settings.locks.ttl_seconds,\n author,\n Boolean(options.force),\n governance.force_required_for_stale_lock,\n );\n let removal;\n try {\n const previousRaw = await readFileIfExists(statusesPath);\n let parsed;\n try {\n parsed = parseStatusDefsFile(previousRaw);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.GENERIC_FAILURE);\n }\n try {\n removal = removeStatusDef(parsed, id);\n } catch (error) {\n throw new PmCliError(error instanceof Error ? error.message : String(error), EXIT_CODE.USAGE);\n }\n if (removal.removed) {\n // Only emit the advisory orphan-count warning once a removable custom\n // status was actually removed; a no-op/unknown removal would otherwise\n // surface a misleading items_using_status:* warning. The count reuses the\n // already-loaded settings (no disk re-read) and is non-blocking.\n const removedId = normalizeStatusToken(removal.definition?.id ?? id);\n if (removedId.length > 0 && !BUILTIN_STATUS_IDS.has(removedId)) {\n const usingStatus = await countItemsUsingStatus(pmRoot, settings, schema, removedId);\n if (usingStatus > 0) {\n warnings.push(`items_using_status:${usingStatus}`);\n }\n // Removing a status that a workflow default still points at would leave\n // pm close / default pm create resolving to an unregistered status. Warn\n // (non-blocking, consistent with remove-type) so the operator re-points\n // the workflow slot via schema/workflows.json or pm config.\n const referencingSlots = workflowSlotsReferencing(schema.workflow, removedId);\n if (referencingSlots.length > 0) {\n warnings.push(`status_referenced_by_workflow:${referencingSlots.join(\",\")}`);\n }\n }\n await writeFileAtomic(statusesPath, serializeStatusDefsFile(removal.file));\n warnings.push(\n ...(await runActiveOnWriteHooks({\n path: statusesPath,\n scope: \"project\",\n op: \"schema:remove-status\",\n })),\n );\n }\n } finally {\n await releaseLock();\n }\n\n return {\n action: \"remove-status\",\n removed: removal.removed,\n ...(removal.definition ? { status: removal.definition } : {}),\n file: {\n path: statusesPath,\n statuses: removal.file.statuses.length,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nfunction toSchemaTypeSummary(definition: ResolvedItemTypeDefinition): SchemaTypeSummary {\n return {\n name: definition.name,\n folder: definition.folder,\n aliases: Array.isArray(definition.aliases) ? [...definition.aliases] : [],\n ...(definition.default_status ? { default_status: definition.default_status } : {}),\n ...(definition.description ? { description: definition.description } : {}),\n };\n}\n\nfunction toSchemaTypeDefinition(\n definition: ResolvedItemTypeDefinition,\n source: SchemaTypeDefinitionResult[\"source\"],\n extensionProvenance?: SchemaTypeDefinitionResult[\"extension\"],\n): SchemaTypeDefinitionResult {\n return {\n ...toSchemaTypeSummary(definition),\n source,\n ...(extensionProvenance ? { extension: extensionProvenance } : {}),\n required_create_fields: [...definition.required_create_fields],\n required_create_repeatables: [...definition.required_create_repeatables],\n options: structuredClone(definition.options),\n command_option_policies: structuredClone(definition.command_option_policies),\n };\n}\n\nfunction toSchemaStatusSummary(definition: RuntimeStatusDefinition): SchemaStatusSummary {\n return {\n id: definition.id,\n source: BUILTIN_STATUS_IDS.has(definition.id) ? \"builtin\" : \"custom\",\n roles: Array.isArray(definition.roles) ? [...definition.roles] : [],\n aliases: Array.isArray(definition.aliases) ? [...definition.aliases] : [],\n ...(definition.description ? { description: definition.description } : {}),\n ...(typeof definition.order === \"number\" ? { order: definition.order } : {}),\n };\n}\n\nfunction classifyTypeSource(\n name: string,\n customNames: Set<string>,\n extensionNames: Set<string>,\n): SchemaTypeDefinitionResult[\"source\"] {\n const lowerName = name.toLowerCase();\n if (extensionNames.has(lowerName)) {\n return \"extension\";\n }\n if (customNames.has(lowerName)) {\n return \"custom\";\n }\n return \"builtin\";\n}\n\nfunction collectExtensionTypeProvenance(): Map<string, SchemaTypeDefinitionResult[\"extension\"]> {\n const provenance = new Map<string, SchemaTypeDefinitionResult[\"extension\"]>();\n const registrations = getActiveExtensionRegistrations();\n for (const registration of registrations?.item_types ?? []) {\n const rawTypes = (registration as { types?: unknown[] }).types;\n if (!Array.isArray(rawTypes)) {\n continue;\n }\n for (const rawType of rawTypes) {\n if (typeof rawType !== \"object\" || rawType === null || Array.isArray(rawType)) {\n continue;\n }\n const name = (rawType as { name?: unknown }).name;\n if (typeof name === \"string\" && name.trim().length > 0) {\n provenance.set(name.trim().toLowerCase(), {\n layer: registration.layer,\n name: registration.name,\n });\n }\n }\n }\n return provenance;\n}\n\nfunction buildSchemaStatusSummaries(\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>,\n): { builtin: SchemaStatusSummary[]; custom: SchemaStatusSummary[] } {\n const registry = resolveRuntimeStatusRegistry(schema);\n const builtin: SchemaStatusSummary[] = [];\n const custom: SchemaStatusSummary[] = [];\n for (const definition of registry.definitions) {\n const summary = toSchemaStatusSummary(definition);\n if (summary.source === \"builtin\") {\n builtin.push(summary);\n } else {\n custom.push(summary);\n }\n }\n return { builtin, custom };\n}\n\nasync function loadSchemaInspectionContext(global: GlobalOptions): Promise<{\n typesPath: string;\n statusesPath: string;\n byType: Record<string, ResolvedItemTypeDefinition>;\n customNames: Set<string>;\n extensionProvenance: Map<string, SchemaTypeDefinitionResult[\"extension\"]>;\n schema: ReturnType<typeof normalizeRuntimeSchemaSettings>;\n}> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n const settings = await readSettings(pmRoot);\n const schema = normalizeRuntimeSchemaSettings(settings.schema);\n const typesPath = filePathForSchemaSection(pmRoot, schema.files.types, DEFAULT_RUNTIME_SCHEMA_FILE_PATHS.types);\n const statusesPath = statusesPathFor(pmRoot, schema);\n const registry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const extensionProvenance = collectExtensionTypeProvenance();\n const customNames = new Set(\n (settings.item_types?.definitions ?? [])\n .map((definition) => definition.name.trim().toLowerCase())\n .filter((name) => name.length > 0 && !extensionProvenance.has(name)),\n );\n return {\n typesPath,\n statusesPath,\n byType: registry.by_type,\n customNames,\n extensionProvenance,\n schema,\n };\n}\n\nexport async function runSchemaList(global: GlobalOptions): Promise<SchemaListResult> {\n const context = await loadSchemaInspectionContext(global);\n const builtin: SchemaTypeSummary[] = [];\n const custom: SchemaTypeSummary[] = [];\n const extension: SchemaTypeSummary[] = [];\n for (const definition of Object.values(context.byType).sort((left, right) => left.name.localeCompare(right.name))) {\n const source = classifyTypeSource(definition.name, context.customNames, new Set(context.extensionProvenance.keys()));\n const summary = toSchemaTypeSummary(definition);\n if (source === \"extension\") {\n extension.push(summary);\n } else if (source === \"custom\") {\n custom.push(summary);\n } else {\n builtin.push(summary);\n }\n }\n const statusSummaries = buildSchemaStatusSummaries(context.schema);\n return {\n action: \"list\",\n builtin,\n custom,\n extension,\n counts: {\n builtin: builtin.length,\n custom: custom.length,\n extension: extension.length,\n total: builtin.length + custom.length + extension.length,\n },\n statuses: {\n builtin: statusSummaries.builtin,\n custom: statusSummaries.custom,\n counts: {\n builtin: statusSummaries.builtin.length,\n custom: statusSummaries.custom.length,\n total: statusSummaries.builtin.length + statusSummaries.custom.length,\n },\n },\n file: {\n path: context.typesPath,\n },\n generated_at: nowIso(),\n };\n}\n\nexport async function runSchemaShow(name: string | undefined, global: GlobalOptions): Promise<SchemaShowResult> {\n const typeName = (name ?? \"\").trim();\n if (typeName.length === 0) {\n throw new PmCliError(\"Type name must not be empty.\", EXIT_CODE.USAGE);\n }\n const context = await loadSchemaInspectionContext(global);\n const match = Object.values(context.byType).find(\n (definition) =>\n definition.name.toLowerCase() === typeName.toLowerCase() ||\n definition.aliases.some((alias) => alias.toLowerCase() === typeName.toLowerCase()),\n );\n if (!match) {\n throw new PmCliError(\n `Unknown item type \"${typeName}\". Run pm schema list to inspect registered types, or pm schema add-type \"${escapeForDoubleQuotes(typeName)}\" to register it.`,\n EXIT_CODE.NOT_FOUND,\n { code: \"unknown_item_type\" },\n );\n }\n return {\n action: \"show\",\n type: toSchemaTypeDefinition(\n match,\n classifyTypeSource(match.name, context.customNames, new Set(context.extensionProvenance.keys())),\n context.extensionProvenance.get(match.name.toLowerCase()),\n ),\n file: {\n path: context.typesPath,\n },\n generated_at: nowIso(),\n };\n}\n\nexport async function runSchemaShowStatus(\n id: string | undefined,\n global: GlobalOptions,\n): Promise<SchemaShowStatusResult> {\n const statusToken = normalizeStatusToken(id);\n if (statusToken.length === 0) {\n throw new PmCliError(\"Status id must not be empty.\", EXIT_CODE.USAGE);\n }\n const context = await loadSchemaInspectionContext(global);\n const statusRegistry = resolveRuntimeStatusRegistry(context.schema);\n const resolvedId = statusRegistry.alias_to_id.get(statusToken) ?? statusToken;\n const match = statusRegistry.by_id.get(resolvedId);\n if (!match) {\n throw new PmCliError(\n `Unknown status \"${id}\". Run pm schema list to inspect registered statuses, or pm schema add-status \"${escapeForDoubleQuotes(\n id ?? \"\",\n )}\" to register it.`,\n EXIT_CODE.NOT_FOUND,\n { code: \"unknown_status\" },\n );\n }\n return {\n action: \"show-status\",\n status: toSchemaStatusSummary(match),\n file: {\n path: context.statusesPath,\n },\n generated_at: nowIso(),\n };\n}\n\nexport function formatSchemaAddTypeHuman(result: SchemaAddTypeResult): string {\n const verb = result.replaced ? \"Updated\" : \"Registered\";\n const aliasSuffix =\n result.type.aliases && result.type.aliases.length > 0 ? ` (aliases: ${result.type.aliases.join(\", \")})` : \"\";\n return `${verb} custom item type \"${result.type.name}\"${aliasSuffix} in ${result.file.path}. Run: pm create \"${escapeForDoubleQuotes(result.type.name)}\" \"<title>\"`;\n}\n\nexport function formatSchemaRemoveTypeHuman(result: SchemaRemoveTypeResult): string {\n if (!result.removed) {\n return `No custom item type matched; nothing removed from ${result.file.path}.`;\n }\n const name = result.type?.name ?? \"(unknown)\";\n return `Removed custom item type \"${name}\" from ${result.file.path}.`;\n}\n\nexport function formatSchemaAddStatusHuman(result: SchemaAddStatusResult): string {\n const verb = result.replaced ? \"Updated\" : \"Registered\";\n const roleSuffix =\n result.status.roles && result.status.roles.length > 0 ? ` (roles: ${result.status.roles.join(\", \")})` : \"\";\n const aliasSuffix =\n result.status.aliases && result.status.aliases.length > 0 ? ` (aliases: ${result.status.aliases.join(\", \")})` : \"\";\n return `${verb} status \"${result.status.id}\"${roleSuffix}${aliasSuffix} in ${result.file.path}.`;\n}\n\nexport function formatSchemaRemoveStatusHuman(result: SchemaRemoveStatusResult): string {\n if (!result.removed) {\n return `No custom status matched; nothing removed from ${result.file.path}.`;\n }\n const id = result.status?.id ?? \"(unknown)\";\n return `Removed custom status \"${id}\" from ${result.file.path}.`;\n}\n\nexport function formatSchemaListHuman(result: SchemaListResult): string {\n const lines = [\n `Schema types: ${result.counts.total} total (${result.counts.builtin} builtin, ${result.counts.custom} custom, ${result.counts.extension} extension)`,\n ];\n for (const [label, entries] of [\n [\"builtin\", result.builtin],\n [\"custom\", result.custom],\n [\"extension\", result.extension],\n ] as const) {\n if (entries.length === 0) {\n continue;\n }\n lines.push(`${label}: ${entries.map((entry) => entry.name).join(\", \")}`);\n }\n lines.push(\n `statuses: ${result.statuses.counts.total} total (${result.statuses.counts.builtin} builtin, ${result.statuses.counts.custom} custom)`,\n );\n for (const [label, entries] of [\n [\"builtin statuses\", result.statuses.builtin],\n [\"custom statuses\", result.statuses.custom],\n ] as const) {\n if (entries.length === 0) {\n continue;\n }\n lines.push(`${label}: ${entries.map((entry) => entry.id).join(\", \")}`);\n }\n lines.push(`Inspect one: pm schema show <Type>`);\n lines.push(`Inspect one status: pm schema show-status <status>`);\n return lines.join(\"\\n\");\n}\n\nexport function formatSchemaShowHuman(result: SchemaShowResult): string {\n const parts = [\n `type: ${result.type.name}`,\n `source: ${result.type.source}`,\n `folder: ${result.type.folder}`,\n ];\n if (result.type.default_status) {\n parts.push(`default_status: ${result.type.default_status}`);\n }\n if (result.type.aliases.length > 0) {\n parts.push(`aliases: ${result.type.aliases.join(\", \")}`);\n }\n if (result.type.description) {\n parts.push(`description: ${result.type.description}`);\n }\n if (result.type.options.length > 0) {\n parts.push(`options: ${result.type.options.map((option) => option.key).join(\", \")}`);\n }\n return parts.join(\"\\n\");\n}\n\nexport function formatSchemaShowStatusHuman(result: SchemaShowStatusResult): string {\n const parts = [\n `status: ${result.status.id}`,\n `source: ${result.status.source}`,\n ];\n if (result.status.roles.length > 0) {\n parts.push(`roles: ${result.status.roles.join(\", \")}`);\n }\n if (result.status.aliases.length > 0) {\n parts.push(`aliases: ${result.status.aliases.join(\", \")}`);\n }\n if (result.status.description) {\n parts.push(`description: ${result.status.description}`);\n }\n if (typeof result.status.order === \"number\") {\n parts.push(`order: ${result.status.order}`);\n }\n return parts.join(\"\\n\");\n}\n\n/**\n * Re-export so register-mutation can surface the hint in usage examples\n * without importing the core module directly.\n */\nexport { buildInvalidTypeHint };\n"],
5
- "mappings": "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",
6
- "names": ["definition", "global"]
7
- }